华域Reporter命令注入漏洞


概述

一个偶然的机会听说华域Reporter组件存在漏洞,团队大佬在GitHub找到了漏洞利用代码:HuaYuReporterGetShell。该组件的设备较多,多用于上网行为管理设备的报表系统,该漏洞利用难度低,影响范围较广,无需登录可直接以root权限执行任意命令,从而控制该设备,进而控制内网其它服务器和终端设备,该设备一旦被控制,可能会影响到整个内网。

反编译jar

使用jd-gui查看jar包源码发现漏洞所在文件:/view/Behavior/toQuery.php,参数和Payload,如图:

漏洞分析

查看漏洞文件源码发现toQuery.php文件执行命令的函数exec的参数cmd可控,且未进行过滤等安全防护操作,如图:

因此在method参数值等于getListimport的情况下,通过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参数

声明:Hack All Sec的博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 华域Reporter命令注入漏洞


Hacker perspective for security