Security Teams



» ДРУЗЬЯ: ::: Protocols.Ru ::: Grudina.INFO ::: Damage Lab ::: Securityvulns.RU ::: .:[KZ TeaM]:. ::: X-Hack Team ::: Hack-Lab ::: ALP.org.ua :::
  Ответ в темуСоздание новой темы

> Mail.Ru Hacker (Ex-0day), (c) drmist
drmist
Дата 30.07.2007 - 06:20
Цитировать сообщение
Offline



Professional
*****

Профиль
Группа: -users-
Сообщений: 1165
Пользователь №: 222
Регистрация: 14.04.2005



Рейтинг:
(0%) -----


"Эксплоит" для сбора адресов на mail.ru. За ночь можно собрать пол ляма валидных e-mail'ов, но трафик жрется с офигенной силой, так что настоятельно рекомендуется иметь анлим.

Скрипт можно запустить несколько раз - потоки управляются через MySQL сервер.
Скрипт:
Код
#! /usr/bin/perl

# hack_mail.ru.pl
# (c) drmist/STNC 2007
# web: www.security-teams.net

use POSIX qw(setlocale strftime LC_TIME);
use MIME::Base64;
use IO::Socket;
use DBI;

$db_host = "localhost";
$db_name = "mail_hack";
$db_user = "root";
$db_pass = "";

$proxy_host = "127.0.0.0.1";
$proxy_port = 8080;
$proxy_login = "root";
$proxy_pass = "";

@urls = ("http://otvet.mail.ru/question/--NUM--/", "http://soft.mail.ru/users_top.php?dlimit=--NUM--&full=1");

if((scalar(@ARGV) != 1)||(($ARGV[0] != 0)&&($ARGV[0] != 1))) {
 usage();
 exit;
}

setlocale(LC_TIME, "POSIX");

$target = $ARGV[0];
$url_mask = $urls[$target];
$start = 1 - $target;
$end = $target ? 237125 : 6981583;
$plus = $target ? 25 : 1;
$tbl = ($target ? "soft" : "otvet");

$db = DBI->connect("DBI:mysql:$db_name:$db_host", $db_user, $db_pass) or die "Error connecting to database";

print "\nAttacking $tbl.mail.ru ...\n";
$tbl .= "_last";

for(;;) {
 $db->do("LOCK TABLES $tbl WRITE");
 
 $st = $db->prepare("SELECT id FROM $tbl LIMIT 1");
 $st->execute();
 $st->bind_columns(undef, \$i);
 $st->fetch();
 
 $db->do("UPDATE $tbl SET id = id + $plus");
 $db->do("UNLOCK TABLES");
 
 if($i > $end) { last; }
 $page = 1;
 
 for(;;) {
   $url = $url_mask;
   $url =~ s/--NUM--/$i/;
if($page > 1) { $url .= "?pg=$page"; }

   print "\n[".strftime("%H:%M:%S %d/%m/%y", localtime())."] $url\n\n";
 
   $data = get($url);
   if(@found = ($data =~ /http\:\/\/www\.mail\.ru\/agent\?message\&to\=\*?([^\'\"]+)/g)) {
     $query = "";
     foreach $curr(@found) {
    if($curr =~ /\<\/a\>\<\/noindex\>/) { next; }
 $curr = del_end_dots($curr);
    print "$curr\n";
       if($query) { $query .= ", "; }
    $query .= "('$curr')";
     }
     $db->do("REPLACE mails VALUES ".$query);
   }

$page++;
unless(($target == 0)&&
  ($data =~ /\<a href=\"\/question\/$i\/\?pg\=$page\"\>/)) {
  last;
}
 }
}

$db->disconnect;

print "\nAll done\n";
exit;

#sub timeout() { close $sock; }

sub get() {
 local $url = $_[0];
 return $proxy_host ? proxy_get($url) : http_get($url);

}

sub http_get()
{
local $request = $_[0];
local $port = 80;
local $data = "";
local $sock;

if(local($server, $url) = $request =~ /^http\:\/\/([^\/]+)\/(.+)$/)
{
 if($server =~ /^([^\:]+)\:([0-9]{2,5})$/){ $server = $1; $port = $2; }

 $sock = IO::Socket::INET->new(
   PeerAddr => $server,
   PeerPort => $port,
   Proto => 'tcp',
   Type => SOCK_STREAM,
   TimeOut => $timeout
 ) or return 0; # connection failed
 
 print $sock "GET /$url HTTP/1.0\r\nHost: $server\r\n\r\n";
 
 #$SIG{ALRM} = \&timeout; alarm 10;
 while(<$sock>){ $data .= $_; }
 #alarm 0;
 close $sock;
}

return $data;
}

sub proxy_get()
{
 local $url = $_[0];
 local $data = "";
 local $sock = IO::Socket::INET->new(
   PeerAddr => $proxy_host,
   PeerPort => $proxy_port,
   Proto => 'tcp',
   Type => SOCK_STREAM,
   TimeOut => $timeout
 ) or return 0; # connection failed
 
 print $sock "GET $url HTTP/1.0\r\n";

 if($proxy_login) {
   print $sock "Proxy-Authorization: Basic ".encode_base64("$proxy_login:$proxy_pass")."\r\n"
 }
 
 print $sock "\r\n";
 
 while(<$sock>){ $data .= $_; }
 close $sock;

 return $data;
}

sub del_end_dots() {
 local $str = $_[0];
 local $len = length($str);

 while(($len > 0)&&(substr($str, $len - 1, 1) eq ".")) {
   $str = substr($str, 0, --$len);
 }

 return $str;
}

sub usage() {
 print "Usage: $0 <target>\n\n";
 print "Targets: \n";
 print "  0 - otvet.mail.ru\n";
 print "  1 - soft.mail.ru\n";
}


Код
CREATE TABLE `mails` (
 `email` varchar(64) NOT NULL,
 UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

CREATE TABLE `otvet_last` (
 `id` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

INSERT INTO `otvet_last` (`id`) VALUES
(1);

CREATE TABLE `video_last` (
 `id` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

INSERT INTO `video_last` (`id`) VALUES
(1);


--------------------
Когда нельзя еще больше хочется...
PMСайт пользователя
Top
drmist
Дата 30.07.2007 - 07:00
Цитировать сообщение
Offline



Professional
*****

Профиль
Группа: -users-
Сообщений: 1165
Пользователь №: 222
Регистрация: 14.04.2005



Рейтинг:
(0%) -----


https://otvet.mail.ru/question/7477234/

no comments

Присоединённое изображение
Присоединённое изображение


--------------------
Когда нельзя еще больше хочется...
PMСайт пользователя
Top
Psixo
Дата 25.08.2007 - 16:17
Цитировать сообщение




Unregistered












Ошибка с именем второй таблицы преднамеренная? smile.gif
Top
drmist
Дата 2.09.2007 - 08:58
Цитировать сообщение
Offline



Professional
*****

Профиль
Группа: -users-
Сообщений: 1165
Пользователь №: 222
Регистрация: 14.04.2005



Рейтинг:
(0%) -----


какая ошибка?


--------------------
Когда нельзя еще больше хочется...
PMСайт пользователя
Top
Psixo
Дата 13.09.2007 - 17:25
Цитировать сообщение




Unregistered












Мне пришлось заменить:

Код
CREATE TABLE `video_last` (
`id` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

INSERT INTO `video_last` (`id`) VALUES
(1);


На

Код
CREATE TABLE `soft_last` (
`id` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

INSERT INTO `soft_last` (`id`) VALUES
(1);


video на soft
Top
drmist
Дата 13.09.2007 - 18:58
Цитировать сообщение
Offline



Professional
*****

Профиль
Группа: -users-
Сообщений: 1165
Пользователь №: 222
Регистрация: 14.04.2005



Рейтинг:
(0%) -----


В таком случае неумышленная %)


--------------------
Когда нельзя еще больше хочется...
PMСайт пользователя
Top
Psixo
Дата 17.09.2007 - 09:06
Цитировать сообщение




Unregistered












Бывает. smile.gif
Top
Truman
Дата 23.09.2007 - 02:55
Цитировать сообщение




Unregistered












Пожалуйста, подскажите как все это работает, куда прописывать этот скрипт?
Top
drmist
Дата 23.09.2007 - 13:06
Цитировать сообщение
Offline



Professional
*****

Профиль
Группа: -users-
Сообщений: 1165
Пользователь №: 222
Регистрация: 14.04.2005



Рейтинг:
(0%) -----


Truman
Я конечно прошу прощения, но если Вы не знаете, как это работает, то лучше всего Вам будет поискать книжку из серии "Как выучить язык программирования Perl за 24 академических часа" и "Как научится пользоваться MySQL за 24 академических часа" и вернуться сюда во вторник %).


--------------------
Когда нельзя еще больше хочется...
PMСайт пользователя
Top
Versus71
Дата 30.05.2010 - 04:01
Цитировать сообщение
Offline



Junior
*

Профиль
Группа: -users-
Сообщений: 1
Пользователь №: 7017
Регистрация: 25.04.2010



Рейтинг:
(0%) -----


Я понимаю, что это все дела минувших дней, но тем не менее спрошу. Еще актуально?
PMПисьмо на e-mail пользователю
Top

Опции темы Ответ в темуСоздание новой темы