cacti cve-2020-35701 后台sql注入到后台RCE 分析
2023-11-15 13:56:53 Author: xz.aliyun.com(查看原文) 阅读量:19 收藏

漏洞简介:Cacti是Cacti团队的一套开源的网络流量监测和分析工具。该工具通过snmpget来获取数据,使用RRDtool绘画图形进行分析,并提供数据和用户管理功能。

Cacti 1.2.x through 1.2.16 存在SQL注入漏洞,该漏洞允许经过身份验证的远程攻击者通过site_id参数执行任意SQL命令,导致远程代码执行。

漏洞复现: 在date_debug.php中:


首先获取了action的参数 使用switch来分别对不同的参数进行不同的操作,在action=ajax_hosts时 cacti会获取site_id的参数 并且没有添加任何的过滤


获取到site_id参数后 直接跳到auth.php的get_allowed_ajax_hosts函数


接着读取代码 并没有对传入进来的sql语句进行过滤 直接拼接到get_allowed_devices(auth.php中)函数获取hosts的值


从代码可以看出 依旧没有做任何的过滤 只是在尝试添加其他的参数,site_id直接被拼接到了sql语句并且执行,从语句可以看出来,这完全可以构造堆叠注入,我们尝试构造poc

http://192.168.62.224/cacti/data_debug.php?action=ajax_hosts&site_id=1;select sleep(10)-- -

发包尝试

很明显 ,sleep函数成功执行

现在有了堆叠,我们就可以任意构造sql语句,可以寻找其他rce的方式
全局搜索shell_exec等执行命令函数,我们找到了一个graph_realtime.php中的函数


在这个函数中,尝试从数据库获取配置参数 path_php_binary参数,并且直接与args参数拼接在一起放入shell_exec中,现在 path_php_binary参数等于可控,很明显,我们可以直接构造rce了


参数在settings表中,我们尝试修改

http://192.168.62.224/cacti/data_debug.php?action=ajax_hosts&site_id=1;update settings set value='whoami > /tmp/9.txt;' where name='path_php_binary';-- -


执行完成 查看数据表


修改成功,接下来我们进行触发,访问graph_realtime.php


(文章仅做分析)


文章来源: https://xz.aliyun.com/t/13037
如有侵权请联系:admin#unsafe.sh