SQL注入恶劣环境之可执行文件上传骚姿势
字数 1767 2025-08-23 18:31:09

SQL注入恶劣环境下可执行文件上传技术详解

1. 环境背景分析

1.1 目标系统特征

  • 操作系统:Microsoft Windows Server 2012 R2 Standard
  • 数据库系统:Microsoft SQL Server 2012
  • 域环境:ev****.cn
  • 当前权限:nt service\mssqlserver
  • 文件管理限制:仅有部分目录读写权限,无法写入Web目录
  • 命令限制:无法使用PowerShell
  • 安全防护:安装深信服EDR(edr_monitor.exe/edr_agent.exe/edr_sec_plan.exe)
  • 网络状况:不出网但能DNS解析

1.2 限制条件总结

  1. 无法直接上传文件到Web目录
  2. 无法使用常规下载方法(certutil/powershell远程下载)
  3. 网络隔离但保留DNS解析能力
  4. 存在EDR防护

2. 技术原理与思路

2.1 核心思路

利用Windows系统自带的certutil工具进行文件编码/解码,通过SQL注入获取的os-shell分块写入编码后的文件,最后在目标服务器上解码还原为可执行文件。

2.2 Certutil工具特性

  • 合法Windows组件:certutil.exe是Windows证书管理程序
  • 功能滥用:
    • 远程下载文件(易被拦截)
    • 本地文件加密/解密(不易被检测)

2.3 文件写入方法

  • 覆盖写入:echo 内容 > 文件名
  • 追加写入:echo 内容 >> 文件名

3. 详细操作步骤

3.1 准备阶段

3.1.1 C2配置

  1. 配置DNS Beacon:
    • 设置DNS解析记录
    • 在CobaltStrike中选择DNS上线方式

3.1.2 文件编码

  1. 生成DNS上线的可执行文件dns.exe
  2. 使用certutil进行编码:
    Certutil -encode dns.exe dns.txt
    

3.2 生成写入命令集

  1. 创建Excel表格(dns.xlsx):

    • A列:固定内容"echo "(注意包含空格)
    • B列:从dns.txt复制的内容
    • C列:固定内容">> C:/Users/MSSQLSERVER/Desktop/dns.txt"(目标路径)
    • D列:固定内容"&& echo 1"(用于回显)
  2. 自动填充:

    • 双击单元格右下角自动填充所有行
  3. 导出处理:

    • 全选复制到文本文件
    • 删除特殊空格(表格分列符)
    • 将第一行的">>"改为">"(确保首次写入为覆盖写入)

3.3 通过SQL注入执行写入

  1. 使用SqlMap获取os-shell:

    sqlmap --batch --os-shell
    
  2. 执行写入命令:

    • 全选复制生成的命令集
    • 在os-shell中右键粘贴执行
    • 确保网络稳定(任何一行出错都会导致最终解码失败)

3.4 解码与执行

  1. 解码文件:

    Certutil -decode C:/Users/MSSQLSERVER/Desktop/dns.txt C:/Users/MSSQLSERVER/Desktop/dns.exe
    
  2. 执行文件:

    C:/Users/MSSQLSERVER/Desktop/dns.exe
    

4. 关键技术点

4.1 回显机制设计

  • 每条命令后添加"&& echo 1":
    • 提供执行回显,避免os-shell卡顿
    • 便于攻击者确认写入进度

4.2 规避检测技巧

  1. 使用系统自带工具(certutil)避免触发安全警报
  2. 分块写入减少单次操作的可疑性
  3. 编码后的文件内容不直接表现为可执行代码

4.3 注意事项

  1. 网络稳定性至关重要,任何一行写入失败都会导致最终解码失败
  2. 目标路径必须确保有写入权限
  3. 首次写入必须使用覆盖写入(">"),后续使用追加写入(">>")

5. 防御建议

5.1 检测与防护

  1. 监控certutil异常使用:

    • 非管理员账户使用encode/decode参数
    • 短时间内大量echo写入操作
  2. 限制SQL Server服务账户权限:

    • 最小化文件系统访问权限
    • 禁止写入非必要目录
  3. EDR规则更新:

    • 检测分块写入后解码的可执行文件

5.2 系统加固

  1. 禁用不必要的系统工具:

    • 通过AppLocker等限制certutil使用
  2. 网络隔离:

    • 严格限制数据库服务器的出站连接
    • 监控异常的DNS查询

6. 总结

本技术展示了在极端受限环境下(无Web目录写入权限、无网络下载能力、存在EDR防护)如何通过系统自带工具和精心设计的写入方法实现可执行文件上传。关键在于:

  1. 充分利用系统合法工具的功能(certutil编码/解码)
  2. 创新的分块写入方法规避检测
  3. 完善的执行回显机制确保操作可靠性

这种技术不仅适用于SQL注入后的渗透,也可应用于其他受限环境下的文件传输需求,体现了在渗透测试中灵活运用系统特性绕过限制的创造性思维。

SQL注入恶劣环境下可执行文件上传技术详解 1. 环境背景分析 1.1 目标系统特征 操作系统:Microsoft Windows Server 2012 R2 Standard 数据库系统:Microsoft SQL Server 2012 域环境:ev**** .cn 当前权限:nt service\mssqlserver 文件管理限制:仅有部分目录读写权限,无法写入Web目录 命令限制:无法使用PowerShell 安全防护:安装深信服EDR(edr_ monitor.exe/edr_ agent.exe/edr_ sec_ plan.exe) 网络状况:不出网但能DNS解析 1.2 限制条件总结 无法直接上传文件到Web目录 无法使用常规下载方法(certutil/powershell远程下载) 网络隔离但保留DNS解析能力 存在EDR防护 2. 技术原理与思路 2.1 核心思路 利用Windows系统自带的certutil工具进行文件编码/解码,通过SQL注入获取的os-shell分块写入编码后的文件,最后在目标服务器上解码还原为可执行文件。 2.2 Certutil工具特性 合法Windows组件:certutil.exe是Windows证书管理程序 功能滥用: 远程下载文件(易被拦截) 本地文件加密/解密(不易被检测) 2.3 文件写入方法 覆盖写入: echo 内容 > 文件名 追加写入: echo 内容 >> 文件名 3. 详细操作步骤 3.1 准备阶段 3.1.1 C2配置 配置DNS Beacon: 设置DNS解析记录 在CobaltStrike中选择DNS上线方式 3.1.2 文件编码 生成DNS上线的可执行文件dns.exe 使用certutil进行编码: 3.2 生成写入命令集 创建Excel表格(dns.xlsx): A列:固定内容"echo "(注意包含空格) B列:从dns.txt复制的内容 C列:固定内容">> C:/Users/MSSQLSERVER/Desktop/dns.txt"(目标路径) D列:固定内容"&& echo 1"(用于回显) 自动填充: 双击单元格右下角自动填充所有行 导出处理: 全选复制到文本文件 删除特殊空格(表格分列符) 将第一行的">>"改为">"(确保首次写入为覆盖写入) 3.3 通过SQL注入执行写入 使用SqlMap获取os-shell: 执行写入命令: 全选复制生成的命令集 在os-shell中右键粘贴执行 确保网络稳定(任何一行出错都会导致最终解码失败) 3.4 解码与执行 解码文件: 执行文件: 4. 关键技术点 4.1 回显机制设计 每条命令后添加"&& echo 1": 提供执行回显,避免os-shell卡顿 便于攻击者确认写入进度 4.2 规避检测技巧 使用系统自带工具(certutil)避免触发安全警报 分块写入减少单次操作的可疑性 编码后的文件内容不直接表现为可执行代码 4.3 注意事项 网络稳定性至关重要,任何一行写入失败都会导致最终解码失败 目标路径必须确保有写入权限 首次写入必须使用覆盖写入(">"),后续使用追加写入(">>") 5. 防御建议 5.1 检测与防护 监控certutil异常使用: 非管理员账户使用encode/decode参数 短时间内大量echo写入操作 限制SQL Server服务账户权限: 最小化文件系统访问权限 禁止写入非必要目录 EDR规则更新: 检测分块写入后解码的可执行文件 5.2 系统加固 禁用不必要的系统工具: 通过AppLocker等限制certutil使用 网络隔离: 严格限制数据库服务器的出站连接 监控异常的DNS查询 6. 总结 本技术展示了在极端受限环境下(无Web目录写入权限、无网络下载能力、存在EDR防护)如何通过系统自带工具和精心设计的写入方法实现可执行文件上传。关键在于: 充分利用系统合法工具的功能(certutil编码/解码) 创新的分块写入方法规避检测 完善的执行回显机制确保操作可靠性 这种技术不仅适用于SQL注入后的渗透,也可应用于其他受限环境下的文件传输需求,体现了在渗透测试中灵活运用系统特性绕过限制的创造性思维。