XSS 的绕过和防御

0x00:简介

最近在整理 TOP10 的审计点,上篇文章介绍了 A3XSS 问题,这里的 TOP10 是以 2013 的来记录的,对于 XSS 因为篇幅原因上篇只记录了一些示例代码,这篇顺便补充一下 XSS 的绕过和防御。

0x01:绕过

XSS 绕过方法很多,涉及到的面也非常广泛,我们这里只记录常见的一些绕过方式。

1,最基本的就是利用 <> 来写入 html 和 js 代码,例如以下示例。

<script>alert(1);</script>

所以对于防 xss 首先就需要过滤和转义 <、>、<script>等字符。

2,利用 html 标签属性值来执行 xss,很多 html 标签的属性都支持 javascript:[code] 伪协议的形式,其声明了用 js 来执行 code 代码,例如以下示例。

<table background="javascript:alert(1)"></table>
<img src="javascript:alert(1);">

当然并不是所有的浏览器都会这样执行,有些浏览器并不支持 js 伪协议,所以这种方式有其局限性,我们示例就使用这种伪协议了,当然 script、on 等关键字都同样适用,同时我们也可以看见,防御 xss 一定要过滤 js 的关键字。

3,空格回车 Tab 方式,如果程序把敏感字符和关键字进行了过滤,那么我们可以利用空格、回车、Tab 等来尝试绕过,例如以下示例。

<img src="javas    cript:alert(1)">
<img src="javas__    cript:__    alert(1)">

以上第一个在 javascript 中插入了 tab 键,第二个使用了回车,除了 tab 我们也可以使用回车空格等,在 script 和各种 on 事件中也可以使用,js 解析时会以分号来判断一个语句是否结束,所以添加空格、回车、tab 等并不会影响语句的正常执行。

4,对标签属性值进行转码,在 html 的属性中是支持 ASCII 码的,因为计算机只能接受数字信息,所以 ASCII 码会将字符作为数字来表示,例如以下示例。

<img src="javascript:alert(1);">
<img src="javascrip&#116&#58alert(1);">

t 的 ascii 码为 116,:的 ascii 码为 58,以上是转码后的效果,同理,以下代码同样会生效。

<img src="&#34;&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;&#59;&#34;&#47;">
<img src="&#000034;&#0000106;&#000097;&#0000118;&#
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
XSS(跨站脚本攻击)绕过技术是指攻击者通过各种手段绕过网站的安全防护机制,成功注入恶意脚本,以获取用户的敏感信息或对网站进行破坏。 XSS攻击的目标是网站的代码注入点,攻击者往往通过合法的用户输入来注入恶意脚本。为了绕过网站的安全措施,攻击者会利用一些特殊的技术和手段,以下是一些常见的XSS绕过技术: 1. 字符编码绕过:攻击者使用特殊的字符编码方式,如URL编码、HTML实体编码等,来绕过网站的过滤机制,使恶意脚本不被识别。 2. HTML标签绕过:攻击者可以利用一些HTML标签的特性和属性,如<img>、<script>标签等,来注入恶意脚本。 3. DOM绕过:攻击者通过修改DOM(文档对象模型)树结构,来绕过网站的脚本过滤机制,达到执行恶意脚本的目的。 4. JavaScript绕过:攻击者可以利用JavaScript的一些特性和漏洞,如eval()函数、setTimeout()函数等,来执行恶意脚本,并绕过网站的安全检测。 为了有效防御XSS攻击,网站开发人员应采取以下措施: 1. 输入过滤和验证:对用户输入进行过滤和验证,防止恶意脚本的注入。可以使用白名单或黑名单机制,限制特定的字符和标签的使用。 2. 输出编码和转义:在将用户输入展示在网页上时,对特殊字符进行编码和转义,确保输入不会被当作代码执行。 3. 使用安全框架和库:使用经过安全测试和验证的框架和库,如jQuery、AngularJS等,减少XSS攻击的风险。 4. 定期更新和修补漏洞:及时更新和修补网站的漏洞,包括服务器和应用程序的补丁,以防止新的XSS攻击技术被利用。 总之,要有效防御XSS攻击,网站开发人员需要加强对安全问题的意识和理解,采取综合的安全措施来保护用户的数据和网站的稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值