0x01 漏洞介绍

Drupal是一个开源内容管理系统(CMS),全球超过100万个网站(包括政府,电子零售,企业组织,金融机构等)使用。两周前,Drupal安全团队披露了一个非常关键的漏洞,编号CVE-2018-7600 Drupal对表单请求内容未做严格过滤,因此,这使得攻击者可能将恶意注入表单内容,此漏洞允许未经身份验证的攻击者在默认或常见的Drupal安装上执行远程代码执行。

0x02 漏洞分析

Drupal渲染数组的情况有页面加载和Ajax表单发出的请求,在这里Ajax API调用是攻击者最佳的选择。那么作为用户注册表单的一部分,图片字段使用Ajax API将图片上传到服务器,并且生成缩略图

查阅了相关文档资料现在,我们所要做的就是注入一个恶意渲染数组,该数组使用Drupal的渲染回调方法在系统上执行代码。有几个属性我们可以注入:

  • #access_callback
    由Drupal使用来确定当前用户是否有权访问元素。
  • #pre_render
    在渲染之前操作渲染数组。
  • #post_render
    接收渲染过程的结果并在其周围添加包装。
  • #lazy_builder
    用于在渲染过程的最后添加元素。
  • #access_callback 标签虽然callback回调函数可控,但需要回调处理的字符串不可控,导致无法利用。以下场景以post_render和lazy_builder为例

2.1、漏洞场景1:引入#post_render

#post_render

这个API标签可以被所有的元素和表单使用,它是在drupal_render()方法中调用,可以渲染当前元素和子元素,也可对内容进行修改。

例子中$ element通过调用admin_form_html_cleanup函数处理返回处理后的结果。再来看可以触发攻击载荷的代码,在渲染的过程中调用了call_user_func进行回调处理,但$callable 回调函数通过表单伪造,$elements的子元素同样也是通过表单可控

攻击者利用攻击载荷 mail[#post_render][]=passthru&mail[#type]=markup&mail[#markup]=whoami ,这里的#markup是当前元素#type的子元素,通过数组的方式传入值,执行过程如图

魔术方法__toString得到$this->string 等于whoami ,带入到call_user_func中交给passthru函数执行,导致漏洞触发

PHP内置函数pasthru执行后会回显结果

2.2、漏洞场景2:引入#lazy_builder

  • #lazy_builder 可选,数组值,必须有且只有两个元素,一个是回调函数名,一个回调的参数,参数只能是NULL或者标量类型

  • $callable变量取#lazy_builder元素标签数组下标0的值作为回调函数名,取数组下标1的值当回调方法的参数, 下面攻击载荷调用PowerShell 远程下载文件到本地保存为php网页后门,代码如下图

我们传入的lazy_builder[0]和lazy_builder[1]的值在渲染的时候用call_user_func_array完成整个攻击过程

整个漏洞的产生过程都是因为call_user_func或者call_user_func_array等回调函数导致的任意代码执行,API元素标签中可能还会触发漏洞的标签有#theme 、#create_placeholder、#theme_wrappers等等。

0x04 缓解措施

官方在最新版本8.5.1中增加了下图方法

对请求的GET、POST、COOKIE 进行过滤处理

cve-2018-7600 drupal核心远程代码执行漏洞分析相关推荐

  1. Joomla远程代码执行漏洞分析小白版(小宇特详解)

    Joomla远程代码执行漏洞分析小白版(小宇特详解) 今天看了一下2021陇原战役WP,在看web方向的时候,看到pop链,想了解一下,后来又看到了p师傅在15年的一篇文章,在这里记录一下.这里主要是 ...

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

    漏洞分析 Drupal 在 3 月 28 日爆出一个远程代码执行漏洞,CVE 编号 CVE-2018-7600,通过对比官方的补丁,可以得知是请求中存在 # 开头的参数.Drupal Render A ...

  3. Drupal 修复远程代码执行漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 周三,Drupal 内容管理系统 (CMS) 发布更新,修复了和不正确清理所上传文件名称有关的一个远程代码执行漏洞 (CVE-2020 ...

  4. wordpress 5.0.0 远程代码执行漏洞分析cve-2019-8943

    近日,wordpress发布一个安全升级补丁,修复了一个WordPress核心中的远程代码执行漏洞.代码修改细节可以参考wordpress团队于Dec 13, 2018提交的代码.据漏洞披露者文中所介 ...

  5. cve-2019-1821 思科 Cisco Prime 企业局域网管理器 远程代码执行 漏洞分析

    前言 不是所有目录遍历漏洞危害都相同,取决于遍历的用法以及用户交互程度.正如你将看到,本文的这个漏洞类在代码中非常难发现,但可以造成巨大的影响. 这个漏洞存在于思科Prime Infrastructu ...

  6. CVE-2012-1876Microsoft Internet Explorer Col元素远程代码执行漏洞分析

    Microsoft Internet Explorer是微软Windows操作系统中默认捆绑的WEB浏览器.         Microsoft Internet Explorer 6至9版本中存在漏 ...

  7. php excel中解析显示html代码_骑士cms从任意文件包含到远程代码执行漏洞分析

    前言 前些日子,骑士cms 官方公布了一个系统紧急风险漏洞升级通知:骑士cms 6.0.48存在一处任意文件包含漏洞,利用该漏洞对payload文件进行包含,即可造成远程代码执行漏洞.这篇文章将从漏洞 ...

  8. goahead处理json_GoAhead Web Server远程代码执行漏洞分析(附PoC)

    *本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担. 本文是关于GoAhead web server远程代码执行漏洞(CVE-2017- ...

  9. rmi远程代码执行漏洞_Apache Solr反序列化远程代码执行漏洞分析(CVE20190192)

    更多全球网络安全资讯尽在邑安全 www.eansec.com ‍‍‍‍ 0x01 漏洞描述 Solr 是Apache软件基金会开源的搜索引擎框架,其中定义的ConfigAPI允许设置任意的jmx.se ...

最新文章

  1. IIS配置相关问题:Framework 4.5 在IIS 7.5中运行
  2. 如何提高PyTorch“炼丹”速度?这位小哥总结了17种方法,可直接上手更改的那种...
  3. python import出错_python import的一些问题
  4. 一个分布式服务器集群架构方案
  5. 微型计算机性能指标以及分类
  6. Java Web开发技术详解~Web的概念
  7. matlab案例_基于matlab和frost平台的cassie案例足式机器人运动学和动力学计算实现过程...
  8. mysql-启动、关闭与重启
  9. 大数据之-Hadoop完全分布式_Crondtab定时任务调度---大数据之hadoop工作笔记0042
  10. [转载] python模板字符串和格式化字符串
  11. Atitit.预定义变量与变量预处理器
  12. 小程序源码:首席省钱赚钱专家微信小程序源码下载,淘宝客 外卖侠 外卖cps -多玩法安装简单
  13. arm交叉编译工具链的选择
  14. Android 高通配置SUPL
  15. 愚人节html源码,开源中国愚人节网页变模糊的js blur代码
  16. 网站监控程序uptime-kuma,宝塔面板搭建 ,TCP/HTTP监控
  17. [已解决]消除Flutter Sliver之间存在的间隙
  18. WiFi探针的原理与安全
  19. 安迪种树 前缀和 差分
  20. dbpedia知识图谱java_中文通用百科知识图谱(CN-DBpedia)

热门文章

  1. SmartNIC/DPU — Overview
  2. 云原生微服务架构的技术内涵
  3. FD.io/VPP — IPSec NAT-T
  4. 5G 信令流程 — UE 状态机
  5. 5G NGC — 关键技术 — CUPS
  6. IPython4_Notebook
  7. SpringBoot中logback日志保存到mongoDB
  8. 分栏报表-物品清单报表实现
  9. Windows 10 全新开始屏幕曝光
  10. javaweb学习总结三(枚举)