Los Caballeros

"Sobre seguridad, programación, modding, frikismo, etc... "

FHTTP + Shodan = Proxy List :P

Twitter icon Twitter icon
Cazando proxy list con Shodan y FHTTP

Primero necesitamos agregar el soporte para shodan:

https://sourceforge.net/projects/fhttp/files/Extra/

se bajan los modulos en la carpeta del FHTTP y esa es toda la instalacion.

Tambien tenemos un ejemplo usando ese modulo:

http://sourceforge.net/projects/fhttp/files/Extra/Examples%20-%20Shodan/finder.pl/download

Vamos a usar ese script.
Pero antes vamos a explicar un poco el funcionamiento, no del modulo de shodan, del script.

Inicializamos:
my $shodan = shodan->new();

$shodan->login($user,$password);


como tal no es necesario logearse, pero lo hacemos para que de mas resultados (mas de 1 pagina).

y buscamos:
my @tmpenlaces = $shodan->buscar($busqueda,$page);



$page es el numero de pagina que queremos que nos retorne.

($proto,$host,$hostheader,$path,$puerto) = &tools::parseurl($enlace);

$sock = IO::Socket::INET->new(PeerAddr => $host,
PeerPort => $puerto,
Timeout => 1,
Proto => 'tcp');
if(!$sock) {
$i = 2;
$down++;
next;
}

Parseamos los enlaces y armamos un socket, en caso de que falle lo registramos como "caido".

$maketunnel = tools::maketunnel($sock,$hosttest,$porttest,0,0);

Nota: los dos ultimos valores son: debug (0 o 1) y version (version de HTTP)

Intentamos crear un tunnel HTTP (mediante "CONNECT"), tools lo hace todo automatico para nosotros ;)... $maketunnel sera 1 si se creo correctamente, 0 si no y 2 si hay un 404 (que esta tomando CONNECT como GET y puede ser un honneypot :P).

De otro modo cerramos el socket, no nos sirve bajarnos a ese nivel para probar un proxy normal.

$paquete = http->new("GET","http://".$hosttest.(($puerto != 80 ) ? (":".$puerto) : "")."/","1.1");

$paquete->agregarencabezados(0,@encabezados);
my %resp = $paquete->enviar($host,$puerto);


Usamos el generador de peticiones (http.pm) y finalmente lo demas es cosa de checar los encabezados/contenido y determinar si el proxy hizo la conexion correctamente (para eso se usa el argumento regex).


Ahora a jugar...

linux-7nli:/home/xianur0/fhttp-v1.3 # perl finder.pl squid "" "" google.com 80 Google

Comprobando dependencias...
Felicidades: FHTTP funcionando al 100%!
Tunnel: google.com:80
Target: 9
[x] No se puede crear el tunnel: HTTP/1.0 403 Forbidden!
[x] No se puede crear el tunnel: HTTP/1.0 403 Forbidden!
[!] Proxy HTTP: 209.xxx.1x1.xxx:xx
[x] No se puede crear el tunnel: HTTP/1.0 400 Bad Request!
[x] No se puede crear el tunnel: HTTP/1.0 400 Bad Request!
[!] Proxy HTTP: 222.xxx.1x1.xxx:xxx
[x] No se puede crear el tunnel: HTTP/1.1 501 Not Implemented!
[x] No se puede crear el tunnel: HTTP/1.1 501 Not Implemented!
[x] No se puede crear el tunnel: HTTP/1.0 403 Forbidden!
[x] No se puede crear el tunnel: HTTP/1.0 403 Forbidden!
[!] Proxy HTTP: 189.xxx.x68.xxx:xxx
[x] No se puede crear el tunnel: HTTP/1.0 403 Forbidden!
[x] No se puede crear el tunnel: HTTP/1.0 403 Forbidden!
[!] Proxy HTTP: 186.xxx.2x2.xxx:xxx
[x] No se puede crear el tunnel: HTTP/1.0 407 Proxy Authentication Required!
[x] No se puede crear el tunnel: HTTP/1.0 407 Proxy Authentication Required!
[x] No se puede crear el tunnel: HTTP/1.0 403 Forbidden!
[x] No se puede crear el tunnel: HTTP/1.0 403 Forbidden!
[!] Proxy HTTP: 203.xxx.1x9.xxx:xxx
[x] No se puede crear el tunnel: HTTP/1.0 403 Forbidden!
[x] No se puede crear el tunnel: HTTP/1.0 403 Forbidden!
[!] Proxy HTTP: 202.xxx.17x.xxx:xxx
[x] No se puede crear el tunnel: HTTP/1.0 403 Forbidden!
[x] No se puede crear el tunnel: HTTP/1.0 403 Forbidden!
[!] Proxy HTTP: 186.xxx.15x.xxx:xxx
Down: 1
Honeypot: 0
CONNECT: 0
Others: 7

1 comentario:

El Kisin dijo...

Ingenioso, felicidades y gracias por compartir.