Postman
Llança Postman i segueix amb HTB!
Introducció
Postman porta exposició a una instància de Redis mal configurada, llevant a una caça de fitxers llegibles interessants i un final d’interacció mitjançant una eina d’administració del sistema basada en web.
Fase de Recerca
eix,
estem entrant en blanc. $TARGET s’ha generat a 10.10.10.160.
Primer, escanejarem el nostre $TARGET amb NMap i veurem quins serveis poden estar disponibles.
NMap ens saluda amb trobes que podem seguir:
- Tenim una pàgina web Apache a
80/tcp - Tenim una pàgina web Webmin a
10000/tcp - Tenim una instància de Redis
A més, aquest host té el port 22/tcp obert, així que probablement utilitzarem SSH més endavant.
Abans d’avançar amb l’inspecció dels llocs web, executa ràpidament un script NMap redis-info per a la instància de Redis. Això ens ajudarà a entendre millor la situació de Redis.
Com esperava, aquesta instància no està configurada amb cap requeriment d’autenticació, així que tenim accés complet i obert a aquesta instància.
En avançant, revisarem primer els llocs web perquè qualsevol informació que recopilem de Redis tinguera un millor context.
Tasques
- Inspecciona la Pàgina Web al Port 80
- Inspecciona la Pàgina Web al Port 10000
- Inspecciona la Instància de Redis
Inspecta la Pàgina Web al Port 80
Obrint el meu web-proxy Caido per recollir qualsevol interacció mentre investiguem aquests llocs web.
Visitant http://10.10.10.160 ens serveix un lloc web que està en construcció. Inspeccionant la pàgina web no revela molta informació rellevant, però potser el Postman@htb podria ser un usuari rellevant en el futur així que podem anotar-ho.

Per cobrir les nostres bases, farem fuzzing de directoris i intentarem trobar qualsquers directoris ocults. Emmagatzemant els meus resultats en una llista.
Desafortunadament, encara que aquests directoris tinguin llistat habilitat, i després d’una revisió manual, no hi ha gaire interessant de trobar aquí.
Passant avall, podem eixir a veure la pàgina Webmin que hem escanejat abans.
Tasques
- Inspecciona la Pàgina Web al Port 80
- Inspecciona la Pàgina Web al Port 10000
- Inspecciona la Instància de Redis
Inspecta la Pàgina Web al Port 10000
Així que quan intentis visitar http://10.10.10.160:10000 per primer cop, seràs salutat amb un error, però proporciona algunes bones informacions aquí.
Així que veiem és un registre DNS per resoldre Postman a la nostra $TARGET, i que el lloc sol·licita HTTPS.
Primer, afegim la nova informació trobada a /etc/hosts.
I tornem a visitar el lloc mitjançant https://Postman:10000.
Com es promet, aquí tens el portal d’inici de sessió a Webmin. Webmin és una eina d’administració del sistema basada en web, i amb un poc més de recerca, és servit pel servidor web MiniServ. El mecanisme d’autenticació predeterminat serà usuaris locals mitjançant PAM.
No hi ha molta raó per forçar les credencials aquí a menys que puguem descobrir el mecanisme d’autenticació en lloc.
En els encapçalaments de resposta, podem veure que és la versió 1.910.
Una investigació addicional mitjançant Searchsploit per a detalls de Webmin descriu algunes vulnerabilitats en aquesta versió.
Mòduls de Metasploit-framework, però el punt principal són atacs contra un mòdul Package Updates que porta a RCE (CVE-2019-12840), i residus d’un atac de cadena de suministro per un backdoor utilitzant password_change.cgi, però això depenia d’una configuració específica en la nostra versió $TARGET.
Aquesta és tota una informació útil de saber i pot tornar-nos a ser útil com avançem més. Per ara, no podem continuar, així que revisem l’instància de Redis.
Podem afegir la vulnerabilitat del backdoor després d’haver completat la major part de la nostra recerca.
Tasques
- Inspecciona la pàgina web al port 80
- Inspecciona la pàgina web al port 10000
- Inspecciona la instància de Redis
- Prova l’exploit del backdoor Webmin
Inspecta la Instància de Redis
Tenim un poquet més d’informació sobre l’entorn $TARGET, així que revisar les configuracions de Redis proporcionarà un context millor amb el volc de dades en què podríem estar entrant.
Primer, una connexió manual utilitzant redis-cli, sense autenticació necessària ja que ho descobrim anteriorment, i escometre’m la configuració establerta.
Una columna d’informació caurà; però en el futur pots filtrar per seccions específiques. Per aquesta redacció, passaré pels camps que m’interessaven.

- Com descobrim anteriorment, versió
4.0.9 - Versió del nucli
4.15.0, relativament antic en la numeració moderna - però adequat per a l’any de la publicació d’aquest laboratori. - Ubicació estàndard del fitxer de configuració, no desviant-se dels valors predeterminats.
4. Notablement, la secció Keyspace està buida, suggerint que aquesta instància no està fent gaire.
A continuació, revisant les claus de configuració. De nou, destacaré els elements que m’interessaven.
Els detalls rellevants aquí són l’absència de desviacions respecte les configuracions predeterminades, així que la major part de la documentació hauria d’estar en punt per descriure l’instància.
El valor requirepass és <blank>, el que explica com podem autenticar-nos sense credencials. Això també significa que el nostre accés actual probablement sigui de nivell administratiu per a Redis.
Finalment, dir encara està configurat a /var/lib/redis, que probablement és el directori d’inici del usuari local redis.
Per tant, sabem que aquesta instal·lació probablement té la configuració predeterminada. Pots cercar qualsevol vulnerabilitat relacionada amb la nostra versió de Redis. La recerca m’ha portat a uns pocs mètodes que poden establir un punt d’entrada en el sistema. Comenciaré amb dos que semblen prometents.
- Utilitza redis-rogue-server per explotar la instància de Redis
$TARGETcreant la nostra pròpia instància i establint-la com a màster de$TARGET. - Escriu una clau d’SSH en una base de dades de Redis anomenada
authorized_keys.
Ara tenim uns pocs idees sobre com atacar la instància de Redis, i amb un certa confiança per establir el nostre punt d’entrada.
Tasques
- Inspecciona la pàgina web al port 80
- Inspecciona la pàgina web al port 10000
- Inspecciona la instància de Redis
- Exploita Redis
- Prova l’exploit del backdoor Webmin
Bandera d’Usuari
Per ahorrar-te, el lector, algun temps - el mètode (1) no va portar cap resultat. Ho funcionaria en teoria, però la reconstrucció futura va descobrir que el fitxer redis.conf tenia una configuració addicional, rename-command MODULE "", que desactivarà el comandament MODULE de redis. Aquest comandament era necessari per completar el mètode (1).
Exploit Redis
Com que el mètode (1) ha fallat, estem passant al mètode (2).
En el backend, necessitem configurar un directori Redis que l’usuari redis tingui com a seu directori d’inici. Això probablement tindrà el directori ~/.ssh i amb ell, escriurem el nostre dbfilename com a authorized_keys amb la nostra clau pública.
Si logrem això, podem iniciar sessió utilitzant aquesta clau com a redis.
Primer necessitem generar la nostra clau.
Amb la nostra nova clau, escriurem la clau pública a un fitxer amb alguns salts de línia per ajudar amb el formatatge.
A continuació, escriurem el nostre cat_key a un espai clau en Redis
Després ens connectarem de nou a Redis, configurarem el nostre directori, establirem el dbfilename, i desem els nostres dades. Suposem que /var/lib/redis és el nostre directori d’inici, i si no ho és, rebràrem un error perquè .ssh no existiria aquí.
Hauríeu de rebre un OK després de cada comanda si ha tingut èxit.
Ara, hem desat la nostra base de dades a /var/lib/redis/.ssh/authorized_keys que contindrà la nostra clau pública. Pots intentar SSH com a redis@$TARGET utilitzant la teva clau privada.
La persistència s’ha establert com a usuari redis. No hi ha cap bandera en ~/, així que aquest no pot ser l’usuari que busquem, així que continuarem cercant aquesta bandera.
Pots enumerar des de la compte d’usuari redis.
Tasques
- Exploitar Redis
- Enumerar l’usuari
redis - Provar l’exploit de la porta d’entrada trapa de Webmin
Enumeració de l’usuari redis
Els meus primers passos solen implicar enumerar els privilegis sudo i la versió, els binaris SUID, els usuaris del sistema, els fitxers i directoris escripturables i els fitxers llegibles en directoris estranys.
L’usuari redis no tenia cap privilegi de sudo, i no hi havia cap binari SUID interessant disponible.
Comprovar /etc/passwd va donar insights sobre un usuari local anomenat Matt.
Revisant els nostres servidors web anteriors, /var/www/html no és escripturable, però veiem un script d’importació/exportació de servidor python interessant a /var/www/SimpleHTTPPutServer.py. No hi ha cap informació interessant dintre d’ell, però és una eina disponible si cal.
Una de les meves cerques de fitxers pre-desades m’ha portat a un fitxer privat llegible.
Ubicació estranya però l’accepto.
L’examinem…
OH. És propietat de Matt i protegit per una contrasenya, d’acord, l’examinem amb les eines hashcat i 2john. Si no la treiem, tornarem a enumerar a través del redis.
Tasques
- Exploitar Redis
- Enumerar l’usuari
redis - Atacar la contrasenya de
id_rsa.bak - Provar l’explicabilitat del backdoor de Webmin
Atac de la contrasenya de id_rsa.bak
Utilitzant l’script python descobert anteriorment i aleshores pots baixar la nostra clau privada.
A $CAT_HOST, baixa el fitxer i intenta esbrinar-lo contra rockyou.txt.
Fàcil. Tenim una contrasenya de clau privada <REDACTED> per a Matt@$TARGET. El pas següent és accedir i enumerar els permisos de l’usuari Matt.
Espera. Connexió tancada.
Vegem si podem llegir el fitxer de configuració sshd. Torna al teu terminal redis.
D’acord, Matt està denegat d’entrada per SSH. Pots veure si la contrasenya va ser reutilitzada com a password per a Matt. Des del redis, canviarem d’usuari.
Eso sí. La reutilització de la contrasenya funciona.
Des d’aquí podem obtenir el flag d’usuari.
Ens porta a enumerar l’usuari Matt per descobrir el nostre camí cap a la bandera de root.
Tasques
- Exploitar Redis
- Enumerar usuari
redis - Atacar contrasenya de
id_rsa.bak - Enumerar Usuari
Matt - Provar l’explicabilitat del backdoor de Webmin
Bandera de Raíz
Així que tornem a la nostra fase de Recon i recordem que hem parlat sobre la interfície de Webmin? Per defecte, utilitza l’autenticació PAM, així que en teoria hauríem d’accedir a la consola de Webmin que hauria de proporcionar algunes eines força potents i sabem que és una versió vulnerable.
Així que inspeccionem ara el Webmin i tornem a enumerar l’usuari local Matt.
Tasques
- Inspecciona la Consola de Webmin
- Enumera l’Usuari
Matt - Prova l’Exploit de Backdoor de Webmin
Inspecta la Consola de Webmin
Visitant https://postman:10000 ens torna a un portal d’inici de sessió. Introdueixi les credencials que hem trobat Matt:<REDACTED>.
Sembla que no cal considerar l’exploit de la porta trasera que hem investigat abans, però encara teníem disponible el CVE-2019-12840, que és una RCE suposant que tenim permisos de Actualitzacions del paquet, que…
El nostre usuari Matt té accés a!
Revisant el PoC per al CVE-2019-12840, sembla que és un mòdul del Metasploit-framework.
Inicia el msfconsole i podem trobar i revisar el mòdul.
Tasques
- Inspecciona la Consola de Webmin
- Prova el Mòdul CVE-2019-12840
- Enumera l’Usuari
Matt
Prova del mòdul CVE-2019-12840
Llança msfconsole.
Després troba linux/http/webmin_packageup_rce, que és el nostre mòdul per a CVE-2019-12840.
Configura les opcions adequades per al nostre entorn.
Després explota!
Hem obtingut un shell feble però funciona. Des d’aquí podem llegir la bandera de root.
69f74080
Conclusió/Mitigacions
En primer lloc, em va quedar atascat intentant trobar el meu camí a través de Redis i sol tornar a enumerar per accedir en escriptura a http://10.10.10.160:80. Les meves primeres intents d’escriure al directori d’inici de Redis van acabat amb errors, però després de reiniciar el laboratori va ser capaç d’guardar i escriure com inicialment havia suposat. Potser he fet massa canvis a la instància de Redis en les meves primeres interaccions i això pot haver malmès els meus futurs exploits fins al reinici.
Vivint i aprenent, entendre el meu entorn abans de fer canvis i, més important, crear còpies de seguretat de la configuració abans de fer canvis va ser una lecció important d’aprendre.
Revisant alguns resultats i les seves mitigacions.
Accés sense autenticació - Redis
Inicialment, la instància de Redis que hem trobat està exposada sense cap mecanisme d’autenticació configurat. Hem descobert que podem enumerar claus, escriure a fitxers i executar comandes doncs les configuracions per defecte són molt obertes per aquesta versió.
Com a un amic meu ha dit Redis:
“Redis és bàsicament una shell remota amb una bona API”
Per tant, idealment, voldríem que aquest servei estigui segur.
- Limita Redis només als xarxes necessàries.
- Configura
requirepassutilitzant una contrasenya que compleixi amb una política de contrasenyes fortes.
Accés Lectura Permissiu de Clau Privada SSH
Una vegada que arribem a l’accés d’usuari com a redis@postman, la enumeració va descobrir una còpia de seguretat llegible d’una clau privada SSH per a Matt@postman. Aixímateix, encara que estava protegida amb una contrasenya, això permetia que fos susceptible a l’escrutinat fora de línia i proporcionava accés als sistemes que confiaven en aquesta clau.
Per assegurar aquesta pràctica, cal:
- Moure la clau privada a un lloc o alçament segur amb control d’accés
- Implementar una solució de gestió de secrets, si encara no ho s’ha fet.
- Establir permisos estrictes mitjançant
chmod 600per a qualsevol fitxer de clau privada - Impor un contrasenya fort i d’al·lucament alt per a les claus SSH
Passfrase Débil Protegint la Clau Privada SSH
La clau privada SSH per Matt@postman va resultar protegida per una passfrase débil trobada en qualsevol llista de paraules comunes.
Pràctiques segures i passos de remediació són:
- Re-genera el parell de claus SSH
- Utilitza una passfrase forta amb alta entropia
- Rotació de la clau compromessa en tots els sistemes
- Emmagatzema secrets i claus privades en una solució dedicada de gestió de segrets (implementa-ne una si és necessari).
Vulnerabilitat sense correccions - Webmin CVE-2019-12840
La instància de Webmin en aquest entorn està executant v.1.910, que és vulnerable a CVE-2019-12840. Exploitar aquesta vulnerabilitat proporciona l’execució de comandes amb context de root per qualsevol usuari autenticat amb permisos per al mòdul d’actualitzacions del paquet.
Essencialment, voldríem que aquest servei estigui corregit a la versió més recent i estable si és possible. A més això, restringeix l’accés a la interfície d’usuari de Webmin als usuaris i xarxes necessàries.
Referències
| Investigació | Descripció |
|---|---|
| Webmin | Comprendre el producte i trobar valors per defecte |
| Redis Commands | Referència quan es descobreix com utilitzar Redis |
| Redis Documentation | Utilitzat per entendre com funciona el producte i valors per defecte esperats |
| Eines Utilitzades | Descripció |
|---|---|
| Caido | Eina de proxy lleugera |
| hashcat | Eina per a crackar contrasenyes |
| Metaploit-framework | Marc de proves d’intrusió obert |
| NMap | Eina per a descoberta i auditoria de xarxes |
| Searchsploit | Eina de cerca CLI de exploit.db |


