Cuando realizamos pruebas de variables en una aplicacion web en busca de vulnerabilidades del tipo SQLI o Blind SQLI
nos limitamos a testearla solo mediante peticiones GET y POST pero nos
olvidamos o desconocemos de otros parametros que pueden ser inyectados
para obtener un lindo error de la DB que nos permita meterle jeringa
hasta sacarle jugo a toda la informacion posible.
Posibles encabezados HTTP para inyecciones SQL
Los campos de la cabecera HTTP
Vamos a ver un ejemplo de esta falla
La simple modificación de este campo de encabezado a algo así como :}
O usando alguna herramienta de automatizacion como Sqlmap
Espero que les haya servido muchachos! saludos!
Fuente:http://underterminal.nixiweb.com
¿Y los parametros de una cabecera HTTP? ¿no son inyectables?
Este es un analisis que se realizo usando
varios scaneres de aplicaciones web de codigo abierto y comerciales,
como se puede distinguir, el 75% de estas herramientas no pudo
encontrar una vulnerabilidad en los encabezados HTTP, por otro lado el
70% de estos scaneres no inspecciona las cookies. Generalmente y si no
me queda mas que indagar en las cabeceras trato de buscar este tipo de
vulns a mano limpia, como deberia hacerse con todo
Los campos de la cabecera HTTP
X-Forwarded-For
X-Forwarded-For es un campo de encabezado HTTP para la identificación de la dirección IP de origen de un cliente que se conecta a un servidor web a través de un proxy HTTP o un equilibrador de carga.Vamos a ver un ejemplo de esta falla
$req = mysql_query("SELECT user,password FROM admins WHERE user='".sanitize($_POST['user'])."' AND password='".md5($_POST['password'])."' AND ip_adr='".ip_adr()."'");
La variable login es controlada por la funcion sanitize()function sanitize($param){ if (is_numeric($param)) { return $param; } else { return mysql_real_escape_string($param); } }
Vamos a inspeccionar la variable ip controlada por la funcion ip_addr()function ip_adr() { if
(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{ $ip_adr = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip_adr =
$_SERVER["REMOTE_ADDR"]; } if (preg_match("#^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}#",$ip_addr)) { return $ip_adr; } else { return $_SERVER["REMOTE_ADDR"]; }
Obviamente, la dirección IP se obtiene del parametro X_FORWARDED_FOR. Luego es controlado por preg_match que verifica si el valor corresponde a una dirección IP
la variable HTTP_X_FORWARDED_FOR no es verificada
apropiadamente antes de su valor que se utiliza en la consulta SQL. Esto
puede llevar a ejecutar cualquier consulta SQL mediante la inyección de
código SQL arbitrario en este campo.
La simple modificación de este campo de encabezado a algo así como :}
GET /index.php HTTP/1.1
X_FORWARDED_FOR :127.0.0.1' or 1=1#
User-Agent
Tambien podemos hacer uso de este parametro para verificarGET /index.php HTTP/1.1
User-Agent: aaa' or 1/*
Referer
GET /index.php HTTP/1.1
Host: [host] |
User-Agent: aaa' or 1/* |
Referer: http://underterminal.nixiweb.com
Cookie
Podemos testear el parametro cookie manualmente complementando algun addon en el navegador que nos permita hacer esto, como Cookies Manager+ o el Tamper Data, asi inyectamos una sqli en el campo content.O usando alguna herramienta de automatizacion como Sqlmap
Espero que les haya servido muchachos! saludos!
Fuente:http://underterminal.nixiweb.com
No hay comentarios:
Publicar un comentario