> 技术文档 > 仙人掌cacti中的RCE案例

仙人掌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编码,因为空格和字符太多可能出现格式问题