存储型XSS(Cross-Site Scripting)是一种常见的Web安全漏洞,它允许攻击者将恶意脚本注入到Web应用程序中,当其他用户访问包含这些恶意脚本的页面时,脚本将在他们的浏览器中执行,可能导致信息泄露、会话劫持或其他恶意活动,以下是关于CMS(内容管理系统)存储型XSS的CVE(Common Vulnerabilities and Exposures)详细分析:
1、
定义:存储型XSS是指应用程序通过Web请求获取不可信赖的数据,在未检验数据是否存在XSS代码的情况下,便将其存入数据库,当下一次从数据库中获取该数据时程序也未对其进行过滤,页面再次执行XSS代码,存储型XSS可以持续攻击用户。
危害:存储型XSS攻击方式主要是嵌入一段远程或者第三方域上的JS代码,并在目标域执行这些代码,存储型XSS会造成Cookie泄露,破坏页面正常的结构与样式,重定向访问恶意网站等。
2、具体案例分析
JEESNS:CVE-2018-19178,在JEESNS 1.3中,com/lxinet/jeesns/core/utils/XssHttpServletRequestWrapper.java允许通过HTML EMBED元素进行存储型XSS攻击。
JPress:CVE-2018-19170,JPress v1.0-rc.5中,通过前面三个输入字段,可进行存储型XSS攻击。
Tianti:CVE-2018-19089,Tianti是基于Java的轻量级CMS解决方案,Tianti 2.3通过tianti-module-admin/user/ajax/save_role name参数在用户列表模块存在存储型XSS漏洞。
EasyCms:CVE-2018-17369,EasyCms是一个开源cms系统,发表文章时,EasyCMS 1.3存在存储型XSS漏洞四个字段受到影响:标题,关键字,摘要和内容。
3、示例代码分析
缺陷代码:示例源于SamateJuliet Test Suite for Java v1.3,源文件名:CWE80_XSS__CWE182_Servlet_database_01.java,上述示例代码操作是获取用户姓名输出到页面,在第46行获取数据库连接对象,第49行创建查询语句查询id等于0的用户姓名,在第55行将结果集赋值给data,在第108行仅过滤<script>标签并输出给页面,事实上来自于数据库的数据被认为是不安全的,程序与用户交互时产生危险数据未经验证或绕过安全验证存入数据库,再从数据库中获取数据时,这些危险数据有可能导致信息泄露,页面劫持等安全威胁。
4、修复方法
输入验证:对所有用户输入进行严格的验证和过滤,确保不接受任何包含恶意代码的输入。
输出编码:在将数据输出到HTML页面之前,对数据进行适当的编码,以防止恶意代码被执行。
使用安全的API:使用安全的API和库来处理用户输入和输出,减少直接操作字符串的机会。
5、相关安全问题解答
Q1: 什么是存储型XSS?
A1: 存储型XSS是指应用程序通过Web请求获取不可信赖的数据,在未检验数据是否存在XSS代码的情况下,便将其存入数据库,当下一次从数据库中获取该数据时程序也未对其进行过滤,页面再次执行XSS代码,存储型XSS可以持续攻击用户。
Q2: 如何防止存储型XSS攻击?
A2: 防止存储型XSS攻击的方法包括输入验证、输出编码和使用安全的API,对所有用户输入进行严格的验证和过滤,确保不接受任何包含恶意代码的输入;在将数据输出到HTML页面之前,对数据进行适当的编码;使用安全的API和库来处理用户输入和输出,减少直接操作字符串的机会。
存储型XSS是一种严重的Web安全漏洞,它允许攻击者将恶意脚本注入到Web应用程序中,并在其他用户访问时执行这些脚本,为了防止这种攻击,开发者需要对所有用户输入进行严格的验证和过滤,并在输出数据到HTML页面之前进行适当的编码。
小伙伴们,上文介绍了“cms存储型xss的cve”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/59641.html<