Un atacante podría abusar SSRF crasheando el servidor o creando una DoS a otros hosts. Hay muchas instancias (WordPress, CairoSVG) donde los atacantes cortan la disponibilidad de un sistema lanzando ataques SSRF.
Crasheando el Servidor
En esta demostración SSRF vamos a ilustrar cómo un atacante puede explotar una aplicación web para causar una denegación de servicio en el servidor. En nuestro escenario, la vulnerabilidad se explota dando una URL maliciosa que apunta al recurso que al ser accedido por el servidor, lleva a un consumo de recursos excesivos o dispara un crasheo.
Por ejemplo, el atacante puede introducir una URL que apunta a un gran archivo en un servidor lento o servicio que responde con una carga abrumadora de información. Cuando la aplicación vulnerable accede a esta URL, entra en una acción que consume todos sus recursos, conllevando lentitud o crash.
Cómo Funciona
- Una vez que nos logueamos en la dashboard, veremos una pestaña llamada
Trainingen la barra de navegación, que es usada para cargar el contenido de entrenamiento para los empleados. - Una vez que clickemos en esa pestaña, veremos que nos redirigue a
http://hrms.thm/url.php?id=192.168.2.10/trainingbanner.jpg.
- Notamos que el archivo
url.phpestá cargando contenido externo mostrado aquí. ¿Qué pasa si intentamos cargar otro contenido? - Intenta abrir el archivo
http://hrms.thm/url.php?id=10.10.10.10.
- Ahora que sabemos que el servidor es vulnerable a SSRF básica, exploremos el código de
url.phppara hacer que crashee el servidor. - Una vez que accedemos a la URL
http://hrms/?url=localhost/url, veremos el siguiente código en el footer (sólo funciona si el usuario no está logueado).
<?php .... .... if ($imageSize < 100) { // Output the image if it's within the size limit $base64Image = downloadAndEncodeImage($imageUrl); echo '<img src="' . htmlspecialchars($base64Image) . '" alt="Image" style="width: 100%; height: 100%; object-fit: cover;">'; } else { // Memory Outage - server will crash .... ...
- El código de arriba muestra que
url.phpcarga una imagen. Si el tamaño de la imagen supera los100KB, muestra un mensaje de falta de memoria. - Trataremos de crashear el servidor cargando una imagen mayor que
100KB. Para tu conveniencia, ya hemos puesto esa imagen enhttp://hrms.thm/url.php?id=192.168.2.10/bigImage.jpg.
