Que tecnicas o vulnerabilidades usan fallas en conjunto?

 

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:
Rotundamente se descargara el pdf de forma bonita y sin ningun problema…Pero que pasa si ponemos una ruta invalida?
Ejemplo:
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: http://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!

NOTA: Fuente

Nuestro Resultado seria:?

1
2
3
4
5
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

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: