【CVE-2018-7600】Drupal 8 远程代码执行漏洞

使用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
payload
通过一些列的函数调用,最终POST表单中的数组被组合成执行语句被执行
在这里插入图片描述

Drupal 7没有上传图片的地方,可以在申请密码处利用
在这里插入图片描述

参考

【漏洞分析】DRUPAL远程代码执行漏洞(CVE-2018-7600)分析

drupal cve-2018-7600 远程代码执行漏洞 简介

drupal7~8 CVE-2018-7600

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值