NeoMarket BugBountyLabs (Avanzado)

Escaneo de puertos

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>

Info:

Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-03-21 08:24 EDT
Nmap scan report for 192.168.1.152
Host is up (0.00040s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
| ssh-hostkey: 
|   256 af:79:a1:39:80:45:fb:b7:cb:86:fd:8b:62:69:4a:64 (ECDSA)
|_  256 6d:d4:9d:ac:0b:f0:a1:88:66:b4:ff:f6:42:bb:f2:e5 (ED25519)
80/tcp open  http    Apache httpd 2.4.62
|_http-title: Did not follow redirect to http://neomarket.bbl
|_http-server-header: Apache/2.4.62 (Debian)
MAC Address: 08:00:27:08:BB:A9 (Oracle VirtualBox virtual NIC)
Service Info: Host: 127.0.1.1; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.67 seconds

Vemos que hay un puerto 80 en el que si entramos veremos que nos pide un dominio llamado neomarket.bbl, por lo que meteremos en nuestro archivo hosts el siguiente dominio.

Lo guardamos y volveremos a cargarlo, con esto ya veremos una pagina web en la que tendremos varias cosas, entre ellas veremos un login y un register, vamos a probar a realizar un SQL Injection en el login.

Pero veremos que no funciona, vamos a registrarnos, una vez echo, si nos vamos a la seccion de Compras veremos lo siguiente:

Puede ser un buen punto de inyeccion uno de estos 2 campos, por lo que vamos abrir BurpSuite y capturar la peticion, veremos algo asi:

Vamos a ver si en el parametro de id puede ser vulnerable, poniendo lo siguiente:

Dejando la peticion de la siguiente forma:

Cuando lo enviemos veremos que la respuesta del servidor es la siguiente:

Por lo que si es vulnerable ya que esta habiendo algun error a nivel de codigo y el servidor no lo puede llegar a procesar bien ya que se esta tragando la ' y peta, por lo que vamos a probar a meter algunos payloads para ver por donde va la tecnica.

Si probamos a meter lo siguiente:

Dejando la peticion de esta forma:

Cuando volvemos a la pagina vemos que el articulo se ha comprado de forma correcta, pero si ponemos alguna condicion que no se cumpla.

Cuando la enviemos veremos que el articulo no se ha comprado, por lo que hace caso a este tipo de inyecciones blooleanas por lo que podremos deducir que estamos antes un SQL Injection booleano.

Pero lo que vamos hacer para automatizar todo esto es utilizar la herramienta de sqlmap capturando la peticion de BurpSuite y utilizando dicha peticion para que obtenga el parametro vulnerable en este caso el id y haga sus pruebas en ese parametro.

sqlmap

request.txt

Ahora ejecutaremos el siguiente comando:

Info:

Vemos que nos muestra las bases de datos, entre ellas una muy interesante llamada shop por lo que sacaremos las tablas de dicha base de datos:

Info:

Ahora veremos que nos saca dos tablas entre ellas la mas atractiva llamada users, por lo que vamos a ver las columnas o informacion de dicha tabla.

Info:

Vemos que nos saca las credenciales del usuario admin el otro usuario lo cree yo, por lo que vamos a probar a crackear la contraseña del usuario admin.

John (crack)

hash

Ejecutaremos lo siguiente:

Info:

Vemos que la contraseña es speaker, pero si iniciamos sesion como dicho usuario no veremos nada, por lo que vamos a buscar alguna forma de ejecutar codigo de forma remota (RCE) mediante un SQL Injection (RCE).

SQL Injection (RCE)

Si por ejemplo probamos a realizar lo siguiente:

Para ver si se esta ejecutando codigo de forma remota, antes de enviar dicha peticion abriremos un servidor de python3 para ver si nos llega.

Nos tendra que quedar algo asi la peticion:

Una vez que enviemos eso, si nos vamos a nuestro servidor de python3 veremos lo siguiente:

Vemos que a funcionado de forma correcta, por lo que ahora vamos a ejecutar una reverse shell para obtener acceso a la maquina de la siguiente forma:

Pero tendremos que codificarlo en URLCode quedando de la siguiente forma:

Ahora dejandolo de la siguiente forma:

Antes de enviarlo nos pondremos a la escucha:

Y si enviamos la peticion y volvemos a la escucha veremos lo siguiente:

Vemos que ha funcionado y entraremos como el usuario mysql, por lo que ya habremos terminado la maquina, habiendo explotado de forma correcta la vulnerabilidad de un SQLi.

Ahora leeremos la flag de la maquina:

flag.txt

Last updated