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
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.
www.sitio.com/descarga.php?ruta=/pdf/1.pdf
www.sitio.com/documentos/descarga.php?ruta=31337www.sitio.com/documentos/descarga.php?ruta=www.sitio.com/documentos/descarga.php?ruta[]=
Warning: fopen(31337) [function.fopen]: failed to open stream: No such file or directory in /var/www/html/documentos/descarga.php on line 9
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=
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])
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 |
Quien dijo que era un simple error??? El Limite lo impones tu 🙂
Bonito artículo entonces tu idea sería
explotar una vulnerabilidad en base a otra vulnerabilidad
en palabras más sencillas no?… Saludos