Pentest Award
Этот текст получил пятое место на премии Pentest Award 2024 в категории «Пробив web». Награждение ежегодно проводит компания Awilix.
Для поиска старых и забытых ресурсов мы использовали технику Passive DNS. Данные мы взяли из VirusTotal: написали небольшой скрипт, который отправлял запросы к API с IP-адресами из нашего пула. Это позволило собрать множество интересных доменов, большинство из которых входили в наш скоуп. Так и нашелся тот самый «забытый» веб‑сервис, который впоследствии оказался уязвимым.
Домен был непростой, что‑то вроде web1.
. Там был развернут самописный сервис мониторинга веб‑приложений, на который, судя по логам, последний раз заходили около месяца назад. Доступ к нему мы получили с помощью дефолтных учетных данных (admin:
), создали отдельную учетку администратора для дальнейшего тестирования и, конечно же, как настоящие этичные хакеры, оповестили отдел ИБ заказчика об уязвимости.
На следующий день ИБ‑отдел закрыл ресурс, хотя мы просили дать возможность продолжать тестирование. Ребята из отдела ИБ объяснили решение тем, что «там нет ничего интересного».
Однако я опустил один момент: перед тем как сообщать об уязвимости, мы спарсили все учетные данные пользователей (для проектных целей и дальнейшего тестирования), которые хранились в открытом виде прямо в разметке HTML. Естественно, среди них были и учетки администраторов.
Полученные учетки мы применили на других ресурсах компании, половина пользователей действительно существовала, но пароли давным‑давно сменены.
Спустя две недели работы над остальным скоупом я параллельно занимался разведкой и работой с вебом. В какой‑то момент я взял наш прошлый хост — *.
, закинул на перебор в gobuster и... вуаля! Нашелся тот же самый ресурс, но уже с другим алиасом — пусть он будет называться vulnerable.
.
Здесь уже не было дефолтных учетных данных админа, как раньше, поэтому нам и пригодилась учетка администратора из дампа ресурса web1.
.
Получаем доступ, ковыряем приложение и находим возможности для самых разных SQL-инъекций. Нам удалось реализовать error-based SQLi, blind (time-based) SQLi, а также мы могли читать локальные файлы с помощью встроенной функции MS SQL — OpenRowset
(она позволяет обращаться к локальным файлам).
Это было вечером, а к поздней ночи я докрутил инъекцию в MS SQL до Out-of-Band.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее