山石网科云鉴存在前台任意命令执行漏洞

漏洞介绍
前几天在查看山石网科的安全通告,看到云鉴存在前台任意命令执行漏洞,就决定简单看一下发现云鉴与其他产品还是有很大的区别,公网上数量也不多所以跟着寻找和复现一下。
如果影响模块的顺序和漏洞编号的顺序是一一对应,那么我只复现了前两个HSVD-2023-0005, HSVD-2023-0008,由于我只能够在激活之前进行测试,所以并不清楚在激活之后是否能够访问和复现, 而且这两个洞应该是代码执行导致的命令执行。
HSVD-2023-0005
可以看到第一个影响的是getMessageSettingAction, 公告没有说完整应该是第二个一样影响的是,/master/ajaxActions/getMessageSettingAction.php
可以看到在用GET接收了company_uuid和platform_sel,后拼接并调用了getMessageSettingInfo,我们跟入该函数。
1 | function getMessageSettingInfo($param){ |
紧接着将传入getMessageSettingInfo函数的$param,拼接传入了postCommand函数该函数是用来向本地的8000端口发送POST请求的函数
将用户传入的转发到127.0.0.1:8000,通过简单粗暴的搜索8000找到了,一个由python的tornado运行的服务
来看一下整体逻辑,解释写在了注释
现在我们知道它将get-sms-setting转换为get_sms_setting,也就是处理该请求的函数,搜索字符串找到get_sms_setting函数
可以看到在这个函数中它简单粗暴的使用了eval去处理我们get-sms-setting|后面的参数,也就是这里的代码执行导致的命令执行,而接下来的HSVD-2023-0008大致相同。
HSVD-2023-0008
一样的找到 /master/ajaxActions/setSystemTimeAction.php
流程基本一致调用了setSysTime
1 | function setSysTime($param){ |
在python中查询到 set_mp_time 函数
也是eval导致的代码执行导致的命令执行
POC
1 | import requests |
结束了?
当然并没有因为在这些python文件中还着很多这样的的处理方法直接使用eval函数
01
02
也有不完全的过滤,和使用subprocess.check_output函数但是确,打开了shell=True的命令注入
NED
这个文章是从我tools搬过来的,tools原文
- Title: 山石网科云鉴存在前台任意命令执行漏洞
- Author: Zhiyuan
- Created at : 2024-02-06 22:34:00
- Updated at : 2025-05-17 11:29:27
- Link: https://redefine.ohevan.com/2024/02/06/hillstonenet/
- License: This work is licensed under CC BY-NC-SA 4.0.