使用vulhub搭建环境
cd /drupal/CVE-2018-7600/
docker-compose up -d
使用vulhub搭建环境出现了一些问题,这里直接使用BUU的环境
BUU CEV-2018-7600
进去也要初始化环境,一开始语言选择英文,数据库选择SQLite
其他的可以随便设置
进入
这个漏洞可能出现在填写表单的地方,该漏洞是Form API在用户提交表单数据时可以在表单渲染过程中修改表单数据
想利用该漏洞,就需要在表单结构中的某个地方注入渲染数组,所以,首先要找到注入位置
可以利用注册用户来进行漏洞利用
测试
先随便输入测试
通过查阅 Drupal 的代码和文档,可以知道,对于 #pre_render,#post_render、#submit、#validate 等变量,Drupal 通过 call_user_func 的方式进行调用
所以如果我们能将这些变量注入到 $form 数组中,即可造成代码执行的问题
尝试注入数组
修改为
发现此时邮箱改为了Array,由于这里显示的数据是从发送的表单里取出的数据
第一次填写Email = test@test.com,然后向服务器发送数据,这时Drupal 会对填写的数据构造一个表单进行发送。由于发送了错误的数据(Username = test被注册过),造成了错误,返回注册页面,这时注册页面的Email和Username都是从表单中取出的
而发送的email被我们抓包修改过,此时返回数据为Array(如果没有秀修改的话,应该从表单中取出test@test.com),证明成功传入了数组
通过POST传参传的表格为
form_id=user_register_form&mail[#pre_render][]=test%40test.com&name=test
根据[#pre_render]的使用方法可以构造执行payload
form_id=user_register_form&_drupal_ajax=1&mail[#post_render][]=passthru&mail[#type]=markup&mail[#markup]=id
将可执行语句上传后还需要执行
通过对源码的分析
攻击者传入的值,可以通过buildform,方法构造表单数组,并且这个表单数组接下来还会被drupal表单呈现引擎解析为html页面
有如下payload
通过一些列的函数调用,最终POST表单中的数组被组合成执行语句被执行
Drupal 7没有上传图片的地方,可以在申请密码处利用
参考
【漏洞分析】DRUPAL远程代码执行漏洞(CVE-2018-7600)分析
drupal cve-2018-7600 远程代码执行漏洞 简介文章来源:https://www.toymoban.com/news/detail-439372.html
drupal7~8 CVE-2018-7600文章来源地址https://www.toymoban.com/news/detail-439372.html
到了这里,关于【CVE-2018-7600】Drupal 8 远程代码执行漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!