CVE-2018-7600 Drupal漏洞原理的简单分析与复现

0x00组件背景

Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。连续多年荣获全球最佳CMS大奖,是基于PHP语言最著名的WEB应用程序。

0x01漏洞位置

这里有个call_user_func_array

call_user_func_array函数是调用第一个参数的函数 传入的参数数第二个参数数组

官网解释如下

只需要控制$callable为要执行的函数名然后$args是参数就ok

从上面的代码看出这两个变量是从$elements[‘#lazy_builder’]中取得

elements是从用户传来的post来的 也就是说变量可控

直接注入数组一把梭

在php中 post请求可以传递一个数组

0x02 漏洞复现

此处的assert是

可以用来代替eval

die是为了输出pwn之后不再输出其他乱七八糟的东西。

当die的参数是个字符串的时候会输出这个字符串然后退出程序

0x03 修复建议

直接从网站根目录删除网站程序并且清空数据库 然后卸载php解释器以及web中间件 然后卸载mysql 以上操作结束后删除服务器根目录 然后覆盖删除硬盘上的所有数据

dd if = /dev/urandom of = /dev/硬盘名

猜你喜欢

转载自blog.csdn.net/xuandao_ahfengren/article/details/83987425