database-lateral-pivot
$
npx mdskill add wgpsec/AboutSecurity/database-lateral-pivotExecute cross-database queries to pivot through isolated networks.
- Bypass network isolation by leveraging database connectivity.
- Utilizes PostgreSQL dblink, MSSQL Linked Server, and MySQL FEDERATED.
- Analyzes extension availability and connection configurations.
- Returns actionable SQL commands for lateral movement scenarios.
SKILL.md
.github/skills/database-lateral-pivotView on GitHub ↗
---
name: database-lateral-pivot
description: "数据库横向移动与跨库攻击。当已获取一个数据库权限(PostgreSQL/MySQL/MSSQL)需要横向到其他数据库或内网服务时使用。覆盖 PostgreSQL dblink 跨库连接、MSSQL Linked Server 横向、MySQL 联邦引擎跨库、数据库→SSRF→内网探测。当目标网络隔离但数据库可通信时(数据库通常有比应用服务器更宽松的网络策略),这是突破隔离的关键路径。发现任何数据库间通信需求、内网数据库横向、跨库查询场景都应使用此技能"
metadata:
tags: "database,lateral,pivot,dblink,linked_server,postgresql,mssql,mysql,横向移动,跨库,内网,ssrf"
category: "lateral"
---
# 数据库横向移动方法论
数据库是内网中天然的跳板——它们通常比应用服务器有更宽松的网络访问策略(需要连接多个服务),而且 PostgreSQL 的 dblink、MSSQL 的 Linked Server、MySQL 的 FEDERATED 引擎都提供了原生的跨主机查询能力。当应用层网络隔离严格时,通过数据库进行横向移动往往是唯一路径。
## ⛔ 深入参考(必读)
- dblink 连接、Linked Server 利用、SSRF 探测的完整命令和场景 → [references/dblink-lateral.md](references/dblink-lateral.md)
---
## Phase 1: 评估横向条件
在当前数据库中收集信息,判断横向移动的可能性:
```sql
-- PostgreSQL: 检查可用扩展
SELECT * FROM pg_available_extensions WHERE name IN ('dblink','postgres_fdw');
-- PostgreSQL: 已有的外部连接配置
SELECT * FROM pg_foreign_server;
SELECT * FROM pg_user_mapping;
-- MSSQL: 检查 Linked Servers
EXEC sp_linkedservers;
SELECT * FROM sys.servers WHERE is_linked = 1;
-- MySQL: 检查 FEDERATED 引擎
SHOW ENGINES;
```
**横向条件清单**:
- 当前是 superuser/sa/root 吗?(非特权用户通常无法创建 dblink)
- 数据库配置中有没有其他主机的连接信息?
- 环境变量/配置文件中有没有其他数据库的凭据?
## Phase 2: 内网信息收集(通过数据库)
数据库本身就是信息金矿:
```sql
-- 搜索连接字符串
SELECT * FROM pg_settings WHERE name LIKE '%connection%';
-- 搜索包含密码的表/列
SELECT table_name, column_name FROM information_schema.columns
WHERE column_name LIKE '%pass%' OR column_name LIKE '%secret%' OR column_name LIKE '%token%';
-- 查找其他数据库主机(配置表中常有)
SELECT * FROM config WHERE key LIKE '%host%' OR key LIKE '%db%' OR value LIKE '%.%.%.%';
```
## Phase 3: 横向攻击决策树
```
已控制一个数据库?
├─ PostgreSQL →
│ ├─ dblink(最灵活)→ 连接任意 PostgreSQL/支持的数据库
│ ├─ postgres_fdw(外部数据封装器)→ 透明跨库查询
│ └─ COPY TO PROGRAM + curl → SSRF 探测内网
├─ MSSQL →
│ ├─ Linked Server → 连接其他 MSSQL/任意 OLE DB 数据源
│ ├─ OPENROWSET → 即席跨库查询
│ └─ xp_cmdshell + curl → 内网探测
├─ MySQL →
│ ├─ FEDERATED 引擎 → 跨 MySQL 实例查询
│ └─ LOAD DATA LOCAL → 读取本地文件
└─ 通用 →
├─ 通过命令执行进行端口扫描/服务发现
└─ 利用数据库中存储的凭据连接其他服务
```
→ 各数据库横向的完整命令 → [references/dblink-lateral.md](references/dblink-lateral.md)
## Phase 4: 横向后利用
成功连接到新数据库后:
1. **提取数据** — 用户表、配置表、flag
2. **获取 RCE** — COPY FROM PROGRAM / xp_cmdshell / UDF
3. **继续横向** — 新数据库可能连接更多内网资源
4. **持久化** — 创建后门账号、触发器
## 注意事项
- dblink/Linked Server 查询产生的流量来自**数据库服务器 IP**,不是你的攻击机 IP
- 利用这一特性可以绕过基于 IP 的网络 ACL
- 数据库间通信通常是明文的,注意凭据安全
- 大量跨库查询会产生日志,注意操作节制
More from wgpsec/AboutSecurity
- 401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
- ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
- ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
- ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
- ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
- ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
- adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
- adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
- agent-security|
- ai-data-security|