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/硬盘名