Итоги форумной войны Степан Ильин aka Step Хакер, номер #083, стр. 083-072-1 (faq@real.xakep.ru) Все главные сплойты и баги популярных форумов Сложно не заметить, что большинство совершаемых ныне взломов осуществляется через уязвимости web-сценариев. Внешне такой взлом может показаться вполне простой задачей: нашел дырявый скрипт, затем подходящий эксплоит — и дело в шляпе. Но как только дело доходит до практики, сталкиваешься с совершенно невероятными проблемами. [В чем проблема?] Если ты хоть раз пытался использовать для взлома эксплоиты, то должен понимать, о чем идет речь. Согласись, найти уязвимый сервис или web-сценарий сегодня не проблема. Ошибки, в том числе и критические, есть практически везде, а многочисленные сообщения в ленте багтрака — лишнее тому подтверждение. Куда сложнее подобрать подходящий и, что немаловажно, работоспособный эксплоит. Обычно проблемы начинаются на стадии его применения. То эксплоит вываливается с ошибкой, то отказывается компилироваться, то вообще, ничего не выполняя, пытается отформатировать винчестер :). Более того многие разработчики умышленно оставляют в коде эксплоита ошибку, дабы избежать его использования теми, кому он, по правде говоря, и не нужен. Багов так много, что иногда смотришь на форум и знаешь, что он бажный. Но поломать его никак не получается. Не беда — сегодня мы подготовили для тебя самый полный гид по горячим уязвимостям самых популярных форумов phpBB и IPB. Как говориться, поставим все точки над i. [phpBB <= 2.0.12 — доступ к админ-панели] В любой версии phpBB младше 2.0.13 возможно легко получить доступ к администраторскому интерфейсу. Столь серьезная брешь в безопасности существует благодаря некорректному сравнению идентификационных данных в момент авторизации пользователя. Программисты допустили логическую ошибку на 82 строке сценария includes/sessions.php: if($sessiondata['autologinid'] == $auto_login_key) На первый взгляд, все нормально. Проверяется равенство идентификаторов, если все правильно, то пользователь впускается в систему. Однако это не совсем так. Дело в том, что оператор «==» возвращает true, если его операнды «равны» друг другу, причем слово «равны» здесь понимается довольно своеобразно. Так, к примеру, «+1.a», с точки зрения оператора «==», это тоже самое, что и «0001». Дело в том, что при приведении типов и та, и другая строка станет единицей и, значит, они будут равны друг другу. По этой причине в PHP есть оператор «тождественно равно» (три знака равно, ===), который, кроме всего прочего, подразумевает еще и совпадение типов операндов. Именно этот оператор и следовало бы использовать в этом месте сценария разработчикам. Но они об этом не подумали, кое-куда не досмотрели, и получили серьезную брешь в своем продукте. Оказывается, что для того, чтобы пользователя пропустили в систему необходимо лишь, чтобы длина идентификатора в его кукисе совпадала с длиной $auto_login_key. Подобрать необходимое значение autologinid и записать в плюшку несложно, с чем великолепно справляется эксплоит от команды [N]eo [S]ecurity [T]eam. Эксплоит написан на чистом C и отлично компилируется под любую платформу, т.к. не использует каких-либо специфических библиотек. Тем не менее, есть один нюанс: его работа возможна только совместно с браузерами Mozilla или Firefox. Эти браузеры хранят значения cookies в файле cookies.txt (бинарник эксплоита нужно поместить в директорию с этим файлом), и именно в этот файл эксплоит осуществляет запись специально составленной плюшки. |