热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

发现CVE201811512wityCMS

本篇文章给大家分享的是有关发现CVE-2018-11512-wityCMS0.6.1持久型XSS的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收

文章目录[隐藏]

  • WityCMS就是一个由creatiwiwiwiwiwity制作的CMS系统,它帮助管理不同用途的内容,如个人博客、商业网站或任何其他定制系统。在本文中,我将介绍如何设置CMS,查找web应用程序问题,以及如何复现CVE-2018-11512漏洞。
  • 环境安装(windows下安装xampp)
  • 查找漏洞
    • 因为这篇文章主要是关于CVE-2018-11512的,所以我今天就只找这个程序中的持久型XSS的洞,开始之前,我们先了解下什么是持久型XSS。
    • 根据OWASP的介绍,"跨站脚本攻击(xss)是一种注入类型的攻击手段,它允许恶意web用户将代码植入到提供给其它用户使用的页面中"。这意味着只要一个网站上存在注入点,xss就可能被触发。目前有三种类型的XSS,但是本文我将讨论常见的XSS,即反射型XSS和持久型XSS。
    • 当输入的数据被在发出请求后被返回给我们时,反射型XSS就会被触发。对于反射型XSS来说,网站的搜索功能可以作为一个测试反射型XSS的很好的例子。当用户在搜索框中输入一段payload后,该搜索功能可能会受到反射型XSS的影响。
    • 另外,持久型XSS也被称为"存储型XSS"。这种类型的XSS值会被保存在系统中的某个数据库或是文件中。XSS的利用点通常存在于可以让用户随时更改的设置操作中,比如用户的个人信息页,可以设置用户的电子邮件,姓名,地址之类的地方。也可能存在于用户可以自己更改的某些系统设置中。
    • 对于wityCMS,我的目标是找到可以在系统中保存数据的利用点。这基本上可以手工完成,也可以通过工具自动找到这些利用点。由于我已经在Windows中安装了它,所以我必须使用命令“findstr”而不是“grep”(抱歉,喜欢用"grep"的同学们)。可以在这里找到"findstr"的相关信息。
    • 恶意代码的文件,我们可以使用以下命令:">要列出可以输入恶意代码的文件,我们可以使用以下命令:
    • 这个结果肯定很让人惊喜,因为可能存在XSS的地方太多了。登录到管理员面板后,我们可以轻松的在输入框中输入我们的payload。通过访问http://localhost/witycms-0.6.1/,我们可以看到一个很明显的值,如图所示:
    • 我们安装这个CMS的时候设置了这个站点名称,它现在显示在主页上,不知道这个站点名称会不会存在持久型XSS,现在我们看看能不能在管理设置里修改这个值。
    • 使用安装时设置的管理员账号密码登录到管理面板,登录后,管理面板中会有一个这样的小链接:
    • 点击"Administration"后,网页会被重定向到我们安装时的执行设置操作的页面,第一个设置值也是网站名称。
    • 插入一个非常简单的XSS代码试试:
    • 点击"save(保存)"后,返回值为:
    • 可以注意到标签被过滤了,因此我们可以知道该系统中存在一个防护机制,所以现在我们需要找到这个防护机制的运行原理。
    • 当数据被保存到数据库中时,会处理一个请求。在这种情况下,我们应该能够识别请求方法是POST还是GET,在页面空白处右键单击"审查元素"查看源代码后,可以确认该方法是POST请求。
    • 从这点来看,我们应该尝试找到POST请求发生的地方,这样顺下去我们就可以看到防护机制的运行点。因此,在cmd中输入以下命令:
    • 这个命令类似于我们之前查找包含“input”标记的文件,但是这次,我们尝试在.php文件中查找引用"$_POST"的地方。
    • 由于过滤器函数没有递归,所以过滤器只能拦截这样的输入:
    • 所以输入这种内容是可以绕过过滤器的:
    • 在我们设置站点名称的输入框中输入以下内容,我们将会得到以下结果:
    • 一旦这个payload被设置为站点名称,访问网站的用户将会触发这个脚本,即使TA并没有经过身份验证。
    • 这就开启了新世界的大门,因为当用户访问网站时会执行某些恶意脚本可能会造成比较严重的后果。比如可以将用户重定向到钓鱼站点,在用户不知情的情况下执行矿机脚本,或者其他很多操作。
  • 处理CVE编号
    • 由于这个bug容易引起安全问题,并且这个CMS正在被数以千计的人使用,所以我决定给这个程序申请一个CVE编号,以此来获得一个公开的CVE条目。
    • 信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。cnas(cve-numbering-authorities)根据程序类型分别处理这些cve编号的漏洞。例如,如果联想设备中发现了安全问题,应该向联想的产品安全应急响应团队报告,在评估了漏洞后,他们将会给这个漏洞一个cve编号。">CVE 的英文全称是"Common Vulnerabilities & Exposures",CVE就好像是一个字典表,为广泛认同的计算机信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。CNAs(CVE Numbering Authorities)根据程序类型分别处理这些CVE编号的漏洞。例如,如果联想设备中发现了安全问题,应该向联想的产品安全应急响应团队报告,在评估了漏洞后,他们将会给这个漏洞一个CVE编号。
    • 这说明,如果同样是在CNA公司的产品或项目中发现了漏洞,他们评估后可以直接给出一个CVE编号,在CNAs的CVE的漏洞列表中可以通过编号直接找到这个漏洞。而对于wityCMS, CreatiWity这两个产品,其创建者没有注册到CNA,所以我们可以向MITRE公司申请这个持久型XSS漏洞的CVE编号,下面是处理CVE漏洞事件的步骤:
    • 为了让CVE处理的更快一些,描述中最好引用一些可以辅助理解漏洞的资料,并且详细地描述漏洞细节,如果可以,还应该写上漏洞可能有的修复方案。例如,在发送报告之前,我在这个项目的GitHub主页上发现了这个漏洞可能存在的点,因为有很多已经公开的关于存储型XSS的CVE漏洞,我找了其中的一个作为参考,然后通过这个漏洞想到了构造一个存储型XSS方法,并且注意到在这个GitHub项目中可能通过这个方法复现这个漏洞。
    • 最后一点小贴士

本篇文章给大家分享的是有关发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

WityCMS就是一个由creatiwiwiwiwiwity制作的CMS系统,它帮助管理不同用途的内容,如个人博客、商业网站或任何其他定制系统。在本文中,我将介绍如何设置CMS,查找web应用程序问题,以及如何复现CVE-2018-11512漏洞。
环境安装(windows下安装xampp)
  • 1.下载WityCMS0.6.1的源代码

  • 2.把/witycms-0.6.1 目录复制到C:/xampp/htdocs/ 下 或者是你自己安装xampp的的htdocs目录

  • 3.运行Apache和MySQL然后访问http://localhost/phpmyadmin/index.php.

  • 4.点击"databases"(中文版本的"数据库")

  • 5.创建一个名为"creatiwity_cms"的数据库

6.浏览器进入http://localhost/witycms-0.6.1/ 可以查看你的程序

7.填下"Site name(站点名称)"之类的内容,我添加了一个"Test",然后可以点击next进入下一步了

8.然后是定义系统的主页,你可以从选项中选择任何一个。

9.接着设置数据库,第5步那里我建了一个名为"creatiwity_cms"的数据库,所以在这我们要这样设置

10.输入管理员账号,然后点击"Launch install!(开始安装)"11.安装成功后的页面

查找漏洞

因为这篇文章主要是关于CVE-2018-11512的,所以我今天就只找这个程序中的持久型XSS的洞,开始之前,我们先了解下什么是持久型XSS。
根据OWASP的介绍,"跨站脚本攻击(xss)是一种注入类型的攻击手段,它允许恶意web用户将代码植入到提供给其它用户使用的页面中"。这意味着只要一个网站上存在注入点,xss就可能被触发。目前有三种类型的XSS,但是本文我将讨论常见的XSS,即反射型XSS和持久型XSS。
当输入的数据被在发出请求后被返回给我们时,反射型XSS就会被触发。对于反射型XSS来说,网站的搜索功能可以作为一个测试反射型XSS的很好的例子。当用户在搜索框中输入一段payload后,该搜索功能可能会受到反射型XSS的影响。
另外,持久型XSS也被称为"存储型XSS"。这种类型的XSS值会被保存在系统中的某个数据库或是文件中。XSS的利用点通常存在于可以让用户随时更改的设置操作中,比如用户的个人信息页,可以设置用户的电子邮件,姓名,地址之类的地方。也可能存在于用户可以自己更改的某些系统设置中。
对于wityCMS,我的目标是找到可以在系统中保存数据的利用点。这基本上可以手工完成,也可以通过工具自动找到这些利用点。由于我已经在Windows中安装了它,所以我必须使用命令“findstr”而不是“grep”(抱歉,喜欢用"grep"的同学们)。可以在这里找到"findstr"的相关信息。
恶意代码的文件,我们可以使用以下命令:">要列出可以输入恶意代码的文件,我们可以使用以下命令:

/S = Recursive searching
/P = Skip files with non-printable characters
/I = Case insensitive
/N = Prints the line number
/c: = String to look for

代码:

findstr /SPIN /c:"

这个结果肯定很让人惊喜,因为可能存在XSS的地方太多了。登录到管理员面板后,我们可以轻松的在输入框中输入我们的payload。通过访问http://localhost/witycms-0.6.1/,我们可以看到一个很明显的值,如图所示:

发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS的示例分析

我们安装这个CMS的时候设置了这个站点名称,它现在显示在主页上,不知道这个站点名称会不会存在持久型XSS,现在我们看看能不能在管理设置里修改这个值。
使用安装时设置的管理员账号密码登录到管理面板,登录后,管理面板中会有一个这样的小链接:

发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS的示例分析

点击"Administration"后,网页会被重定向到我们安装时的执行设置操作的页面,第一个设置值也是网站名称。

发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS的示例分析

插入一个非常简单的XSS代码试试:

发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS的示例分析

点击"save(保存)"后,返回值为:

发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS的示例分析

可以注意到标签被过滤了,因此我们可以知道该系统中存在一个防护机制,所以现在我们需要找到这个防护机制的运行原理。

发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS的示例分析

当数据被保存到数据库中时,会处理一个请求。在这种情况下,我们应该能够识别请求方法是POST还是GET,在页面空白处右键单击"审查元素"查看源代码后,可以确认该方法是POST请求。

发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS的示例分析

从这点来看,我们应该尝试找到POST请求发生的地方,这样顺下去我们就可以看到防护机制的运行点。因此,在cmd中输入以下命令:

findstr /SPIN /c:"$_POST" "c:/xampp/htdocs/witycms-0.6.1*.php"

这个命令类似于我们之前查找包含“input”标记的文件,但是这次,我们尝试在.php文件中查找引用"$_POST"的地方。发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS的示例分析

因为其他文件都与默认包含的库有关,这些都pass掉。所以命令的结果指向文WMain.hp,WRequest.php和WSession.php。浏览这些文件将我们发现在WRequest中有一个有趣的函数。如下所示,当防护机制发现脚本标示符时,这些标示符将被一个空字符串替换:发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS的示例分析

由于过滤器函数没有递归,所以过滤器只能拦截这样的输入:

发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS的示例分析

所以输入这种内容是可以绕过过滤器的:

发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS的示例分析

在我们设置站点名称的输入框中输入以下内容,我们将会得到以下结果:

发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS的示例分析

一旦这个payload被设置为站点名称,访问网站的用户将会触发这个脚本,即使TA并没有经过身份验证。

发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS的示例分析

这就开启了新世界的大门,因为当用户访问网站时会执行某些恶意脚本可能会造成比较严重的后果。比如可以将用户重定向到钓鱼站点,在用户不知情的情况下执行矿机脚本,或者其他很多操作。

处理CVE编号

由于这个bug容易引起安全问题,并且这个CMS正在被数以千计的人使用,所以我决定给这个程序申请一个CVE编号,以此来获得一个公开的CVE条目。
信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。cnas(cve-numbering-authorities)根据程序类型分别处理这些cve编号的漏洞。例如,如果联想设备中发现了安全问题,应该向联想的产品安全应急响应团队报告,在评估了漏洞后,他们将会给这个漏洞一个cve编号。">CVE 的英文全称是"Common Vulnerabilities & Exposures",CVE就好像是一个字典表,为广泛认同的计算机信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。CNAs(CVE Numbering Authorities)根据程序类型分别处理这些CVE编号的漏洞。例如,如果联想设备中发现了安全问题,应该向联想的产品安全应急响应团队报告,在评估了漏洞后,他们将会给这个漏洞一个CVE编号。
这说明,如果同样是在CNA公司的产品或项目中发现了漏洞,他们评估后可以直接给出一个CVE编号,在CNAs的CVE的漏洞列表中可以通过编号直接找到这个漏洞。而对于wityCMS, CreatiWity这两个产品,其创建者没有注册到CNA,所以我们可以向MITRE公司申请这个持久型XSS漏洞的CVE编号,下面是处理CVE漏洞事件的步骤:
  • 1.确认产品是否由CNA管理。如果由CNA管理,则报告该特定CNA的漏洞。如果不是,则报告给MITRE公司。

  • 2.通过google确认发现的漏洞是否已经分配了一个CVE编号。经常检查产品更新,以确认漏洞是否已经公开。

  • 3.对于wityCMS的情况,我使用了MITRE公司的CVE申请表单,可以在这里找到。

  • 4.在表格中填写所需的详细信息。关于wityCMS的这个漏洞,我是这样填的:

  • Vulnerability Type: Cross-Site Scripting

  • (漏洞类型:xss)

  • Product: wityCMS

  • (厂商:wityCMS)

  • Version: 0.6.1

  • (版本:0.6.1)

  • Vendor confirmed the vulnerability? No (Not acknowledged yet at the time - of request)

  • 厂商是否已确认该漏洞 没有 (漏洞提交时厂商未确认)

  • Attack Type: Remote

  • 攻击类型:远程

  • Impact: Code execution

  • (影响:代码执行)

  • Affected Components: Source code files showing “site_title” as output

  • 受影响的组件:输出"site_title"的源文件

  • Attack Vector: To exploit the vulnerability, one must craft and enter a script in the Site name field of the system

  • 攻击方式:必须在系统的站点名称字段中手工注入脚本

  • Suggested Description: Stored cross-site scripting (XSS) vulnerability in the "Website's name" field found in the "Settings" page under the "General" menu in Creatiwity wityCMS 0.6.1 allows remote attackers to inject arbitrary web script or HTML via a crafted website name by doing an authenticated POST HTTP request to admin/settings/general.

  • 漏洞详情:在creatiwitycms 0.6.1的“设置”菜单下的“网站名称”字段中存在存储型XSS漏洞,允许远程攻击者通过一个经过验证的POST HTTP请求向admin/ Settings / General注入任意的web脚本或HTML。

  • Discoverer: Nathu Nandwani

  • (发现者:Nathu Nandwani)

  • Reference(s): https://github.com/Creatiwity/wityCMS/issues/150, https://github.com/Creatiwity/wityCMS/co...229147de44

为了让CVE处理的更快一些,描述中最好引用一些可以辅助理解漏洞的资料,并且详细地描述漏洞细节,如果可以,还应该写上漏洞可能有的修复方案。例如,在发送报告之前,我在这个项目的GitHub主页上发现了这个漏洞可能存在的点,因为有很多已经公开的关于存储型XSS的CVE漏洞,我找了其中的一个作为参考,然后通过这个漏洞想到了构造一个存储型XSS方法,并且注意到在这个GitHub项目中可能通过这个方法复现这个漏洞。
最后一点小贴士
  1. 如果细节已经公开,那么CVE号处理只需要一两天,所以最好先与开发人员或与项目相关的响应团队进行沟通,以便进行适当的修复。

  2. CVE漏洞的细节应该是准确的。更改发送给CNAs的报告的细节将减慢审核的速度,这意味着必须首先确认漏洞,不要浪费双方的时间。

  3. 更多关于CVE漏洞提交的细节可以在这里找到。

  4. VulDB提供漏洞公开服务。注册一个VulDB账号,你可以在那里提交一个条目。例如,这里是这个安全问题的VulDB条目。

  5. 也可以提交到exploit-db.com。这不仅显示出问题确实存在,而且还为CVE编号增加了可信的参考,因为安全团队尽其所能地测试验证漏洞是否存在。这里是一个exploit-db.com条目,请注意它目前正在等待验证。提交说明可以在这里找到

以上就是发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS的示例分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。


推荐阅读
  • MySQL日志分析在应急响应中的应用与优化策略
    在应急响应中,MySQL日志分析对于检测和应对数据库攻击具有重要意义。常见的攻击手段包括弱口令、SQL注入、权限提升和备份数据窃取。通过对MySQL日志的深入分析,不仅可以及时发现潜在的攻击行为,还能详细还原攻击过程并追踪攻击源头。此外,优化日志记录和分析策略,能够提高安全响应效率,增强系统的整体安全性。 ... [详细]
  • MVVM架构~mvc,mvp,mvvm大话开篇
    返回目录百度百科的定义:MVP是从经典的模式MVC演变而来,它们的基本思想有相通的地方:ControllerPresenter负责逻辑的处理,Model提供数据,View负责显示。作为一种新的模 ... [详细]
  • SQLmap自动化注入工具命令详解(第28-29天 实战演练)
    SQL注入工具如SQLMap等在网络安全测试中广泛应用。SQLMap是一款开源的自动化SQL注入工具,支持12种不同的数据库,具体支持的数据库类型可在其插件目录中查看。作为当前最强大的注入工具之一,SQLMap在实际应用中具有极高的效率和准确性。 ... [详细]
  • 通过优化模板消息机制,本研究提出了一种高效的信息化推送方案。该方案利用获取的访问令牌(access token)和指定的模板ID,实现了精准且快速的信息推送,显著提升了用户体验和信息传递效率。具体实现中,通过调用相关API接口,确保了消息的准确性和及时性,为用户提供更加便捷的服务。 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 本文详细解析了如何使用 jQuery 实现一个在浏览器地址栏运行的射击游戏。通过源代码分析,展示了关键的 JavaScript 技术和实现方法,并提供了在线演示链接供读者参考。此外,还介绍了如何在 Visual Studio Code 中进行开发和调试,为开发者提供了实用的技巧和建议。 ... [详细]
  • 成功实现Asp.Net MVC3网站与MongoDB数据库的高效集成
    我们成功地构建了一个基于Asp.NET MVC3框架的网站,并实现了与MongoDB数据库的高效集成。此次更新不仅完善了基本的创建和显示功能,还全面实现了数据的增删改查操作。在创建功能方面,我们修复了之前代码中的错误,确保每个属性都能正确生成。此外,我们还对数据模型进行了优化,以提高系统的性能和稳定性。 ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • 在Laravel中实现PHP对JSON数据的发布与处理 ... [详细]
  • 利用Telnet进行Memcached操作详解
    在使用Telnet对Memcached进行操作前,需确保Memcached服务已启动。可通过命令如 `ps -ef | grep memcached` 或 `netstat -l | grep memcache` 来检查服务状态。此外,建议验证端口监听情况以确保连接无误。 ... [详细]
  • 深入解析Web.xml中Servlet与Filter的URL模式匹配机制 ... [详细]
  • 在处理大规模并发请求时,传统的多线程或多进程模型往往无法有效解决性能瓶颈问题。尽管它们在处理小规模任务时能提升效率,但在高并发场景下,系统资源的过度消耗和上下文切换的开销会显著降低整体性能。相比之下,Python 的 `asyncio` 模块通过协程提供了一种轻量级且高效的并发解决方案。本文将深入解析 `asyncio` 模块的原理及其在实际应用中的优化技巧,帮助开发者更好地利用协程技术提升程序性能。 ... [详细]
  • 技术日志:在Ubuntu 20.04上部署与移除MySQL 8的详细步骤
    技术日志:在Ubuntu 20.04上部署与移除MySQL 8的详细步骤 ... [详细]
author-avatar
黄家驹1994
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有