XSS攻击

1、XSS

XSS(Cross Site Scripting)攻击全称跨站脚本攻击,为了不与CSS(Cascading Style Sheets)混淆,故将跨站脚本攻击缩写为XSS,XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
通俗的来说就是我们的页面在加载并且渲染绘制的过程中,如果加载并执行了意料之外的程序或代码(脚本、样式),就可以认为是受到了 XSS攻击。

  • XSS更多是发生在web前端的一种漏洞,所以危害的对象主要还是前端用户。

2、XSS的危害

  • 挂马。
  • 盗取用户Cookie、账号等信息。
  • DOS(拒绝服务)客户端浏览器。
  • 前端JS挖矿。
  • 钓鱼攻击,高级的钓鱼技巧。
  • 删除目标文章、恶意篡改数据、嫁祸。
  • 劫持用户Web行为,甚至进一步渗透内网。
  • 爆发Web2.0蠕虫。
  • 蠕虫式的DDoS攻击。
  • 蠕虫式挂马攻击、刷广告、刷浏量、破坏网上数据

3、XSS分类

  • 反射型:
    也叫非持久型XSS,交互数据一般不会被存在数据库里面,一次性,所见即所得。一般XSS代码出现在请求URL中,作为参数提交到服务器,服务器解析并响应,响应结果中包含XSS代码,最后浏览器解析并执行。

    场景:
    1、用户A给用户B发送一个恶意构造了Web的URL。
    2、用户B点击并查看了这个URL。
    3、用户B获取到一个具有漏洞的HTML页面并显示在本地浏览器中。
    4、漏洞HTML页面执行恶意JavaScript脚本,将用户B信息盗取发送给用户A,或者篡改用户B看到的数据等。

  • 存储型:
    也叫持久型XSS,主要将XSS代码提交存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。当目标用户访问该页面获取数据时,XSS代码会从服务器解析之后加载出来,返回到浏览器做正常的HTML和JS解析执行,XSS攻击就发生了。
    场景:
    1、用户A在网页上创建了某个账户,并且账户信息中包含XSS代码。
    2、用户B访问该网站查看XSS代码账户详情页面。
    3、服务端返回账户详情页面,和带XSS账户信息。
    4、用户B浏览器执行XSS代码,将用户B信息盗取发送给用户A,或者篡改用户B看到的数据等。

  • DOM型
    一种特殊的反射型XSS。由客户端的脚本程序可以动态地检查和修改页面内容,而不依赖于服务器端的数据。一般从url中提取数据中含xss,未过滤并在本地执行dom的渲染操作,输入来源多是document.location、document.URL、document.URLUnencoded、document.referrer、window.location等,而触发api多是document.write()、document.writeln()、document.innerHtml、eval()、window.execScript()、window.setInterval()、window.setTimeout()等。
    场景:
    1、用户B访问网站url中带有XSS代码参数。
    2、浏览器下载该网站JavaScript脚本。
    3、JavaScript脚本有个方法获取URL中XSS代码参数,并且用innerHtml渲染在dom中。
    4、触发XSS代码,造成XSS攻击,cookie数据失窃。

 

4、示例分析

1、入参不严谨,对入参没做任何规则校验。

2、用参太随意,对未知参数未过滤,直接丢给dom操作。

漏洞演示:机密性 - 窃取用户cookie信息

步骤一:

恶意用户A在有XSS漏洞的网站上新建一个用户,用户名包含xss恶意代码,网站将用户名保存到数据库。

步骤二:

用户B访问网站,查看A用户信息,网站将A用户用户名渲染在B浏览器上,并执行恶意代码。将B的cookie等敏感信息发送给A。

步骤三:

A窃取信息成功。

XSS(Cross-Site Scripting,跨站脚本攻击)是一种代码注入攻击攻击者在目标网站注入恶意脚本,使其在用户浏览器运行,利用恶意脚本获取用户敏感信息,危害数据安全。其本质是恶意代码未过滤,与正常代码混在一起,浏览器无法分辨,导致恶意脚本执行。可能被注入恶意脚本的内容包括来自用户的UGC信息、第三方链接、URL参数、POST参数、Referer(可能来自不可信来源)、Cookie(可能来自其他子域注入)等[^3]。 XSS攻击的危害主要是攻击者可获取用户的敏感信息,如Cookie、SessionID等。一旦这些信息被获取,攻击者就能利用这些信息模拟用户身份,进行各种操作,危害数据安全和用户隐私[^3]。 常见的XSS攻击方式有反射型、DOM型等,不同类型的攻击防范方法有所不同: - **反射型XSS**:攻击者构造含恶意脚本的URL,诱导用户点击,恶意脚本通过HTTP请求参数注入,反射回浏览器执行,且不持久存储在服务器。防范方法可对用户输入和输出进行严格过滤和转义,避免直接将用户输入的内容输出到页面。例如,对特殊字符如`<`、`>`、`"`、`'`等进行转义处理,使浏览器不将其解析为HTML标签或脚本代码。同时,要避免在URL参数中直接使用用户输入的内容,可对其进行加密或哈希处理[^2]。 - **DOM型XSS**:攻击中,取出和执行恶意代码由浏览器端完成,属于前端JavaScript自身的安全漏洞。防范时要对前端JavaScript代码进行严格审查,避免使用不安全的API,如`document.write()`、`innerHTML`等。如果必须使用这些API,要对输入内容进行严格过滤和验证。同时,要对用户输入的内容进行编码处理,确保其不会被解析为恶意脚本。例如,使用`encodeURIComponent()`对URL参数进行编码,使用`DOMPurify`等库对HTML内容进行净化处理[^1][5]。 ```python # 示例:Python中对特殊字符进行转义处理 def escape_html(text): html_escape_table = { "&": "&", '"': """, "'": "&apos;", ">": ">", "<": "<" } return "".join(html_escape_table.get(c, c) for c in text) input_text = '<script>alert("XSS")</script>' escaped_text = escape_html(input_text) print(escaped_text) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值