Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   Пишем крякер интернета (https://forum.antichat.xyz/showthread.php?t=28226)

Gh0s7 30.11.2006 02:58

Пишем крякер интернета
 
Intro

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


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

Inside.

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

Код:

#!/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 " 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";

Вот файл files.db:

Код:

/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 за доку по потокам на перле.

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


Gh0s7 30.11.2006 16:26

Если кому-то интересна эта тулза - прошу отписаться, возможно будут новые версии.

KSURi 30.11.2006 17:03

Код:

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;

Очепятка =/

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

Digimortal 30.11.2006 17:20

там ошибка вылазит, если домен >1 уровня..

~Real F@ck!~ 30.11.2006 17:22

Digimortal спасиб....
_Great_ не указывай где мне постить, я просто попросил проветь этот сплоит на этом серваке и все.... я не просил его ломать или что то ещё!

TreniX 30.11.2006 17:23

Цитата:

Сообщение от ~Real F@ck!~
Digimortal спасиб....
_Great_ не указывай где мне постить, я просто попросил проветь этот сплоит на этом серваке и все.... я не просил его ломать или что то ещё!

Ето не сплоит! ;)

~Real F@ck!~ 30.11.2006 17:25

TreniX хз, почему же это не сплоит? Написан на перле и выполняет функцию сплоита! =)

TreniX 30.11.2006 17:27

Цитата:

Сообщение от ~Real F@ck!~
TreniX хз, почему же это не сплоит? Написан на перле и выполняет функцию сплоита! =)

Он сканирует хост на наличие директорий!! тех что в втором файле! Перл ето не обезательно сплойты! :p

~Real F@ck!~ 30.11.2006 17:29

TreniX я знаю что перл это не обязательно сплоит, но просто сплоиты практически всегда пишут на php или perl.

Gh0s7 30.11.2006 17:32

KSURi: удивись, база нагло с3.14зжена у никто :)
Не вся, конечно, но большИе фрагменты именно оттуда.
На тему заимствования: бери конечно, гпл рулит, только если кусок большой, ориг. автора укажи :)


Время: 03:19