A10:2021 – Falsificació de Sol·licituds del Lloc del Servidor (SSRF)
Compartir
Descripció
L'atac 'Server-Side Request Forgery' (SSRF) és un tipus d'atac en què un atacant abusa de la funcionalitat d'un servidor per fer sol·licituds HTTP a recursos interns o externs no autoritzats. En essència, s'enganya el servidor perquè realitzi accions no desitjades en nom de l'atacant.
Impacte
Aquest tipus datac pot tenir greus conseqüències per a la seguretat duna aplicació web i la infraestructura subjacent Alguns dels impactes potencials inclouen:
- Accés no autoritzat a recursos interns: L'atacant pot accedir a sistemes i dades que normalment estan protegits per tallafocs o restriccions de xarxa.
- Evasió de controls de seguretat: SSRF pot permetre als atacants eludir mesures de seguretat com firewalls i llistes de control d'accés.
- Exfiltració de dades sensibles: Els atacants poden utilitzar SSRF per extreure informació confidencial de sistemes interns.
- Escaneig de ports interns: SSRF pot ser utilitzat per mapejar la xarxa interna i descobrir serveis vulnerables.
- Execució de codi remot: En casos extrems, SSRF pot portar a l'execució de codi arbitrari al servidor compromès.
Atesa la gravetat d'aquests impactes, és crucial que els desenvolupadors implementin mesures de seguretat robustes per prevenir i mitigar els atacs SSRF a les seves aplicacions web.
Exemples Pràctics
1. Accés a serveis interns
Això pot permetre a l'atacant accedir a sistemes i dades normalment protegits per tallafocs o restriccions de xarxa, com ara bases de dades internes o panells d'administració.
http://vulnerable-app.com/fetch?url=http://localhost:8080/admin
En aquest exemple, si l'aplicació no valida adequadament l'URL proporcionada, podeu fer una sol·licitud al panell d'administració intern al port 8080.
Resum
- Detectar alguna consulta que faci alguna petició a un recurs extern mitjançant HTTP.
- Modificar la petició perquè el servidor web faci una petició a la interfície loopback i així accedir a funcions o serveis no publicats a l'exterior.
Exemple
Després d'analitzar el funcionament de la pàgina web auditada, es pot observar que es fan peticions a recursos externs mitjançant HTTP.
Mitigacions
- Validar i sanititzar totes les entrades dusuari, especialment les URLs.
- Implementar llistes blanques de dominis i adreces IP permeses.
- Utilitzar tallafocs d'aplicacions web (WAF) per filtrar sol·licituds malicioses.
- Configurar correctament els tallafocs de xarxa per limitar l'accés a recursos interns.
- Implementar el principi de mínim privilegi als servidors i serveis.
- Usar VPNs o xarxes privades virtuals per aïllar recursos crítics.
- Deshabiliteu redireccions HTTP quan no siguin necessàries.
- Implementar autenticació i autorització robustes per a tots els endpoints interns.
- Utilitzeu DNS intern per resoldre noms de host, evitant l'ús d'adreces IP directes.
- Monitoritzar i registrar totes les sol·licituds de xarxa per detectar patrons sospitosos.
2. Escaneig de ports interns
Resum
- Detectar alguna consulta que faci alguna petició a un recurs extern mitjançant HTTP.
- Modificar la petició perquè el servidor web faci una petició a adreces IP i ports interns que no estan exposats a l'exterior.
- Observar respostes diferents pel servidor per poder discernir quan hi ha una adreça IP amb algun port obert de quan no.
Exemple
Mitigacions
- Implementar llistes blanques d'adreces IP i rangs permesos per a sol·licituds internes.
- Utilitzar tallafocs d'aplicacions web (WAF) configurats per detectar i bloquejar patrons de sol·licituds sospitoses.
- Segmentar la xarxa interna per limitar l'abast de possibles escanejats.
- Implementar el principi de mínim privilegi als servidors i serveis interns.
- Utilitzar autenticació i autorització robustes per a tots els endpoints interns.
- Monitoritzar i registrar totes les sol·licituds de xarxa per detectar patrons d'escaneig.
- Implementar rate limiting per prevenir escanejats ràpids i automatitzats.
- Utilitzar Virtual Private Cloud (VPC) en entorns cloud per aïllar recursos crítics.
- Configurar correctament els grups de seguretat i les llistes de control d'accés (ACL) a la xarxa.
- Educar els desenvolupadors sobre les millors pràctiques de seguretat i els riscos associats amb SSRF.
3. Accés a metadades en entorns cloud
- Credencials temporals d'AWS
- Rols d'IAM associats amb la instància
- Dades de configuració de xarxa
- Scripts d'inicialització personalitzats
Resum
- Detectar alguna consulta que faci alguna petició a un recurs extern mitjançant HTTP.
- Modificar la petició original perquè el servidor web faci una petició a recursos de servidors en cloud que puguin estar limitats mitjançant WhiteList perquè només hi pugui accedir el servidor.
- Observar respostes diferents pel servidor per poder destriar quan ha estat possible accedir a recursos emmagatzemats a Cloud i quan no.
Exemple
Escenari
Passos de l'explotació
- L'atacant descobreix que l'aplicació està allotjada a Amazon Web Services (AWS).
- L'atacant introdueix la URL següent al camp d'entrada de l'aplicació: http://169.254.169.254/latest/meta-data/
- L'aplicació fa una sol·licitud a aquesta adreça IP interna d'AWS, que és l'endpoint de metadades d'instàncies EC2.
- Com a resultat, l'aplicació torna informació sensible sobre la instància EC2, com ara:
1. ID d'instància2. Regió3. Nom d'amfitrió intern4. Direcció MAC
5. L'atacant pot aprofundir més utilitzant rutes específiques, com ara: http://169.254.169.254/latest/meta-data/iam/security-credentials/ per obtenir les credencials de seguretat temporals del rol IAM associat a la instància.
Mitigació
- Implementar una llista blanca d'URLs permeses
- Utilitzar un proxy invers per a les sol·licituds sortints
- Configurar tallafocs per bloquejar el trànsit a adreces IP internes
- Implementar el principi de mínim privilegi als rols IAM
- Utilitzar IMDSv2 (Instance Metadata Service version 2) que requereix tokens de sessió
4. Exfiltració d'informació (injecció Cypher)
Resum
- Detectar alguna consulta mitjançant la qual sigui possible injectar codi a les consultes realitzades a la base de dades.
- Realitzar consultes a la base de dades per obtenir informació emmagatzemada.
- Exfiltrar la informació obtinguda mitjançant la funció de càrrega de CSV per HTTP, fent així una tècnica de SSRF.
Exemple
Mitigació
- Usar paràmetres: Prevenir la injecció de Cypher utilitzant paràmetres en lloc de concatenar directament l'entrada de l'usuari a les consultes.
- Parametritzar consultes: Compilar les consultes en plans executables que no es puguin modificar per les dades dels paràmetres.
- Usar procediments APOC de manera segura: En utilitzar APOC, continuar passant paràmetres per evitar vulnerabilitats de concatenació de cadenes.
- Sanititzar entrades: Quan la parametrització no és possible (per exemple, per a etiquetes de nodes), sanititzar les entrades de l'usuari escapant caràcters especials.
- Evitar tornar errors de base de dades: Usar missatges d'error genèrics per prevenir la divulgació d'informació mitjançant injecció basada en errors.
- Implementar fuita adequada: Utilitzar seqüències d'escapament apropiades per a diferents tipus de Cypher (literals de cadena, identificadors).
- Validar entrades: Comproveu les entrades de l'usuari contra criteris específics, però tingueu en compte les possibles tècniques de bypass.
- Aneu amb compte amb les injeccions de segon ordre: Continueu sanititzant les dades emmagatzemades quan s'utilitzin en consultes posteriors.
- Aplicar el principi de mínim privilegi: utilitzar control d'accés basat en rols per limitar l'impacte potencial d'injeccions exitoses.
- Manejar acuradament les importacions de dades: Ser conscient de les vulnerabilitats potencials en importar dades de fonts externes com a fitxers CSV.