24/4/13

USBsploit

  Hoy en la facultad, al terminar la clase, el profesor pregunto quien tenia un pendrive, tenia un powerpoint que quiera pasarnos y necesitaba que alguno de la clase conectara su pendrive a la netbook del profesor y asi repartir la presentacion al resto de la clase.
  Yo no tenia ninguno a mano, por suerte muchos compañeros tenian pendrives a mano y los conectaron descargaron el archivo y se lo iban a pasar al resto que no teniamos, en ese momento me acorde que hace tiempo, yo habia programado gracias a un tutorial en internet, un flashdrive que robaba archivos guardados en la pc, como contraseñas de internet explorer, messenger, numeros de serie de ciertos programas etc. Imaginen tener acceso a la pc del profesor, y no solo eso sino seguir infectando los demas dispositivos que se contacten, otros usbs que se conecten, etc etc.
  Se que para XP tambien aprovechando el autorun se podian infectar con malwares, pero la tecnologia avanzo y supongo que aparecieron nuevas tecnicas, y asi fue como descubri USBsploit framework, que puede utilizarse con Metasploit framework. la mayoria de la informacion que encontre esta en Frances o Ingles, pero los videos se entienden.

 USBsploit trabaja  a travez de sesiones Meterpreter, y genera backdoors "reverse_tcp".

Algunas de las opciones a elegir:

- Crear un Backdoor
- Crear un LNK y Autorun.inf.
- Crear un PDF y un Autorun.inf.
- Crear un Backdoor y lanzar un listener multicontrolador para ataques de descarga USB.
- Crear un Backdoor, un autorun.inf y lanzar un listener multicontrolador para el Auto USB Run&Play / infeccion .EXE
- Crear un Backdoor, LNK, autorun.inf y lanzar un listener multicontrolador para el Auto USB Run&Play / infeccion LNK.
- Crear un Backdoor, un PDF, autorun.inf y lanzar un listener multicontrolador para el Auto USB Run&Play / infeccion PDF.
- Crear un Backdoor, autorun.inf y lanzar un listener multicontrolador para el Auto USB Run&Play / infeccion .EXE y el Ataque de descarga USB.
- Crear un Backdoor, LNK, autorun.inf y lanzar un listener multicontrolador para el Auto USB Run&Play / infeccion LNKy ek Ataque de descarga USB.

y Muchos otros mas. Aca un video de muestra.

https://www.youtube.com/watch?v=4lHBiiXkb0I&index=10&list=PL0B0105555D72B51D


Solo hace falta instalar el paquete que lo descargamos de aca http://usbsploit-0.6-beta-linux-i686.tar.gz/

Para mas informacion: http://secuobs.com/sommaires/USBsploit.html

23/4/13

POSIBLES INYECCIONES SQL EN HEADERS HTTP

Hoy leyendo un poco me encontre con un viejo blog que tenia sobre seguridad informatica, donde habia informacion que yo habia traducido un tiempo atras 2008. Obviamente a la fecha se fue perfeccionando (no mucho) asi que continue la investigacion y las traducciones de algunos textos en ingles y llegamos a esto.

Posibles inyecciones SQL en Headers HTTP
Campos en Headers HTTP

Los campos en los Headers HTTP forman parte de las solicitudes y respuestas en el Protocolo de transferencia de hipertexto (HTTP). En ellos se definen los parámetros del funcionamiento de una transacción HTTP.

Ejemplo: Request HTTP

GET / HTTP/1.1
Connection: Keep-Alive
Keep-Alive: 300
Accept:*/*
Host: host
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16 ( .NET CLR 3.5.30729; .NET4.0E)
Cookie: guest_id=v1%3A1328019064; pid=v1%3A1328839311134


Podemos considerar las cookies HTTP, cuando se almacenan en bases de datos para la identificación de las sesiones, como las primeras posibles variables HTTP a probar. Veremos a continuación un ejemplo de una inyección SQL en base a una Cookie. También hay otros Headers HTTP relacionadas con la aplicación.

X-Forwarded-For

X-Forwarded-For es un campo del Header HTTP considerado como un estandar por defecto para la identificacion de la dirección IP de origen de un cliente, que se conecta a un servidor web a través de un proxy HTTP.

Ejemplo de este error en base a un envío de formulario.

$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 del login esta correctamente controlada gracias al metodo sanitize()

function sanitize($param){ if (is_numeric($param)) { return $param; } else { return mysql_real_escape_string($param); } }

Inspeccionemos la variable ip. Se asigna la salida con el método 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 extrae del campo X_FORWARDED_FOR del Header HTTP. Esta, luego es controlada por el preg_match que verifica si este parámetro posee al menos una dirección IP. Como se puede ver, la variable HTTP_X_FORWARDED_FOR, no es verificada apropiadamente cuando su valor se utilice en la consulta SQL. Esto puede llevar a ejecutar cualquier consulta SQL inyectando un código SQL arbitrario en este campo.
La simple modificación de este campo del header a algo así:

GET /index.php HTTP/1.1
Host: [host]
X_FORWARDED_FOR :127.0.0.1' or 1=1


Nos permite el saltarnos el control de autentificación.

User-agent

El User-Agent es un campo del HTTP Header. Cuando un usuario accede a un sitio web, la aplicación generalmente envía una cadena de texto que identifica al User-Agent ante el servidor. Este texto forma parte del pedido a través de HTTP, llevando como prefijo User-agent: o User-Agent: y generalmente incluye información como el nombre de la aplicación, la versión, el sistema operativo, y el idioma. Esto es para fines estadísticos y el rastreo de las violaciones de protocolo. Por eso debe incluirse.
Las aplicaciones capturan los datos del user-agent y los almacenan (por ejemplo: carrito de compras) para hacer uso de estos, vale la pena investigar el header del User-Agent para ver si encontramos algún problema.

Consulta HTTP de Ejemplo:

GET / index.php HTTP/1.1
Host: [host]
User-Agent: aaa "o 1 / *


Referer

El Referer es otro Header HTTP que puede ser vulnerable a la inyección SQL cuando la aplicación lo almacena en bases de datos sin una verificación apropiada. Es un campo del Header opcional, que permite al cliente especificar, para beneficio del servidor, la dirección (URI) del documento (o elemento dentro del documento) de la que se obtuvo la URI de la solicitud. Esto permite al servidor generar listas de los enlaces documentos.

Ejemplo:

GET / index.php HTTP/1.1
Host: [host]
User-Agent: aaa "o 1 / *
Referer: http://www.loquesea.com