一。漏洞影响版本
Drupal core 7.62之前的7.x版本 8.6.6之前的8.6.x版本 8.5.9之前的8.5.x版本
二。漏洞原理
版本内置中的phar(反序列化RCE) stream wrapper(php)存在远程代码执行漏洞,能够执行任意的PHP代码。
Drupal机制:出现同名文件上传后,就会在文件名后面加上—0,—1,依次递增。
Drupal默认图片会储存在/sites/default/files/pictures/<…>/,名称不变,就可知上传后图片的位置。
三。环境搭建
首先安装Drupal:
这里选择英语
安装成功
四。漏洞复现,进入管理页面
利用vulhub自带的具有POC的图片进行上传:
利用vim打开,发现系统命令,后续也可以更改
提交成功
查找路径:
输入一下路径:
这是本人的路径,每个人的不同,请注意,可以查看图片上传的路径,确定好时间,然后保存,如果没反应,后面加上:”_0.jpg“
phar://./sites/default/files/pictures/2022-08/blog-ZDI-CAN-7232-cat.jpg
修改POC,尝试其他命令:
其中 uname -a 是8个字节
上传成功:
查看图片路径,发现名称不变,只是后面加了个 _0
http://192.168.5.100:8080/sites/default/files/pictures/2022-08/blog-ZDI-CAN-7232-cat_0.jpg
成功
复现完发现此漏洞就是 管理员登录头像,然后在头像的图片中设置POC,建立临时文件,POC中带有系统命令执行代码,还有因为图片的路径是默认的,并且相同的名称后面会加上_0,_1,依次递增,所以漏洞利用成功,php任意代码执行。