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 
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值