Trick
Llança Trick i segueix ambmés a HTB!
Introducció
Trick ofereix un camp per practicar les tècniques de Web Recon, vulnerabilitats de Local File Inclusion per veure la configuració de l’entorn, i una interacció interessant amb Fail2Ban. La meva primera experiència amb Trick m’havia fet seguir alguns camins no convencionals i confusos que serien fàcils de fer amb les eines mostrades en aquesta entrada. El camí essencial és descobrir la informació de DNS, amb SQL Injection per passar l’autenticació, trobar vulnerabilitats de Local File Inclusion per veure fitxers de configuració i dades sensibles, i finalment utilitzant els permisos d’escriptura per forçar a Fail2Ban a executar comandes malicioses.
Fase de Recerca
Ei,
$TARGET s’ha generat a 10.10.11.166. Estem entrant en blanc.
Primer podem escanviar el nostre $TARGET utilitzant NMap i recollir algunes informacions.
Trobarà informació útil que ens ajudarà a començar a trobar el nostre punt de penedra.
- Postfix està obert, un servei d’SMTP. També veiem que
VRFYestà disponible, així que podem intentar alguna enumeració d’usuaris mitjançant SMTP $TARGETtambé està executant un servei de DNS, però observa que mostra53/tcp. Normalment el DNS és53/udpen un host Linux, específicament amb el servei BIND, però53/tcpimplica que podem transferir una zona i obtenir informació addicional de DNS aquí.- Nginx està funcionant i està servint una pàgina web a través de
80/tcp.
Tasques
- Transferència de zona DNS
- Enumerar usuaris mitjançant SMTP
- Revisió del lloc web
Transferència de zona DNS
Abans d’executar una transferència de zona, necessitem saber el domini que volem transferir. Pots fer suposicions informades, però això és millor si consultem un escriptici invers amb dig.
Tenc un domini, trick.htb. Inicia una transferència de zona amb dig.
He trobat un Vhost Virtual per a trick.htb, anomenat preprod-payroll.trick.htb.
Afegim aquests a /etc/hosts per poder resoldre’n més tard.
Això ens dona més llocs web per revisar.
Tasques
- Transferència de zona DNS
- Enumerar usuaris mitjançant SMTP
- Revisar el lloc web
trick.htb - Revisar el lloc web
preprod-payroll.trick.htb
Enumeració d’usuaris via SMTP
Sabem de més enllant que VRFY és un comandament utilitzable al port SMTP obert. Per tant, podem enumerar usuaris utilitzant l’eina smtp-user-enum. Utilitzem grep per filtrar la sortida pel codi de resposta 252; en cas contrari, la nostra eina també generarà el codi de resposta 550, que són essencialment “usuari no trobat”.
Aquí podem suposar que hi ha un servei MySQL en execució però no està exposat externament.
Pots continuar amb una més gran sèrie d’usuaris, però aquesta no és necessària en aquest moment. Si ens atascem, podem tornar a això.
Tasques
- Transferència de zona DNS
- Enumerar usuaris via SMTP
- Revisar el lloc web
trick.htb - Revisar el lloc web
preprod-payroll.trick.htb - Enumerar més usuaris SMTP
Revisió del lloc web trick.htb
Abans d’iniciar la investigació de llocs web, lanza el teu proxy web preferit, el meu sentit és Caido.
Així que en la primera visita a http://trick.htb ens salutem amb una pàgina web “En construcció” amb un formulari web que notoriament no fa res.
El botó està deshabilitat i això sembla requerir un API_TOKEN, així que podem inferir que aquesta pàgina web està en desenvolupament.
Pots continuar, si et quedes atascat pots tornar i esforçar-te més en això.
Tasques
- Transferència de zona DNS
- Enumerar usuaris via SMTP
- Revisar el lloc web
trick.htb - Revisar el lloc web
preprod-payroll.trick.htb - Enumerar més usuaris de SMTP
Revisió del lloc web preprod-payroll.trick.htb
Següent lloc web! Anem a veure http://preprod-payroll.trick.htb.
Veiem un portal d’inici de sessió i primer intentem algunes credencials fàcils com admin:admin.
No hi ha autenticació fàcil amb aquestes credencials senzilles.
Així que desempaquetem això un poc. La pàgina web és clarament PHP perquè encara està sentida per Nginx, i el fet de dir /login.php en la URL.
Hi ha uns pocs mètodes per a passar-hi. Un manera és fàcil com vaig aprendre després, i llavors hi ha el mètode menys obvi. Crec que inicialment vaig trobar el mètode menys obvi. Salta endavant si vols veure el mètode intencionat.
- Mirant les meves peticions interceptades/resposta de Caido, vaig notar dues coses particularment interessants.
Petició
Resposta
Dos línies particularment interessants per a mi van ser la meva petició POST i les dades de la nostra resposta.
Em diu que estem utilitzant AJAX per a algunes lògiques del lloc web, i la resposta és peculiar perquè què vol dir 3 aquí?
Tornem a mirar en la pàgina /login.php i trobem AJAX al final de la pàgina.
Passant per la lògica, enviem les nostres credencials a una petició POST a ajax.php?action=login i la resposta determina el nostre redirèct. Tenim tres codis de resposta possibles.
1anem aindex.php?page=home, que em diu com està dissenyat el lloc web més allà d’aquest portal d’inici de sessió degut al paràmetrepage, i també és on vull estar.2anem avoting.php, interessant i podem notar-ho.- qualsevol altre cosa rebrà
Username or password is incorrect, on estem ara.
I si simplement interceptem la resposta i possem el nostre codi de resposta desitjat, en el nostre cas, 1?
Així que intento tornar a iniciar sessió amb admin:admin però intercepto la resposta.
Només ho modificaré a 1 i llavors podem Forward aquesta resposta.
Envia una altre resposta peculiar.
Resposta
Em pregunta amablement que redirecti a login.php. No obstant això, si miras el cos restant de la resposta–
Sembla que encara ens han proporcionat la pàgina /index.php?page=home!
No siento realment redirigir-me d’aquesta pàgina, així que - modifiquem els capçalers de resposta a 200 OK i eliminem l’encapçalador location.
Resposta modificada
Així que amb la lògica d’accés controlada del costat de l’usuari, i sense altres comprovacions addicionals d’autenticació / autorització. Hem pogut accedir correctament al Sistema de Gestió de Recrutament, passant per damunt el portal d’inici de sessió.
Més tard vaig aprendre que hi havia un mètode molt més fàcil i és una tècnica que hauria d’haver intentat immediatament.
- Tornem a la nostra pàgina inicial
/login.php. Després de provar credencials febles - considera una simple tècnica d’Injecció SQL. Per al nom d’usuari, afegix' or '1'=1-- -a qualsevol nom d’usuari que triïs, llavors escriu qualsevol contrasenya.
En l’execució, avaluarà la declaració sql com a truei autenticant-te com el primer usuari retornat del resultat.
Fàcil com això - ara estem connectats com a Administratorper al plataforma Sistema de Gestió de Recrutament.
Ara que tenim accés, podem passar el temps recorrent tots els formularis i pàgines disponibles per a nosaltres.
Després d’explorar la plataforma, no hi ha res més en termes d’escalada des d’aquest punt. Així que podem començar atacant l’aplicació en si mateixa. Hi ha moltes vulnerabilitats existents en aquesta aplicació - però estem en una misió per a possedar-nos el servidor en si.
Sabem que (probablement) està comunicant-se amb una instància de MySQL des del que vaig descobrir quan enumere usuaris mitjançant SMTP. Així que podem provar tècniques d’Injecció SQL. Hi ha un nombre de pàgines objectiu per a triar, però vaig esforçar-me més en profunditat i vaig notar algunes pàgines php interessants.

Visitant directament http://preprod-payroll.trick.htb/view_employee.php?id=0, veuràs una interfície visualment desagradable.
D’acord amb això, en comptes de treballar en pàgines anteriors amb el paràmetre page, aquí puc treballar en una pàgina menys complicada que té un paràmetre id.
Com que això és simplement un paràmetre GET, podem passar-lo per sqlmap i veure si podem obtenir qualsevol vector d’Injecció SQL.
Sortant afortunatament, rebrim vulnerabilitats basades en boolean, temps basat en cegues i UNION query des del paràmetre id.
Sembla que tenim alguna enumeració que fer ara que tenim un mètode prometent per a trobar el nostre camí dins.
Tasques
- Transferència de zona DNS
- Enumerar usuaris via SMTP
- Revisar el lloc web
trick.htb - Revisar el lloc web
preprod-payroll.trick.htb - Enumeració per injecció SQL
- Enumerar més usuaris SMTP
Bandera d’Usuari
Amb el nostre nou mètode de Injecció SQL trobat - podem descartar la tasca futura d’enumeració de SMTP.
Tasques
- Enumeració d’inyecció SQL
Injecció SQL d’Enumeració
No sabem gaire de la nostra situació actual, així que comencem amb l’enumeració d’usuaris, contrasenyes, privilegis, bases de dades i taules per a bases de dades no estàndards. Utilitzant sqlmap una més cop com a eina de tria.
Ara ordenem aquesta informació.
El que hem trobat:
- Som l’usuari de base de dades
remo, que és un usuari local de mysql - No hi ha altres usuaris de base de dades que
remopugui veure - El Sistema de Gestió de Bases de Dades és Database Management Systems
- Veiem una
payroll_dbque probablement serveixi l’aplicació del Sistema de Gestió de Recrutament remoté privilegis deFILE- L’usuari
remoprobablement està bloquejat d’visualitzar els xifrats de contrasenya per als usuaris de base de dades
Amb això podem continuar amb l’enumeració utilitzant sqlmap per respondre a algunes preguntes més.
- Degut al nostre privilegi
FILE, quin valor està configurat com asecure_file_priv? - Quines taules i dades podem extreure de la
payroll_db?
Primer responem a la pregunta de secure_file_priv.
Així que aquí veiem que secure_file_priv està configurat com a <blank>, que és una malconfiguració.
Quan un usuari té privilegis de FILE i el valor de secure_file_priv és <blank>, l’usuari té tots els privilegis de lectura/escriptura a qualsevol directori/fitxer al qual l’usuari mysql té permisos de lectura/escriptura en el servidor.
A continuació, busquem què podem extreure de payroll_db.
Tot i que sqlmap ha afegit una cadena aleatòria als camps, podem veure que la única taula d’interès és users, així que es profunditzem més.
Extreiem aquesta taula - potser trobem un conjunt de credencials.
Així que hem trobat un conjunt de credencials Enemigosss:SuperGucciRainbowCake. Pots anotar això.
sqlmap és una eina potent, en aquest cas ens va permetre
- Accés com a usuari de base de dades
remo - Confirmació de lectura/escriptura de fitxers via SQL Injection
- Un conjunt de credencials
Enemigosss:SuperGucciRainbowCake
Més important, podem començar a enumerar el propi host per trobar la manera d’entrar com a usuari. També podem utilitzar el nostre nou conjunt de credencials per veure quins accés ens han proporcionat.
Tasques
- Enumeració d’inyecció SQL
- Enumerar fitxers de configuració del servidor
- Provar les credencials trobades
Enumera els fitxers de configuració del servidor
Mètode estàndard per provar les nostres capacitats de lectura de fitxers, podem intentar llegir /etc/passwd per obtenir informació sobre el servidor utilitzant sqlmap.
Pots confirmem que michael existeix com a usuari local, el qual va ser enumerat prèviament.
Els passos següents poden ser revisar el codi font del lloc web per veure si podem obtenir algun mètode d’execució de comandes, però encara no sabem on està la raíz web, o si és una raíz web predeterminada, així que els nostres següents objectius són revisar els fitxers de configuració del Nginx que per defecte són /etc/nginx/nginx.conf i /etc/nginx/sites-enabled/default .
Revisant els nostres fitxers de configuració extrets; podem arribar a algunes conclusions.
/etc/nginx/nginx.conf( Comentaris Eliminats )
Desafortunadament, aquest fitxer de configuració només està utilitzant un comodí per al directori sites-enabled, així que el millor que podem esperar és que s’utilitzi el fitxer nginx/default. Revisem-ho.
/etc/nginx/sites-enabled/default(Comentaris Eliminats, separat en tres seccions)
Primer bloc server, veiem la pàgina base de #Review Website trick.htb sense res particularment interessant. Això utilitza la raíz web comuna /var/www/html.
Següent.
Segon bloc server, això és interessant. Aquesta és la nostra primera instància de veure preprod-marketing com a Virtual Host. La raíz web és /var/www/market així que podem revisar-ho següent. També, diferència notable del bloc server anterior (i les configuracions en general), el fastcgi_pass està configurat per utilitzar un socket de domini UNIX que probablement és propietari del usuari local michael.
Últim bloc server; veiem el nostre últim lloc web preprod-payroll. La raíz web és /var/www/payroll si la necessitem més endavant.
Descobrir aquestes configuracions ens porta a explorar preprod-marketing, i si hi ha algunes vulnerabilitats en aquesta pàgina que utilitzen el servidor fastcgi configurat, ho tindrem (probablement) en context de michael.
Tasques
- Enumeració d’inyecció SQL
- Enumerar fitxers de configuració del servidor
- Revisar VHost
preprod-marketing - Provar les credencials trobades
Revisió VHost preprod-marketing
Primer afegim preprod-marketing.trick.htb a /etc/hosts.
Visitem el lloc web http://preprod-marketing.trick.htb/.

Fent clic, el lloc no té res particularment interessant més que el fet de que utilitza un patró de disseny de controlador de pàgines PHP per mostrar contingut, i una pàgina ‘Contacta’ a page=contact.html.
Si enviem una petició POST via ‘Informació de contacte’ a page=contact.html, no trobem cap punt final o informació interessant.
Pots provar el nostre accés al /var/www/market webroot i revisar el codi font de index.php utilitzant el nostre accés de lectura de fitxers des de preprod-payroll.trick.htb.
/var/www/market/index.php
Aquí veiem un filtre de substitució de subcadena molt bàsic. No recursiu, així que un argument $file que conté ....// es resoldrà com a ../, el que hauria de permeternos navegar pel directori i renderitzar un fitxer.
Provar amb /etc/passwd.
Per tant, hem descobert una Inclusió de fitxer local a preprod-marketing.trick.htb. Hi ha diverses direccions que podem seguir des d’aquí:
- Utilitza una tècnica de Poisoning del registre, modificant el nostre User Agent amb un payload de User Agent PHP, i utilitzant la Inclusió de fitxer local per renderitzar el
/var/log/nginx/access.loga la pàgina. Utilitza el User Agent per establir una sessió de User Agent.
Aquesta és una intent d’exploit en un sol tret, degut al fet que el teu primer intent sempre es renderitzarà primer quan visualitzis el fitxer access.log.
Utilitza una tècnica de Poisoning del correu, enviem correu electrònic a la compte d’usuari local
michaelamb el nostre payload de Web Shell PHP. Pots utilitzar swaks per enviar correu, o fer un telnet al port25/tcpi enviar correu manualment via comandesRCPT TO. Utilitzant la nostra tècnica d’Inclusió de fitxer local, renderitzem/var/mail/michaelper utilitzar el nostre Web Shell per establir una sessió de Web Shell.Comprova si podem trobar credencials usables en llocs comuns.
Trobo que el mètode 3 és el més fàcil de comprovar, però tenim altres opcions per adquirir el nostre punt d’entrada.
Primer comprovem si michael té claus privades SSH disponibles, el nom predeterminat és sovint id_rsa.
Segurament hem trobat una clau privada. Roba-la com michael_trick_id_rsa.
Abans d’intentar iniciar la sessió, comprova authorized_keys per assegurar-te que aquesta clau es pugui utilitzar en l’ordinador $TARGET.
michael@trick és vàlid per a michael@trick.htb. Ara inicia sessió com a michael i obte la bandera d’usuari.
8bc0b060
Tasques
- Enumeració d’inyecció SQL
- Enumerar fitxers de configuració del servidor
- Revisar VHost
preprod-marketing - Enumerar permisos per a
michael - Provar credencials trobades
Bandera de Raíz
Avís del nostre comandament anterior id, som part del grup seguretat. Pots explorar tant els permisos de michael com els de seguretat per a l’accés del nostre usuari local.
Tasques
- Enumera els permisos per a
michael - Enumera els permisos per a
security
Enumera els permisos per a michael
El primer pas per a mi és comprovar si aquest compte d’usuari pot executar qualsevol ordre com a root.
Oh interessant, michael pot reiniciar Fail2Ban com a root. Pots afegir l’exploració de la configuració de Fail2Ban a les nostres tasques.
L’enumeració addicional per a permisos de lectura/escriptura, configuracions d’entorn, etc. no genera suficient interès com a mencionar en aquesta redacció. Pots avançar des d’aquí.
Tasques
- Enumera els permisos per a
michael - Enumera els permisos per a
security - Revisa la configuració de Fail2Ban
Enumera els permisos per a seguretat
seguretat és un grup de linux no estàndard, i el nostre usuari michael en fa part. Per tant, si cerquem fitxers o directoris propietaris de seguretat, podem trobar coses interessants.
Segurament, trobem un altre enllaç per a l’usuari local michael que necessita permisos de Fail2Ban. El grup security té accés d’escriptura al directori /etc/fail2ban/action.d. Podríem tenir el nostre vector d’escalada de privilegis aquí per a aconseguir root. Afegint una tasca addicional per configurar Fail2Ban com a un vector d’escalada de privilegis de Linux.
Sembla que només un servei està habilitat per a la supervisió.
Afortunadament, el SSH està habilitat per a la supervisió, així que podem continuar amb el nostre pla. La pregunta següent és: com està configurat per a supervisar el SSH?
Dos factors importants a tenir en compte aquí.
bantime és de 10 segons, és suficientment perdóneble on si fem un error podem tornar-ho a provar, però ho dissuadeix d’qualsevol força bruta (que no estem fent).
A més, utilitzarà els valors per defecte per maxretry i banaction, així que podem comprovar aquestes configuracions.
Aquí va. Això descriu el comportament un poc millor.
Vam a resumir-lo tot.
El Fail2Ban monitoritzarà i desencadenarà en intents de connexió fallits al SSH. Després de 5 intents fallits, invocarà l’actionban del fitxer /etc/fail2ban/actions.d/iptables-multiport.* i encarcelarà la destinació per 10 segons.
Per tant, si sobrescriuem iptables-multiport.conf amb el nostre propi comandament actionban, podem fer que el Fail2Ban funcioni en el context de root.
Revisant els fitxers d’acció iptables-multiport.
Sembla que root és el propietari del fitxer .conf original, però .local no existeix, això és com podem sobreescriure una acció .conf.
Passant avui, podem executar la nostra atacada i tenir Fail2Ban establir un bit SUID a /bin/bash perquè el puguem utilitzar.
Reinicia el servei Fail2Ban amb sudo, això farà que les nostres noves configuracions entrem en vigor.
Aleshores força una actionban de Fail2Ban utilitzant thc-hydra amb un intent d’intrusió contra root@trick.htb.
Com que hem sobrescrit l’actionban que realment bloquejaria la nostre IP, no serem desconectats/pausats en la nostra sessió SSH. Continua comprovant /bin/bash fins que veus que apareixi el bit SUID.

Una vegada establert el SUID, executa /bin/bash -p per entrar en un shell amb l’UID efectiu de root
Benvingut a la nostra shell de root. Captura la bandera per completar el laboratori.
Tasques
- Enumera els permisos per a
michael - Enumera els permisos per a
security - Revisa la configuració de Fail2Ban
- Escalona amb Fail2Ban
Conclusió/Mitigacions
Trick va proporcionar espai per practicar mètodes de proves web fundamentals, específicament per a la pràctica d’injecció SQL i incisió de fitxers locals, de manera que puguis trobar les teves debilitats i forteses. Em va quedar aturat en un bucle entre preprod-payroll i preprod-marketing, el qual hauria estat evitat si hagués tingut una millor comprensió de les meves eines i saps quan deixar anar idees. Un coneixement més fort de la infraestructura web backend ajudaria amb això.
La millor part de Trick va ser aprendre Fail2Ban i entendre com tens just prous permisos per fer-ho en el teu favor. Això em va portar a aprendre més sobre Fail2Ban i com està configurat.
Cobriré algunes mitigacions que podem recomanar des del nostre camí d’atac. Evitaré una llista completa perquè he après que el “Sistema de Gestió de Recrutament” és real i plens de CVEs.
Exposició del Fitxer de Zona DNS
El servidor DNS estava configurat per permetre transferències de zona des de la nostra $CAT_HOST. Això proporciona a un adversari informació innecessària en relació amb l’infraestructura interna de la $TARGET. Utilitzem aquesta informació per trobar altres llocs d’Amfitrió Virtual hosts pels quals $TARGET.
Configurar l’atribut allow-transfer del fitxer de zona a amfitrions específics que estan autoritzats a rebre una transferència de zona mitigarà aquest problema.
Injecció SQL - Saltar Autenticació
El portal de login de la pàgina web a preprod-payroll.trick.htb/login.php tenia una validació insuficient de l’entrada d’usuari, permetent així un atac d’Injecció SQL per saltar el mètode d’autenticació donat.
Hi ha diversos patrons de disseny i biblioteques que ajuden a reforçar un portal de login contra l’Injecció SQL. La funció de login necessita lograr una sanitització adequada de l’entrada d’usuari i una validació de l’entrada d’usuari, i assegurar-se que el MySQL $USER que consulta la base de dades d’aquesta manera estigui restringit als permisos mínims necessaris per a realitzar el seu propòsit.
A més, els patrons de disseny per implementar consultes parametritzades poden ajudar a mitigar l’Injecció SQL.
També puc afegir el mètode alternatiu per saltar l’autenticació, que consistia en eliminar el control del costat client de la lògica de visualització de la pàgina web que es feia mitjançant AJAX, i implementar aquestes mètodes de validació al costat servidor.
Injecció SQL - Exposició de Dades
L’exposició de dades va ser identificada degut a que els permisos MySQL $USER permeten privilegis de lectura de fitxers mitjançant el privilegi FILE, i secure_file_priv està mal configurat com <blank>. Aquesta vulnerabilitat permet al adversari accedir a permisos de lectura en fitxers de configuració sensibles.
A més dels recomanaments de validació i neteja d’entrada segons #Injecció SQL - Passarel·lament d’Autenticació, assegurar-se de que el MySQL $USER estigui configurat per utilitzar només els privilegis necessaris quan ho sigui possible mitjançant consultes SQL mitigarà l’exposició de fitxers localhost.
Eliminar els permisos remo FILE, si es permet, evitarà que una consulta vulnerable a Injecció SQL llegi a fitxers locals.
Configurar secure_file_priv a un directori que sigui necessari perquè remo pugui continuar funcionant amb el seu propòsit. Si no és necessari, establir el valor a NULL per desactivar les operacions d’importació/exportació de dades.
Inclusió Local de Fitxers PHP
Inclusió Local de Fitxers va ser identificada a preprod-marketing.trick.htb/index.php, permetent que l’adversari renderitzés fitxers locals en la pàgina web associada. Això va permetre tècniques addicionals que van permetre a l’adversari obtenir un shell remot en el $TARGET.
Aquesta vulnerabilitat es pot mitigar amb una sanitizació i validacions d’entrada addicionals. Es va identificar una substitució de cadena no recursiva per a la traversal de camins relatius. Utilitzant eines integrades del framework PHP per identificar el nom del fitxer sol·licitat, i controlant el directori arrel web des d’on requereix el Virtual Host, es mitigaria aquesta vulnerabilitat.
Permisos Insegurs - Configuració de Nginx
El fitxer /etc/nginx/sites-enabled/default a $TARGET té fastcgi_pass configurat per a un Socket Unix que permet l’accés als fitxers del usuari local michael. Això ha permès la exposició de dades sensibles i l’accés d’usuari.
Configurar el Nginx amb un Socket Unix relatiu als propòsits necessaris del Virtual Host preprod-marketing.trick.htb mitigaria aquest problema. Això podria ser un socket com està configurat amb els altres virtual hosts en el fitxer, o un compte de sistema nou específic per a la finalitat d’aquest socket.
Referències
| Investigació | Descripció |
|---|---|
| Documentació de Fail2Ban | Utilitzat per entendre l’ús i la configuració de Fail2Ban |
| Documentació de Nginx | Entendre la configuració de Nginx |
| Eines Utilitzades | Descripció |
|---|---|
| Caido | Eina lleugera de proxy web |
| NMap | Utilitat gratuïta per a la descoberta de xarxes i auditoria de seguretat |
| smtp-user-enum | Eina d’enumeració d’usuaris SMTP |
| sqlmap | Eina d’enumeració d’injeccions SQL |
| swaks | Eina lleugera de línia de comandes per a SMTP |
| thc-hydra | Eina de força bruta |
| dig | Eina Groper d’informació del domini |
