Авторские статьи Пишем крякер интернета

Discussion in 'Статьи' started by Gh0s7, 30 Nov 2006.

  1. Gh0s7

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

    Joined:
    23 Nov 2006
    Messages:
    160
    Likes Received:
    231
    Reputations:
    242
    Intro

    [Прошу каментить и оценивать]


    Почти каждый слышал про сервис domainsdb.net , а многие им пользовались.И им наверно знаком случай когда требуется проверить большое кол-во хостов на предмет наличия всяких потенциально дырявых скриптов (гостевые книги, форума, админки)
    nikto здесь использовать не выгодно, т.к. полное сканирование занимает достаточно много времени и проверять им 20 хостов никто не будет.В свое время NSD писал про атаку reverse ip lookup и даже написал небольшой скриптек для проверки хостов на наличие форумов phpbb :)
    Недавно мне пришлось вот так проверить n-ное кол-во хостов на наличие форумов и прочих интересностей.

    Inside.

    Я решил написать свой скрипт, mini-nikto так сказать.Для удобства решил сделать его полностью автоматизированым.
    Вот собственно код:

    Code:
    #!/usr/bin/perl -w
    
    use IO::Socket;
    use threads; 
    
    $ddb_user="Gh0sT___";
    $ddb_pass="look";
    $dbFiles="files.db";
    $_=$ARGV[0];
    
    sub usage() { print "[x] usage: $0 [host]\n"; exit 1;}
    sub invalidHost() { print "[x] $ARGV[0] is invalid host\n"; exit 1;}
    sub invalidLogin() { print "[x] Login ($ddb_user) or pass is invalid\n"; exit 1;}
    sub connectionTimeout { print "[i] Connection to $_[0] timed out\n";}
    sub matchAns { return 1 if $_[0]=~m!200|401! ;}
    sub noFile { print "[x] No requred files found\n"; exit 1;}
    
    sub check {
    open($files,"<$dbFiles") or noFile();
    $ip=$_[0];
    #Checking files
      while (<$files>) {
    	chomp();
    	$somesock = new IO::Socket::INET (PeerAddr => "$ip", PeerPort => "80", PeerProto => "tcp", TimeOut => 10) or connectionTimeout($ip) and last;
    
    	$server_check ="GET $_ HTTP/1.1\n";
    	$server_check.="Host: $ip\n";
    	$server_check.="User-Agent: Smart Bot\n";
    	$server_check.="Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\n";
    	$server_check.="Accept-Language: en-us,en;q=0.5\n";
    	$server_check.="Accept-Encoding: gzip,deflate\n";
    	$server_check.="Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\n\n";
    
    	print $somesock $server_check;
    	sysread ($somesock, $ans, 20);
    	if (matchAns($ans) == 1) { print "
    [*][Files] Might be interesting: $ip$_\n"}
    	close $somesock;
      }
    
    close $files;	
      }
    
    usage() unless $ARGV[0];
    
    print "..:: Simple InetCrack by Gh0s7 ::..\n";
    
    nvalidHost() unless /\d{1,3}\.\d{1,3}.\d{1,3}.\d{1,3}/ or /\w+\.[com|ru|net|biz|org|info]/i;
    
    print "
    [*] Getting Ip...";
    my $h_sock = new IO::Socket::INET (PeerAddr => "domainsdb.net", PeerPort => "80", PeerProto => "tcp");
    
    $len = length("d=$_&x=&y=");
    $req = "POST /$_ HTTP/1.1\n";
    $req.= "Host: domainsdb.net\n";
    $req.= "Cookie: pass=$ddb_pass; user=$ddb_user\n";
    $req.= "User-Agent: inetcracker\n";
    $req.= "Content-Length: $len\n";
    $req.= "\nd=$_&x=&y=";
    
    print $h_sock $req;
    
    while (<$h_sock>) {
      if (/there are <a href\=\"\/.{1,20}/) {
    	@res=split (/\"/, $&);
    	$_=$res[1];
    	s/\///;
    	$ip = $_;
    	last;
      }
    }
    print "$ip\n";
    print "
    [*] Starting lookup\n";
    
    close $h_sock;
    $h_sock = new IO::Socket::INET (PeerAddr => "domainsdb.net", PeerPort => "80", PeerProto => "tcp");
    
    $req = "GET /$ip HTTP/1.1\n";
    $req.= "Host: domainsdb.net\n";
    $req.= "Cookie: pass=$ddb_pass; user=$ddb_user\n";
    $req.= "User-Agent: inetcracker\n\n";
    $i=0;
    
    #<tr><td>1. </td><td><b><a href="http://host.net/"
    print $h_sock $req;
    while (<$h_sock>) {
      if (m!.{8}[0-9]{1,3}.{16,18} href\=\".{4,25}\"!) {
    	@res=split (/\"/, $&);
    	next if $res[1]=~m!/whois/!;
    	@cut2=split (/\//, $res[1]);
    	$host[$i] = $cut2[2];
    	$i++;
      }
      invalidLogin() if /Domains list is limited to 3/;
    }
    
    
    print "
    [*] Lookup finished\n";
    print "
    [*] Found $i hosts\n";
    
    exit unless $i;
    
    foreach (@host) {threads->create(\&check,$_)->detach}
    
    print "
    [*] Waiting for childs\n";
    sleep 200;
    print "
    [*] Finished\n";
    [/i]
    Вот файл files.db:

    Code:
    /postnuke/
    /postnuke/html/
    /modules/
    /phpBB/
    /forum/
    /forums/
    /members/
    /porn/
    /restricted/
    /xxx/
    /cgi.cgi/
    /webcgi/
    /cgi-914/
    /cgi-915/
    /bin/
    /cgi/
    /mpcgi/
    /cgi-bin/
    /ows-bin/
    /cgi-sys/
    /cgi-local/
    /htbin/
    /cgibin/
    /cgis/
    /scripts/
    /cgi-win/
    /fcgi-bin/
    /cgi-exe/
    /cgi-home/
    /cgi-perl/
    /admin/
    /clients/
    /pass/
    /password/
    /passwords/
    /store/
    /users/
    /access/
    /members/
    /private/
    /ccbill/
    /dmr/
    /mastergate/
    /dmr/
    /epoch/
    /netbilling/
    /webcash/
    /wwwjoin/
    /etc/security/
    /admins
    /clients
    /pass
    /password
    /passwords
    /passwd
    /passwd.adjunct
    /store
    /users
    /.htpasswd
    /.passwd
    /robots.txt
    /phpmyadmin/
    /myphpadmin/
    /sqladmin/
    
    Используем так:

    perl /path/to/script [host],
    Где [host] - собственно хост для проверки.

    Outro


    Этот мне скрипт реально помог при взломе одного сервера.Надеюсь он поможет о остальным.Отдельное спасибо KSURi за доку по потокам на перле.

    Этот код и статья особо не претендуют на какую-то оригинальность или новизну, просто релиз от меня.

     
    #1 Gh0s7, 30 Nov 2006
    Last edited: 30 Nov 2006
    18 people like this.
  2. Gh0s7

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

    Joined:
    23 Nov 2006
    Messages:
    160
    Likes Received:
    231
    Reputations:
    242
    Если кому-то интересна эта тулза - прошу отписаться, возможно будут новые версии.
     
    2 people like this.
  3. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    Code:
    print "..:: Simple InetCrack by Gh0s7 ::..\n";
    
    nvalidHost() unless /\d{1,3}\.\d{1,3}.\d{1,3}.\d{1,3}/ or /\w+\.[com|ru|net|biz|org|info]/i;
    
    Очепятка =/

    Идея конечно не нова, но исполенение мне нравится)
    Тока надо расширить базу... Распотраши тот-же "никто" например...
    Я у тебя кое-что позаимствую наверное, если ты не против)
     
  4. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    там ошибка вылазит, если домен >1 уровня..
     
  5. ~Real F@ck!~

    ~Real F@ck!~ Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    283
    Likes Received:
    170
    Reputations:
    -8
    Digimortal спасиб....
    _Great_ не указывай где мне постить, я просто попросил проветь этот сплоит на этом серваке и все.... я не просил его ломать или что то ещё!
     
  6. TreniX

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

    Joined:
    27 May 2006
    Messages:
    19
    Likes Received:
    25
    Reputations:
    26
    Ето не сплоит! ;)
     
  7. ~Real F@ck!~

    ~Real F@ck!~ Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    283
    Likes Received:
    170
    Reputations:
    -8
    TreniX хз, почему же это не сплоит? Написан на перле и выполняет функцию сплоита! =)
     
  8. TreniX

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

    Joined:
    27 May 2006
    Messages:
    19
    Likes Received:
    25
    Reputations:
    26
    Он сканирует хост на наличие директорий!! тех что в втором файле! Перл ето не обезательно сплойты! :p
     
  9. ~Real F@ck!~

    ~Real F@ck!~ Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    283
    Likes Received:
    170
    Reputations:
    -8
    TreniX я знаю что перл это не обязательно сплоит, но просто сплоиты практически всегда пишут на php или perl.
     
  10. Gh0s7

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

    Joined:
    23 Nov 2006
    Messages:
    160
    Likes Received:
    231
    Reputations:
    242
    KSURi: удивись, база нагло с3.14зжена у никто :)
    Не вся, конечно, но большИе фрагменты именно оттуда.
    На тему заимствования: бери конечно, гпл рулит, только если кусок большой, ориг. автора укажи :)
     
    1 person likes this.
  11. Gh0s7

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

    Joined:
    23 Nov 2006
    Messages:
    160
    Likes Received:
    231
    Reputations:
    242
    Покажи мне 20 сплойтов на пхп за последний месяц :)

    Тогда уж перл и си, пхп редко, питон еще реже.
     
    1 person likes this.
  12. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    Gh0s7 я по другому немного реализовал)
    Но все равно спасибо, реализация мне нравится, развивай ее.
    Со временем получится неплохой сканер.
     
  13. 2Fed123

    2Fed123 Banned

    Joined:
    26 Feb 2009
    Messages:
    56
    Likes Received:
    5
    Reputations:
    0
    Сейчас этот скрипт неработает т.к. DomainsDB умер.
    Есть ли какой-нибудь аналог или пожалуста подправьте его,я пробовал-неполучилось.