xss绕过

1. 利用html标签的属性值

利用场景:标签支持JavaScript:code伪协议
对应防御:过滤JavaScript关键字

<iframe src=javascript:alert(1)>
<a href=javascript:alert(1)> 文本</a>
" ><svg x="" Onclick=alert(1)>

注释:
#
<!-- -->
//

Ps(
这个特殊的协议类型声明了url的主体时任意的JavaScript代码,有JavaScript解释器运行

2. 利用空字符

常用字符:空格 回车 tab键
应用场景:对JavaScript关键字进行了过滤

3. 利用事件

事件:用户或浏览器自身执行的某种动作
利用方法 <onlick=“alert(1)”>

onclick触发
onclick是鼠标点击事件。我们可以像如下这样在元素中定义 JavaScript 事件:


这个 JavaScript 代码当有人点击它后就会被执行,同时还有其他事件如页面加载或移动鼠标都可以触发这些事件。绝大部分的时间都被过滤器所移除了,但是依旧还有少量事件没有被过滤,例如,onmouseenter 事件:
当用户鼠标移动到 div 上时就会触发我们的代码。
另一个绕过的办法就是在属性和= 之间插入一个空格:

4. 大小写混合 

5. 引号的使用

6. 利用伪协议

7. 编码:

html进制编码
JavaScript编码
url编码
base64编码

编码绕过
有的时候,服务器往往会对代码中的关键字(如alert)进行过滤,这个时候我们可以尝试将关键字进行编码后再插入,不过直接显示编码是不能被浏览器执行的,我们可以用另一个语句eval()来实现,eval()会将编码过的语句解码后再执行。
JavaScript是很灵活的语言,可以使用十六进制、Unicode、HTML等进行编码,以下属性可以被编码。(支持HTML, Octal, Decimal,Hexadecimal, and Unicode)
href=
action=
formaction=
location=
on*=
name=
background=
poster=
src=
code=
data= //只支持base64

8. 黑名单绕过

在真实环境中,’ 、" 、( 、) 都是属于黑名单中的成员,如果遇到以上四个字符被过滤的情况,那么我们就需要使用其他字符去代替,或者编码的方式去绕过。如:
1.不使用 " <input οnfοcus=alert(‘1’) autofocus/>
2.不使用 ’
3.不使用 ( )
4.不使用 ’ " ( ) <input οnfοcus=alert1 autofocus/>
5.使用html实体编码绕过
6.使用html实体编码绕过变形

过滤了JavaScript
Java_Script
用编码,tab,空格,双写,不用它用事件

语句:

<script>alert(1)</script>
' onclick='alert(1)
### 关于XSS攻击中绕过空格限制的技术 跨站脚本攻击(XSS)是一种常见的安全漏洞,允许攻击者向网页注入恶意代码。在某些情况下,输入过滤机制可能会阻止特定字符的使用,例如空格,这会增加编写有效payload的难度。然而,攻击者可以通过多种技术来规避这些限制。 #### 使用Unicode编码替代空格 许多浏览器支持Unicode字符集,在这种场景下可以使用`\u0020`或其他不可见字符作为空格的替代品[^1]。这种方式能够有效地避开简单的字符串匹配检测逻辑。 ```javascript // 替代方案示例 alert('Test') // 正常写法 alert\u0028'Test'\u0029 // Unicode转义后的形式 ``` #### 利用HTML实体表示空白符 除了标准ASCII中的空格外,还有其他类型的空白字符可以在HTML环境中被解析并渲染出来。比如` `, `\t`(制表符), 或者更少见的一些如垂直制表(`\v`)等都可以尝试用于构造payloads[^3]。 #### 结合DOM特性实现无间隔调用 如果目标环境不允许任何形式的空间分隔,则可考虑完全移除对于空间的需求。JavaScript本身提供了灵活性使得函数名与参数之间并不一定非要存在可见间隙: ```html <script> var a=eval;b=prompt;c='';d=a(a(c+'a'+c+b+c)) </script> ``` 上述例子展示了如何无需任何传统意义上的“space”就能完成基本交互操作[^2]。 #### 修改Eslint规则并非解决方案 虽然调整ESLint配置可以让开发过程中减少针对`v-html`产生的警告信息[^4],但这并不能真正解决由其引发的安全隐患问题。最佳实践仍然是尽可能避免直接采用此类高风险功能,并实施严格的输入验证措施以及输出编码处理流程以防止可能发生的XSS威胁。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值