0x01 漏洞原理:XSS 究竟是个啥玩意儿?
简单来说,XSS 就是应用程序在给浏览器“发货”时,夹带了用户提交的“不良信息”,而且还没经过严格的质检。结果浏览器一看,这玩意儿能执行啊,得嘞,直接开干!
别怕,这个“跨”其实是浏览器的一个小脾气,不是啥大毛病。
记住: 浏览器有个规矩,叫“同源策略”,意思是只有发 Cookie 的网站才能读取 Cookie。
XSS 搞事情,轻则窃取你的 Cookie,重则劫持你的 Web 行为,甚至联合 CSRF 来一波精准打击!
0x02 XSS 的三大流派
反射型 XSS:
这种 XSS 就像**“一次性用品”,在搜索栏、登录页面等地方出没。攻击者会想方设法诱骗你点击一个链接**,一旦你点了,Cookie 就可能被盗走,然后你就等着被钓鱼吧!
存储型 XSS:
这种 XSS 就像**“牛皮癣”**,一旦被种下,就会长期存在。它经常出现在留言、评论、博客日志等互动区域,直接威胁 Web 服务器的安全。
DOM 型 XSS:
这种 XSS 就像**“隐形刺客”**,基于浏览器的“文档对象模型”搞事情。
注意: DOM 型和反射型类似,都需要你点击攻击者精心炮制的 URL。
关键点: DOM 型 XSS 是通过 URL 传入参数来控制触发的。
重点: DOM 型 XSS 返回的页面源码里看不到你输入的 Payload,它藏在浏览器的 DOM 里!
举个栗子: 假设你的页面里有这么一段脚本:
<script>
var message = location.hash.slice(1); // 从 URL 的 hash 中获取参数
document.write(message); // 将参数写入页面
</script>
如果攻击者把 JavaScript 代码作为 message
的参数,这段代码就会被动态写入到页面中,然后像服务器返回的代码一样被执行!
所以,DOM 型 XSS 和反射型 XSS 一样,都需要你主动去点攻击者构造的 URL!
如何揪出 XSS 这个小坏蛋?
基本验证:
"><script>alert(document.cookie)</script>
把这段代码提交给每个页面的每个参数,然后盯着响应。如果攻击字符串原封不动地出现在响应里,那恭喜你,可能找到 XSS 了!
绕过姿势:
有些 App 可能会用黑名单过滤,想阻止 XSS 攻击?Too young, too simple!
"><ScRiPt>alert(document.cookie)</ScRiPt>
DOM 型 XSS 的特殊之处:
记住,DOM 型 XSS 的 Payload 不在服务器的响应里,它藏在浏览器的 DOM 里,而且能被客户端 JavaScript 访问。所以,上面的基本验证方法可能失效。
0x03 实战演练:XSS 漏洞大赏
反射型 XSS 案例:
案例 1:标签属性值
假设页面里有这么一段代码:
<input type="text" name="name" value="test-text">
搞事情的姿势: 结束双引号,再来一段脚本!
"><script>alert(1)</script>
案例 2:JavaScript 字符串
假设页面里有这么一段代码:
<script>var a='test-text'; var b=123;...</script>
搞事情的姿势: 用分号结束语句,插入恶意代码!
'; alert(1); var foo='
案例 3:URL 特性
假设页面里有这么一段代码:
<a href="test-text">Click here</a>
搞事情的姿势: 利用 javascript:
协议!
javascript:alert(1);
各种“奇技淫巧”:
- 脚本标签:
<script>alert(1)</script>
- 事件处理器:
<img onerror=alert(1) src=a>
- 脚本伪协议:
<object data=javascript:alert(1)></object>
绕过过滤的 N 种姿势:
- HTML 标签名称:
- 大小写混用:
<iMg onerror=alert(1) src=a>
- 插入 NULL 字节:
<[%00]img onerror=alert(1) src=a>
- 标签名称后加空格:
<img[%09]onerror=alert(1) src=a>
- 大小写混用:
- 属性名称:
- 绕过
on
开头的过滤器:<img o[%00]nerror=alert(1) src=a>
- 用其他字符分隔属性:
<img onerror='alert(1)' src=a>
- 绕过
- 属性值:
- NULL 字节或 HTML 编码:
<img onerror=a[%00]lert(1) src=a>
- HTML 编码、十六进制编码、Base64 编码、ASCII 编码
- NULL 字节或 HTML 编码:
- 字符集: UTF-7、US-ASCII、UTF-16
- 拆分跨站:
<script>z='<script src=';/*
最终执行<script>
脚本代码的绕过技巧:
- Unicode 转义:
<script>alert(1)</script>
- Eval 大法:
<script>eval('alert(1)');</script>
- 用
[]
代替.
:<script>alert(document['cookie'])</script>
存储型 XSS 案例:
- 确定存储型 XSS 的方法和反射型类似,但也有区别。
- 提交恶意字符串后,要反复检查 App 的所有功能。
- 检查管理员才能访问的区域,看看是否有可被普通用户控制的数据。
- 检查 App 的整个流程,确保测试彻底。
- 检查可控的带外通道,比如 HTTP 消息头。
在上传文件中搞事情:
如果 App 允许用户上传文件,而且这些文件能被其他人看到或下载,那就可能存在存储型 XSS。
举个栗子: 上传一个 HTML 文件,看看能不能执行。
进阶操作: 把 XSS 的 Payload 藏在图片里,上传到用户头像!
DOM 型 XSS 案例:
关键: 检查客户端 JavaScript 代码,看看是否使用了可能导致漏洞的 DOM 属性。
重点关注这些 API:
document.location
特别注意:
document.write()
小技巧: 服务器不解析 URL 中 #
后面的内容。
如何防止 XSS?
- 确认输入: 别让数据太长!
- 确认输出: 对用户提交的数据进行 HTML 编码,净化恶意代码!
- 消除危险插入点: 尽量避免在 JavaScript 中插入用户可控的数据!
- 允许有限的 HTML:
- 客户端:确认插入的数据只包含字母数字和空白符。
- 服务端:严格确认 URL 数据,查询字符串中只有一个参数。
0x04 XSS 防御:终极方案
- Content Security Policy (CSP):
- 禁止加载外域代码,防止复杂的攻击逻辑。
- HTTP-only Cookie:
- 禁止 JavaScript 读取某些敏感 Cookie。
- 验证码:
- 防止脚本冒充用户提交危险操作。
0x05 总结:XSS 攻防之道
快速发现 XSS 的方法:
- 反射型 XSS: 找输入点,构造 Payload,监控响应。
- DOM 型 XSS: Payload 不在服务器响应里,藏在浏览器的 DOM 里。
- 存储型 XSS: 输入 Payload,看是否被过滤;反向猜测输出点,构造 Payload。
XSS 蠕虫的产生条件:
- 可以执行恶意操作。
- 可以感染并传播。
XSS 如何打到内网后台?
- XSS 平台拿 Cookie 登录后台,或者钓鱼拿登录信息。
- 找上传点 GetShell。
- 结合 MSF 使用。
- 用 XSS 扫描内网端口。
- 利用探测出来的信息进一步利用,比如 Redis。
黑客&网络安全如何学习**
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我们和网安大厂360共同研发的的网安视频教程,之前都是内部资源,专业方面绝对可以秒杀国内99%的机构和个人教学!全网独一份,你不可能在网上找到这么专业的教程。
内容涵盖了入门必备的操作系统、计算机网络和编程语言等初级知识,而且包含了中级的各种渗透技术,并且还有后期的CTF对抗、区块链安全等高阶技术。总共200多节视频,200多G的资源,不用担心学不全。
因篇幅有限,仅展示部分资料,需要见下图即可前往获取
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
————————————————
本文转自 https://blog.youkuaiyun.com/A1_3_9_7/article/details/149256302?spm=1001.2014.3001.5502,如有侵权,请联系删除。