Фатальная проверка Master-lame-master Хакер, номер #071, стр. 071-052-4 Если верить знакомому, хакер появлялся на его сервере примерно раз в неделю. Я решил не фиксить самопальный скрипт, чтобы подловить негодяя. Поэтому я ограничился тем, что включил логирование всех web-запросов. Наступил вечер. Я поговорил с товарищем, который сердечно поблагодарил меня за помощь в расследовании. Узнав про баг в SMS-скрипте, друг разделил мое мнение, решив, что фиксить брешь пока не следует. Как выяснилось, он попросил какого-то программера написать ему перловый сценарий, который слал бы произвольный текст на определенный e-mail. Затем, когда другу захотелось украсить свой сайт, он интегрировал sms.php и перловую поделку. В результате получилось вот что: сценарий обрабатывал входные переменные, затем приплюсовывал к номеру «@sms.megafon.ru» и писал текст сообщения в файл. Финальной строкой был, конечно же, системный запрос к sms.pl, который принимал следующий вид: system("perl ./sms.pl номер@sms.megafon.ru"). Интерпретатор заставлял считывать временный файл с сообщением и засылать текст получателю. А вывод дебаг-инфы был обусловлен тем, что мой приятель захотел протестировать работу системы, а обнулить переменную $debug в файле sms.pl, как водится, забыл. Все эти недоработки и отсутствие какой-либо проверки данных привели к фатальному результату. Через несколько дней, когда я уже запамятовал о проверке сервера, приятель снова вышел на связь. Он сказал, что хакер снова оставил дефейс и папку /lameroot :). То есть действовал по своей привычной схеме. Вот дурачок :). Я тут же попросил оформить мне SSH-доступ, чтобы выудить из логов важную информацию. Я не ошибся, взломщик действительно нашел брешь в SMS-скрипте. Как выяснилось позже, он заливал скомпиленный mremap.c с интегрированной в него командой, а когда злоумышленнику хотелось выполнить другой запрос, он тупо пересобирал сплоит. Самое главное, что горе-хакер не использовал проксика, и его адрес говорил о том, что нарушитель является клиентом сети крупного московского провайдера. Впоследствии мой приятель написал телегу в саппорт, и дефейсы прекратились. Впрочем, возможно, они прекратились из-за того, что он воткнул проверку на символ «;» в sms.php. Ибо нефиг :). Где здесь мораль? Несмотря на то, что мне никто не заплатил за аудит, я был очень доволен собой. Во-первых, я удачно попрактиковался в новом способе обхода файрвола, во-вторых, мой приятель попросил меня последить за безопасностью на его машине, в результате чего я получил легальный рутовый шелл :). Ну и в-третьих, я еще раз убедился, что втыкать скрипты неизвестных авторов опасно для жизни. Как видишь, это может привести к очень неприятным последствиям. Что помогло мне при взломе? 1. Имея нюх на подозрительные скрипты, я быстро нашел лазейку на Web’е даже при выключенном журналировании запросов. |