记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

CVE-2017-7985&7986:详细分析 Joomla!两处XSS漏洞

2017-05-14 13:20

CVE-2017-7985&7986:详细分析 Joomla!两处XSS漏洞。Joomla!是世界上最受欢迎的内容管理系统(CMS)解决方案之一。它可以让用户自定义构建网站实现强大的在线应用程序。据不完全统计互联网上超过3%的网站运行Joomla!,同时它占有全球9%以上的CMS市场份额。

截止至2016年11月,Joomla!的总下载量超过7800万次。目前Joomla!官方还提供了超过7800个扩展插件(含免费、收费插件)及其他的可用资源可供下载。

\

Joomla!官方提供插件总量(2017年5月5日)

今年,作为FortiGuard的安全研究员我挖到了两个Joomla!的存储型XSS漏洞。它们对应的CVE编号为:CVE-2017-7985和CVE-2017-7986。Joomla!官方与本周修复了这两个漏洞[1][2]。这两个漏洞影响Joomla!的1.5.0到3.6.5版本。这些版本受该漏洞影响的原因是因为程序没有对恶意用户输入的内容做有效的过滤。远程攻击者可以利用这些漏洞在用户的浏览器中执行任意JavaScript代码,潜在地影响是允许攻击者控制被攻击者Joomla!账户(译者注:攻击者可以利用XSS漏洞获取用户的cookies信息进而登录账户,也可以结合CSRF漏洞直接利用被攻击者向服务端发起请求执行相关操作。)如果被攻击者拥有一个较高的权限,如系统管理员,远程攻击者可以获得Web服务器的完全控制权(译者注:这里原作者说的不够严谨,应该是可以利用较高权限的账户利用后台的插件上传功能拿到webshell进而获得Web服务器的控制权)。

在这篇文章中我将详细分析这两个XSS漏洞,同时写了第二个XSS漏洞的利用代码,利用XSS漏洞获取CSRF token,创建高权限账户,最终拿到了webshell。

背景介绍

Joomla!拥有自己的XSS过滤器。举例来说,一个仅具有文章发布权限的用户在文章发布时不能使用所有的HTML标签。当用户发布一个内容中带有HTML标签的文章,Joomla!将会过滤类似“javascript:alert()”, “background:url()” 等可能有安全隐患的JavaScript代码。Joomla!使用两种方式去实现XSS过滤机制。一种是在客户端采用一个名为TinyMCE的编辑器在前端对用户输入的内容做过滤。另一种是在服务端,它先过滤HTTP请求中的敏感字符,然后再存储在服务端进行处理。

漏洞分析

为了演示这个漏洞,我们先创建一个名为'yzy1'的测试账户。该账户仅有作者(author)权限,即该权限下的用户在发布文章时不允许使用全部的HTML标签。

本次分析的两个漏洞为服务端XSS过滤机制的绕过,因此客户端的验证不在此次的研究范围,我们可以使用Burp Suite绕过前端校验,或者将Joomla!的默认编辑器修改为其他的编辑器(如:CoodeMirror)或者不使用编辑器。

\

图1.更改编辑器已绕过客户端XSS过滤器

下面我们就来着重说说绕过服务端XSS过滤机制的两个存储型XSS漏洞,他们对应的CVE编号是:CVE-2017-7985和CVE-2017-7986。

CVE-2017-7985

Joomla!的服务端XSS过滤器会过滤存在安全风险的代码,保存安全的字符。举例来说,当我们利用测试账户发布以下内容时:

style="background:url()"test

Joomla!会过滤这个字符串,给style="background:url()"加双引号,删除onerror=alert(1),给两处URL增加一个安全的链接,如图2所示:

\

图2. Joomla! XSS过滤器过滤后的内容

但是攻击者可以利用这个XSS过滤器重构代码、重建脚本实现XSS

漏洞。举个例子,我们可以利用测试账号发布如下内容:

style="background:url()'">test

注意不要漏掉background:url()'">

\

图3.插入CVE-2017-7985的PoC

当被攻击者访问这篇文章时,不管文章是否发布(译者注:作者的意思应该是发布的话影响前台用户,不发布的话影响后台管理页面),文章中插入的XSS代码将在首页或者后台管理页面执行,如图4、图5所示。

\

图4.在主页中触发CVE-2017-7985 PoC

\

图5.在后台管理页面中触发CVE-2017-7985 PoC

CVE-2017-7986

当发布文章时,攻击者可以修改标签中的属性值将"javascript:alert()"修改为"javascript:alert()"(:就是HTML格式的:冒号)来绕过XSS过滤器。攻击者可以在前边增加一个标签令利用代码执行。举个例子,攻击者可以将以下代码插入到文章中,如图6所示。

知识来源: www.2cto.com/article/201705/639183.html

阅读:109979 | 评论:0 | 标签:xss 漏洞

想收藏或者和大家分享这篇好文章→复制链接地址

“CVE-2017-7985&7986:详细分析 Joomla!两处XSS漏洞”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云