Сплойт для web'а Никита Кислицин Хакер, номер #079, стр. 079-058-1 (nikitoz@real.xakep.ru) Учимся писать эксплойты для web-багов на примере Loki под ASP.NET Каждый день в багтрак-лентах появляются десятки сообщений о новых дырках в web-скриптах. Хакеры обнаруживают как стандартные CSS и SQL-injection ошибки, так и нестандартные баги, продукт воспаленного программистского мозга. Ни для кого не секрет, что частые упоминания об уязвимостях носят довольно поверхностный характер и, чтобы воспользоваться полученными сведениями, нужно проявить специфические навыки. Сегодня я расскажу тебе о том, каким образом удобнее всего использовать ошибки в web-скриптах и как автоматизировать этот процесс. [какие ошибки?] Если вдуматься, каждая найденная дырка в web-скрипте исчерпывающе описывается при помощи набора конкретных значений передаваемых сценарию параметров, при которых программа позволяет манипулировать собой. Так уж повелось, что абсолютное большинство сообщений об ошибках носит примерно такой характер: «в скрипте coolscript.asp я нашел sql-injection, который реализуется вот так: coolscript.asp?id=-1’ union select 1,1,pass from cooltable». Само собой, для того, чтобы на практике использовать какую-либо брешь, надо разобраться с ее происхождением и c тем, как она работает. Так, если речь идет об SQL-injection нужно разобраться со структурой базы данных и программным окружением, если мы имеем дело с CSS – надо определиться с тем, какая информация хранится в пользовательских cookies и т.д. Все это необходимо, чтобы составить правильный набор параметров, передав которые, мы заставим сценарий выдать нам секретную информацию. Однако на практике встает следующая проблема. Не всегда удобно в ручную передавать скрипту параметры – если вбить их в адресную строку еще можно, то редактировать каждый раз собственные cookies, крайне неудобно. Кроме того, если необходимо проверить на наличие бага, скажем, сотню ресурсов, то от такой механической работы можно легко попасть на прием к специалистам клиники имени Кащенко. Чтобы не допустить такого развития событий, мы с тобой научимся для каждого интересного бага создавать универсальный эксплойт, который будет ломать однотипные уязвимые сценарии, установленные на различных серверах. [например?] Разумеется, чтобы у тебя не возникало лишних вопросов, я все буду показывать на примере. Я решил для разнообразия взять для опытов систему, написанную на ASP – ведь тему PHP-сценариев мы уже обмусолили, а ASP еще толком не ломали. Хотя ты сейчас увидишь, что взламывать ASP-программы ничуть не сложнее, более того, мы даже почти не столкнемся со спецификой :). В качестве подопытного кролика я взял download-систему со смешным названием loki. В самом деле, по ссылке www.xakep.ru/post/26956/default.asp ты можешь встретить упоминание о найденном баге в этой системе. Уязвимость проста, как два рубля – классический SQL-injection, который позволяет утащить любую информацию из БД. Чтобы начать упражнения, я быстренько ввел в гугле запрос «inurl:downmancv/catinfo.asp» и мне выдался какой-то таиландский ресурс, который на проверку сразу же оказался уязвимым. Не следует думать, что система Loki настолько ущербна, что стоит на единственном сервере в интернете, это не так. Стоит только изменить запрос на более демократичное «inurl:”catinfo.asp?cat=”» и тебе сразу покажутся несколько страниц с найденными сайтами, среди которых, как я заметил, почти все бажные. |