HTTP Strict Transport Security (HSTS) es una política de seguridad que se puede activar en las aplicaciones web de tal manera que se utiliza una cabecera de respuesta especial (por ej. Strict-Transport-Security: max-age=157680000; includeSubDomains;) que, si el navegador soporta, evita que 1/ se envíe tráfico por HTTP plano o sin cifrar para el dominio especificado redireccionando automáticamente a HTTPS y 2/ que el usuario pueda seguir navegando por un sitio con un certificado no válido.
Esto último es especialmente "molesto" a la hora de utilizar un proxy como Burp o ZAP para auditar una web, ya que evidentemente el certificado intermedio no es válido y no puedes "navegar" por el site. Por lo tanto si una aplicación web utiliza HSTS nos toparemos con esto:
Para evitar ésto tenemos dos opciones:
- usar un navegador obsoleto que no soporte HSTS para lo cual seguramente tendremos que jugar con el 'User agent' y podremos tener algunas incompatibilidades. A continuación se muestra la lista de las versiones mínimas de los principales navegadores que lo soportan:
- instalar el certificado raíz CA de Burp para que nuestro navegador confíe en el certificado. Por defecto, cuando navegamos mediante Burp por un sitio mediante HTTPS, el Proxy genera un certificado SSL para cada host, firmado por su propia CA. El certificado CA es generado la primera vez que se ejecuta Burp, así que si lo instaláis como confiable tenéis que tener cuidado que no accedan a vuestro equipo y os roben la clave privada. Tenéis las instrucciones para cada navegador en la página de Portswigger.
En mi caso que uso Firefox es tan sencillo como ir a la URL http://burp/ teniendo el proxy configurado e importar del certificado:
Y ya está, así de simple. Ya podemos seguir auditando la aplicación web... ;)
Fuentes:
- Pen-testing HSTS (Http Strict Transport Security) Sites with Burp
- Testing HSTS-protected Sites Using Burp
- OWASP - HTTP Strict Transport Security
- Wikipedia - HTTP Strict Transport Security
- Installing Burp's CA Certificate
- Installing Burp's CA Certificate in your browser
Esto último es especialmente "molesto" a la hora de utilizar un proxy como Burp o ZAP para auditar una web, ya que evidentemente el certificado intermedio no es válido y no puedes "navegar" por el site. Por lo tanto si una aplicación web utiliza HSTS nos toparemos con esto:
Para evitar ésto tenemos dos opciones:
- usar un navegador obsoleto que no soporte HSTS para lo cual seguramente tendremos que jugar con el 'User agent' y podremos tener algunas incompatibilidades. A continuación se muestra la lista de las versiones mínimas de los principales navegadores que lo soportan:
- Chromium y Google Chrome desde la versión 4.0.211.0
- Firefox desde la versión 4; con Firefox 17, Mozilla integra una lista de sitios webs que soportan HSTS
- Opera desde la versión 12
- Safari en OS X Mavericks
- Internet Explorer 11 en Windows 8.1 y Windows 7 cuando se instale KB 3058515 (lanzado en junio de 2015 con Windows Update)
- Microsoft Edge e Internet Explorer 11 en Windows 10
- instalar el certificado raíz CA de Burp para que nuestro navegador confíe en el certificado. Por defecto, cuando navegamos mediante Burp por un sitio mediante HTTPS, el Proxy genera un certificado SSL para cada host, firmado por su propia CA. El certificado CA es generado la primera vez que se ejecuta Burp, así que si lo instaláis como confiable tenéis que tener cuidado que no accedan a vuestro equipo y os roben la clave privada. Tenéis las instrucciones para cada navegador en la página de Portswigger.
En mi caso que uso Firefox es tan sencillo como ir a la URL http://burp/ teniendo el proxy configurado e importar del certificado:
Y ya está, así de simple. Ya podemos seguir auditando la aplicación web... ;)
Fuentes:
- Pen-testing HSTS (Http Strict Transport Security) Sites with Burp
- Testing HSTS-protected Sites Using Burp
- OWASP - HTTP Strict Transport Security
- Wikipedia - HTTP Strict Transport Security
- Installing Burp's CA Certificate
- Installing Burp's CA Certificate in your browser
OMG :3 thanks :v
ResponderEliminar