概述
一个偶然的机会听说华域Reporter组件存在漏洞,团队大佬在GitHub找到了漏洞利用代码:HuaYuReporterGetShell。该组件的设备较多,多用于上网行为管理设备的报表系统,该漏洞利用难度低,影响范围较广,无需登录可直接以root权限执行任意命令,从而控制该设备,进而控制内网其它服务器和终端设备,该设备一旦被控制,可能会影响到整个内网。
反编译jar
使用jd-gui
查看jar包源码发现漏洞所在文件:/view/Behavior/toQuery.php
,参数和Payload,如图:
漏洞分析
查看漏洞文件源码发现toQuery.php
文件执行命令的函数exec
的参数cmd
可控,且未进行过滤等安全防护操作,如图:
因此在method
参数值等于getList
或import
的情况下,通过objClass
参数将需要执行的命令拼接到cmd
参数,在调用exec
函数时执行objClass
传入的命令。
编写PoC
使用Goby
思路:使用echo
命令将特定字符串重定向到特定文件,当该文件内容为写入的特定字符串时说明漏洞存在。
- 查询规则:
title="Login @ Reporter"
- 请求一:
/view/Behavior/toQuery.php?method=getList&objClass=%0aecho%20%27f029ff010012ms%27%20>/var/www/reporter/view/Behavior/f029ff010012ms.txt%0a
- 请求二:
/view/Behavior/f029ff010012ms.txt
,匹配Body中包含特定字符串:f029ff010012ms
Poc测试结果如图:
Exp验证结果如图:
使用pocsuite
Poc:
Poc测试结果如图:
反弹shell,如图:
执行命令如图:
修复建议
- 过滤用户传入的数据
- 重写代码,创建白名单命令列表,避免使用objClass参数
Comments | NOTHING