网安云Logo
icon_account
科普
OWASP TOP 10之跨站脚本攻击
2024-03-08 10:12:45
181
0
跨站脚本攻击是OWASP Top10中第二普遍的安全问题,存在于近三分之二的应用中。

XSS的实质是HTML代码与Javscript代码的注入。但由于XSS的攻击对象是与客户对等的服务端,因此常常不被开发者所重视。

XSS是OWASP Top10中第二普遍的安全问题,存在于近三分之二的应用中。自动化工具能自动发现一些XSS问题,特别是在一些成熟的技术中,如: PHP、J2EE或JSP、ASP.NET。XSS对于反射和DOM的影响是中等的,而对于存储的XSS,XSS的影响更为严重,譬如在受攻击者的浏览器上执行远程代码,例如: 窃取凭证和会话或传递恶意软件等。

一、常见的三种XSS攻击类型

1、反射型 (Reflected XSs)

应用程序或API包含未经验证和未经转义的用户输入,作为HTML输出的一部分。若攻击者攻击成功,可使攻击者在受害者的浏览器中执行任意HTML和JavaScript。通常用户需要与指向攻击者控制的页面的某些恶意链接进行交互,例如恶意漏洞网站广告或类似内容。

2、存储型(Stored XSS)

应用程序或API将未初始化的用户输入存储了下来,之后在其他用户或者管理员的页面展示出来。存储的XSS通常被认为是高风险或严重风险。

3、DOM型(DOM XSS)

DOM:文档对象模型(Document Obiect Model),可以使程序和脚本能够动态访问和更新文档的内容结构以及样式。

DOM就是一个树状的模型,可以编写Javascript代码根据dom一层一层的节点,去遍历/获取/修改对应的节点,对象,值。DOM XSS 取决于输出位置,并不取决于输出环境,因此它既有可能是反射型的,也有可能是存储型的,简单去理解就是因为他输出点在DOM。dom - xss是通过url传入参数去控制触发的,只因为输出地点不同而导致结果不一致。

在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。

二、漏洞产生的原因

典型的XSS攻击可导致:

会话窃取

重定向到恶意链接

绕过MFA (Multi-Factor Authentication,多因子身份证)

DOM节点替换或损坏 (如特洛伊木马登录面板)

对用户浏览器的攻击(例如:恶意软件下载、恶意代码执行)以及其他用户侧的攻击

一般意义上的XSS通常可以用简单的方法检测出来:当用户输入中某个参数的全部或其中一部分,原封不动地在源代码里出现时,我们就可以认为这个参数存在XSS漏洞。

三、如何防御?

防止XSS需要将不可信数据与动态浏览器的内容分离。这可以通过如下步骤实现:

使用设计上就会自动编码转义来解决XSS的框架,如: Ruby 3.0 或 React JS。了解每个框架的XSS保护的局限性,并适当地处理未覆盖的用例;

为了预防反射型或存储型的XSS漏洞,最好的办法是根据HTML输出的上下文(包括: 主体、属性、JavaScript、CSS或URL) 对所有不可信的HTTP请求数据进行恰当的转义;

分析和强化客户端JS代码,特别是受到用户影响的DOM对象,注意能直接修改DOM和创建HTML文件的相关函数或方法;

在客户端修改浏览器文档时,为了避免DOM XSS攻击,最好的选择是实施上下文敏感数据编码。避免客户端文档重写、重定向或其他敏感操作,同时避免使用客户端数据,这些操作尽量在服务器端使用动态页面来实现;

使用内容安全策略 (CSP) 是对抗XSS的深度防御策略。

item.title
安全专家服务
item.title
专业售后支持
item.title
1V1大客户服务
item.title
7 * 24小时

热门产品

支持服务

控制台
在线支持

快速入门

文档中心

法律协议

网安云平台服务协议
网安云平台隐私政策

关注或联系我们

公众号二维码
添加网安云公众号,关注热门产品资讯。
联系我们联系我们
客服
免费试用
获取资源