Terrorists win! Вася Иванов Xakep, номер #068, стр. 068-050-1 Взлом популярного игрового сервера Однажды вечером не самого удачного дня я сел за комп и по привычке запустил CS. Знаешь, когда становится хреново, нет ничего лучше, чем убить пару десятков сетевых отморозков: это очень поднимает настроение и, как утверждает доктор Майоров, снимает стресс. Однако и на виртуальном фронте мне сегодня не везло. Не набрав ни одного фрага, я вскоре свалил под язвительные замечания игровых оппонентов со стойким желанием вернуться и отомстить обидчикам :). Доигрались Я сразу приступил к активным действиям. Первым делом я просканировал nmap'ом (www.insecure.org/nmap/) игровой сервер на открытые порты в поисках уязвимых сервисов. Для экономии времени я запустил nmap с флагом -p 21,22,23,25,53,80,110,143,443,3306. Немного подумав, сканер выдал такую информацию: 21/tcp open ftp ProFTPD 1.2.8 25/tcp open smtp Sendmail 8.12.8/8.12.8 22/tcp open ssh OpenSSH 3.5p1 (protocol 1.99) 80/tcp open http Apache httpd 1.3.28 ((Unix) PHP/4.3.4) 3306/tcp open mysql MySQL (unauthorized) OS Fingerprint говорил, что на удаленной тачке стоит Linux 2.4.X - 2.5.20. У меня загорелись глаза! В ProFTPD недавно обнаружили уязвимость. Есть много публичных эксплойтов, да и у меня самого был приватный сплойт, который выдавал рутовый шелл с первой попытки. Я попытался анонимно войти в систему (для успешной работы эксплойта необходимо было войти в систему и иметь права на запись), но сделать этого не удалось. Срочно нужен был аккаунт на сервере. Я покопался в архиве своих шеллов и нашел довольно быструю машину, затем залил туда многопотоковый фтп-брутфорс с большим словарем, надеясь, что удастся подобрать пароль. Но нужно было знать и имя учетной записи для брута. Версия sendmail'a, самого дырявого MTA, также очень обрадовала. При получении хоть какого-то локального доступа можно было взять рута через уязвимость в smtp-сервисе. POP3-сервис отсутствовал. Админ, наверное, следит за выходом новых версий программного обеспечения: версии апача и PHP были самыми последними. phpinfo() в помощь Нужно было что-то делать, поскольку двигаться дальше я не мог - не было локального доступа. Я решил побраузить сайт на cgi-дырки. Через некоторое время я нашел sql-injection-уязвимость, но движок был самописным, поэтому использовать этот баг было довольно сложно. Я стал подставлять разные sql-команды, но ничего не выходило, я ведь даже не знал названий таблиц, в которых может храниться какая-нибудь информация. Думая о том, как бы получить шелл или хоть что-нибудь полезное через инъекцию sql-кода, я заметил скрипт голосования. Он мне показался очень знакомым. Выяснилось, что это pollphp. В голове сразу всплыла статья о какой-то уязвимости в этом скрипте, которую я совсем недавно читал. Этой уязвимостью оказалось раскрытие информации через функцию phpinfo(). Но какую информацию давал этот скрипт! Я открыл в браузере страницу /pollphp/misc/info.php и сразу после этого получил кучу достоверных сведений о системе. Ядро было 2.4.20, а это означало, что рута взять будет довольно просто, но, опять-таки, имея локальный доступ. |