Chào các bạn, tiếp tục với các room trong TryHackMe list room from beginer, hôm nay chúng ta cùng đến với bài thực hành Vulnversity nhé!
Trong bài này mình chỉ tập trung nói về Task 4 và 5 với những phần còn lại mình tin là các bạn hoàn toàn có thể tự tìm hiểu được.
Task 4: Compromise the webserver
Sau khi làm xong những task trước thì chúng ta thấy là server cho phép chúng ra upload file có phần mở rộng là .phtml và trong cái file đó chúng ta hoàn toàn có thể truyền code php vào để reverse shell. Tức là buộc server tạo một kết nối tới máy mình và cho phép mình thực hiện những lệnh hệ thống(shell).
Như tác giả đã cung cấp, chúng ta có thể lấy đoạn mã php đó tại đây. Copy đoạn mã vào và lưu dưới dạng .phtml để chúng ta có thể upload lên server.
Lưu ý là chúng ta phải sửa ip và port trong đoạn code thành ip và port của mình.
Ngoài ra nếu bạn sử dụng Kali thì có thể tìm các file reverse shell của nhiều ngôn ngữ khác nhau tại /usr/share/webshells
.
Sau khi up load file thành công thì ta chạy lệnh:
nc -lvnp port_number
Rồi sau đó truy cập đến cái file mà chúng ta đã upload lên server để tạo reverse shell. Cái link để vào cũng được tác giả cung cấp như sau:
http://ip:3333/internal/uploads/file_name.phtml
Cuối cùng là vào khai thác để trả lời các câu hỏi của tác giả thôi…
Task 5: Privilege Escalation
Ở phần này, nhiệm vụ của chúng ra là leo được lên thành root user nhờ vào systemctl
và SUID. Để có thể làm được, trước tiên ta cần hiểu SUID là gì đã.
Hiểu đơn giản thì SUID là một loại quyền đặc biệt. Quyền này cho phép file được thực thi(executes) dưới quyền của chủ sở hữu nó cho dù người chạy file đó là bất kì ai. Khi một file được gắn quyền SUID thì bit x
được thay thế thành bit s
.
Tiếp theo là ta cần nắm được cách tìm kiếm những file được gắn quyền SUID để có thể tiếp tục khai thác.
find / -perm /4000 -user root -type f 2> /dev/null
Có thể hiểu lệnh này như sau:
/
: vị trí tìm kiếm file SUID-perm /4000
: phân loại quyền. Ở đây /4000 là SUID, ngoài ra nếu SGID thì là /2000 và cả SUID,SGID thì dùng /6000 nhé-user root
: là tìm kiếm theo username của người sở hữu file đó.-type f
: chỉ định loại file tìm kiếm2> /dev/null
: Khi tìm kiếm bằng user bình thường thì có những thư mục mình ko thể truy cập vào được, nên nó sẽ hiện lỗi ra làm rối hết cả mắt. Vì vậy ta dùng lệnh này để ghi những cái lỗi đó vào /dev/null. Số 2 ở đây là nói đến những dòng lỗi, ngược lại nếu muốn ghi những dòng không lỗi vào đâu đó thì thay số 2 bằng số 1. Còn file /dev/null thì là một nơi mà mình ghi gì vào cũng được nhưng khi đọc thì nó không hiện ra cái gì hết.
Ta có thể tìm tên các file đó trên GTFOBins thì thấy có thể leo root được bằng cách sử dụng systemctl
.
Nói qua về systemctl thì:
Theo GTFOBins thì ta có thể sử dụng payload sau để trở thành root user:
|
|
Lưu ý là ta có thể sửa đoạn cat /root/root.txt > /tmp/output
thành bất kì lệnh nào ta muốn chạy trên server victim.
Chúng ta có thể chạy từng dòng trong payload trên hoặc tạo file sẵn trong máy mình rồi gửi đến máy victim. Dưới đây là một số cách để gửi và chạy file payload:
|
|
Ngoài ra mình còn tìm thấy một cái payload cho phép mình điều khiển trực tiếp victim qua netcat như sau:
|
|
Vẫn thực hiện chuyển file payload đến máy victim rồi tại máy mình chạy lệnh sau:
nc -nvlp port_nc
Tại máy victim lần lượt chạy:
systemctl enable root.service
systemctl start root
Vậy là ta có thể điều khiểm máy victim dưới quyền root rồi… Happy hacking <3