XUT_ / COURSES / PENETRATION TESTER

Bad Regex in Origin

Malas Expresiones Regulares en Origen

Explotar bad regex en CORS origin es una técnica que involucra aprovecharse de los patrones de regex pobres usados por las aplicaciones web para validar el CORS. Por ejemplo, el código de http://corssop.thm/badregex.php:

php
if (isset($_SERVER['HTTP_ORIGIN']) && preg_match('#corssop.thm#', $_SERVER['HTTP_ORIGIN'])) {
    header("Access-Control-Allow-Origin: ".$_SERVER['HTTP_ORIGIN']."");
    header('Access-Control-Allow-Credentials: true');
}

Este código implementa una política CORS débil ya que valida dominios que contienen corssop.thm. Un atacante puede usar un origen como http://corssop.thm.evilcors.thm, el cual coincide con la regex.

Bad Regex in Origin

Podemos reutilizar el código de exploit usado antes para explotar el código vulnerable de arriba. Simplemente cambia el objetivo URL a http://corssop.thm/badregex.php. El código de exploit puede bypassear el CORS ya que está hosteado en http://corssop.thmevilcors.thm.

Bad Regex in Origin

Una vez hecho haz click en Save. Para verificar que funciona haz click en View exploit. Esto abrirá una nueva pestaña que contenga el código de exploit guardado en el servidor.

En la pestaña nueva, abre las herramientas de desarrollador y ve a Network. Debería haber dos conexiones XHR. La primera petición es mandada al sitio web objetivo (badregex.php), mientras que la segunda se manda al servidor exfiltrante.

Bad Regex in Origin

Ahora puedes darle a Send to victim.

Para comprobar si ha funcionado, comprueba los logs haciendo click en el botón Logs.

Bad Regex in Origin

En el servidor deberías recibir una petición POST con los datos de la víctima, abre data.txt:

Bad Regex in Origin

Esto es lo que ocurre:

Bad Regex in Origin