XUT_ / COURSES / PENETRATION TESTER

A Classic Example - Crashing the Server

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 Training en 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. A Classic Example - Crashing the Server
  • Notamos que el archivo url.php está 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. A Classic Example - Crashing the Server
  • Ahora que sabemos que el servidor es vulnerable a SSRF básica, exploremos el código de url.php para 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
<?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.php carga una imagen. Si el tamaño de la imagen supera los 100KB, 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 en http://hrms.thm/url.php?id=192.168.2.10/bigImage.jpg. A Classic Example - Crashing the Server