Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #93, СЕНТЯБРЬ 2006 г.

Как угнать почтовый ящик

Digimortal, NST (nst.void.ru)

Хакер, номер #093, стр. 093-064-2


Баг 2. SQL-inj

Если сценарий никак не фильтрует ввод, то и сам параметр id может быть уязвим, решил я. И не ошибся. Конечно, значения идентификаторов сессий хранятся в БД. Проверим на скуль-иньекцию. Подставив кавычку в конец идентификатора, я вылетел из своего ящика, затем я дописал конструкцию вида "'or'1=1" (без кавычек, ясное дело):

http://www9.pochta.ru/mailbox.php?id=Ndc4c56a9f218620edc2fa5210dca983'or'1=1

Вот тут началось самое интересное - я оказался в чужом ящике! Это было уже действительно забавно. Немного порывшись в настройках, заглянув на сайт, я задался вопросом, почему меня перенесло именно на этот ящик? Логика подставленного значения параметра id означает, что в теории я мог попасть на любой из ящиков, для которых в БД хранится идентификатор сессии, т.е. на любой из ящиков, которые в это время кто-нибудь просматривает. Я стал различными способами видоизменять вышеприведенный запрос, в итоге, обнаружив, что "1=1" писать необязательно, достаточно написать просто "1" (или любое число >0). Кроме того, значение идентификатора теперь перестало иметь свой смысл, нужно было оставить только букву "N" в начале (с таким id не получалось зайти на сайт, прилагаемый к данному ящику, но мне это было и не нужно). В итоге, запрос сократился до следующего вида:

http://www9.pochta.ru/mailbox.php?id=N'or'1

Набрав эту ссылку в адресной строке браузера, можно было сходу попасть в чей-нибудь ящик. И тут я понял, что с ящиком, в который я попадаю, все не так просто. Несколько раз обновив страницу в браузере, я заметил, что в ящике появляются новые папки, меняется цвет фона и т.п. Я зашел в папку "Входящие" и начал обновлять страницу. Тут все уже прояснилось - сначала мне казалось, что я попадаю в какой-то конкретный ящик, но на деле все оказалось так, как и диктовала логика запроса - мне были видны письма всех (хотя я в этом до конца не уверен) пользователей, идентифицировавшихся в системе. Причем, обновляя страницу, были видны последние, судя по дате, письма отправляемые/получаемые данной почтовой системой. Правда, оказалось, что прочитать удается далеко не каждое из них. Все это действовало, но весьма глючно.

Теперь у меня возникло еще одно предположение, которое не могло быть неверным: если я начну с таким значением id, вносить какие-то изменения в настройки, создавать папки и т.д., то это отразится и на всех остальных ящиках, для которых в данный момент создан идентификатор сессии. Так оно и оказалось и даже более того: другие пользователи во время моего вмешательства в работу базы данных идентификаторов текущих сессий, при заходе в ящик видели примерно то же, что и я при входе с id=N'or'1. Все это происходило очень весело: кто-то создал папку под названием "Кто_нибудь_знает_что_происходит", и понеслись ответы-предположения. Получился своеобразный чат, где каждый мог выразить свою мысль в названии созданной им папки :). После многих кликов на кнопку обновления страницы, я увидел, что ящик, в который я попадаю, все же меняется время от времени на другой (по всей видимости, по истечению действия его id).

Назад на стр. 093-064-1  Содержание  Вперед на стр. 093-064-3