#!/usr/bin/perl # Hackers Venezuela http://www.hven.com.ve # HV-CF ColdFusion Bug Scanner # By DoctorX email: d0ct0r_x@hven.com.ve 10/06/99 # # Nota : Este Programa fue hecho con fines educativos no me hago responsable # de el uso que se le de a este programa. # # Gracias a: Kliber ....................... Hot Dog Manager :-) # darkdeath ....................... lainus Man :-P # DunkelSeite ....................... SuperWebMan alias Ulcera # LabX ....................... El Saco de los Exploits # Kliberlandia ....................... HV-ZONE # HVLAN ....................... The Battle Zone # Drake ....................... LaQuemazon # Cyber_Optik ....................... ThiaZhino use Socket; # Creacion de Mensajes de Presentacion $linea = " ===================================================\n"; $mem1 = " Hackers Venezuela http://www.hven.com.ve\n"; $mem2 = " HV-CF ColdFusion Bug Scanner 07/06/99\n"; $mem3 = " by DoctorX email: d0ct0r_x\@\hven.com.ve\n"; # Puerto HTTP $port = 80; # Lista de Maquinas a scannear $archivo = $ARGV[0]; # Pregunto si se pasaron Parametros if($ARGV[0] eq $ARGV[1]){ # Generacion de Mensaje de Uso print $linea ; print $mem1; print $mem2; print $mem3; print $linea ; print " uso : perl hv-cf lista_de_victimas \n"; print $linea ; exit;} # Lectura de ips/hostnames desde la Lista de Hosts open (LISTA,"$archivo"); $count = 0 ; while ($entrada = <LISTA>){ chop $entrada; $count++; @nombres[$count] = $entrada ; } # Cierro lista de Hosts close(LISTA); # Inicio de Busqueda # Mensaje Inicial print $linea; print $mem1; print $mem2; print $mem3; print $linea; print " Cantidad de Hosts : $count\n"; print " Iniciando Busqueda ......!\n"; print $linea; # Definicion de Arreglos de Vulnerabilidades y Mensajes @vulnerable = ( "GET /cfdocs/expeval/openfile.cfm HTTP/1.0\n\n", "GET /cfdocs/expeval/displayopenedfile.cfm HTTP/1.0\n\n","GET /cfdocs/expeval/exprcalc.cfm HTTP/1.0\n\n"); @vulX = ( "/cfdocs/expeval/openfile.cfm", "/cfdocs/expeval/displayopenedfile.cfm", "/cfdocs/expeval/exprcalc.cfm"); $y = 1; while ($y < $count+1){ # Asignacion de Victima de Turno !!!!!!!!! $labx = $nombres[$y]; for ($z=0;$z<3;$z++){ # Vulnerabilidad a Probar $vul = @vulnerable[$z]; # Abriendo Conexion con Victima $NETFD = &makeconn($labx, $port); # Envio la Vulnerabilidad al Hosts send($NETFD,$vul,0); # Lectura de Respuesta del Host sysread $NETFD, $message,50 or die "error No se Puede Leer Socket:$!"; # Desglozado de la Respuesta del Hosts ($verga,$loca,$yoyo) = split(/ /,$message); # Interpretacion de la Respuesta del Hosts if($loca eq "400"){ print " Host : $labx Vulnerable a @vulX[$z]\n";} if($loca eq "404"){ print " Host : $labx No Vulnerable \n";} # Cierro Coneccion close $NETFD; } # Incremento para leer otro Hosts $y++; print $linea; } # Aca Ocurre la Magia de la Coneccion sub makeconn { # Definicion de Variables Privadas my ($loco, $portname, $server, $pt,$pts, $proto, $servaddr); # $loco ============> hosts a examinar # $pt ============> puerto al que se realizara la Coneccion $loco = $_[0]; $pt = $_[1]; # Resolviendo el Nombre $server = gethostbyname($loco) or die " $! \n"; # Verificando servicio del puerto $pts = getservbyport($pt, 'tcp') or die "cannot get port : $!"; # Verifico Protocolo $proto = getprotobyname('tcp') or die " : $!"; $servaddr = sockaddr_in($pt, $server); socket(CONNFD, PF_INET, SOCK_STREAM, $proto); connect(CONNFD, $servaddr) or die "connect : $!"; return CONNFD; }