仙人掌cacti中的RCE案例
一,环境的部署
下载vulhub项目
cd到cacti
拉取镜像,创建容器
进入容器
安装xdbug-3.1.6
启动xdebug扩展,并重启容器
用vscode远程连接linux,在/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini增加内容
注意在连接到ubuntu后需要下载docker和dev containers插件
连接到容器后下载xdebug才能创建php的launch.json文件,然后才能对php进行debug
二,RCE过程
首先根据文档将cacti安装好
vulhub/cacti/CVE-2022-46169 at master · vulhub/vulhub · GitHubhttps://github.com/vulhub/vulhub/tree/master/cacti/CVE-2022-46169
伪造x-forwarded-for来通过这个函数
action=polldata
跳到
传的local_data_ids={6}
action=2
常量函数是2,走到这
命令执行,执行$poller_id(放恶意代码)
但是它只回显一行
可以回显8行,但是
需要过这个函数
要求16进制,每两位数字空格,但是容器xxd命令没有
所有进到第二个
有没有:和!,并且没有空格,就直接返回true
跳出
返回json文件,打印到页面
三,RCE的结果
没有回显
有回显
有回显的三个方法:
需要urlencode编码,因为空格和字符太多可能出现格式问题