XSS(跨站脚本攻击)
XSS(Cross-Site Scripting)是一种常见的 Web 安全漏洞,攻击者可以在受害者浏览网页时注入恶意脚本。根据攻击方式的不同,XSS 可以分为三种类型:反射型 XSS、存储型 XSS 和 DOM 型 XSS。
反射型 XSS
特点:
- 临时性:反射型 XSS 通常只在用户的当前会话中有效。
- 触发方式:当用户访问含有恶意脚本的 URL 时,脚本会被服务器反射回来并在用户的浏览器中执行。
- 常见来源:搜索框、登录表单、URL 参数等。
存储型 XSS
特点:
- 持久性:存储型 XSS 的恶意脚本被持久化存储在服务器上,对所有访问该页面的用户都构成威胁。
- 触发方式:当服务器加载含有恶意脚本的数据时,脚本就会被执行。
- 常见来源:评论、博客文章、论坛帖子等。
- 攻击载体:POST 请求、数据库等。
区别:
反射型XSS通过恶意链接将脚本反射回用户浏览器,存储型XSS将恶意脚本存储在服务器上并通过页面加载影响其他用户,而DOM型XSS则因客户端JavaScript错误处理输入导致恶意脚本在用户浏览器中执行。
XSS的fuzz字典,字典生成工具:
-
Upload-Fuzz-Dic-Builder: 这是一个用于生成文件上传漏洞fuzz字典的小工具,需要Python 2环境运行。https://github.com/c0ny1/upload-fuzz-dic-builder
-
Fuzz Dict: 这是一款更加强大的模糊测试字典生成工具,可以帮助开发者生成用于模糊测试的自定义字典,可以在GitCode找到:GitCode - 全球开发者的开源社区,开源代码托管平台
-
Xss-Sql-Fuzz: 这个工具不仅包含了XSS的检测功能,还生成了一组预定义的XSS攻击payload,涵盖了反射型、存储型和DOM型XSS,并且能够对目标URL发起请求来检查响应中是否存在恶意代码。https://github.com/jiangsir404/Xss-Sql-Fuzz
第一题
可以看到他的传参值点是test,而且传参值可以在页面中回显,下面又说了payload的长度为4,正好和上面的传参值字符长度对应上了
现在开始进行xss测试,先使用最简单的不带任何绕过方式的js代码进行传参测试
第二题
输入<script>alert(233);</script>,F12发现注入内容之前有 < 和 “ 未闭合。
需改为"><script>alert(233);</script>即可。
第三题
使用onfocus
onfocus
是一个事件处理器,用于处理当一个 HTML 元素获得焦点时触发的事件。当用户通过点击或键盘导航(如使用 Tab 键)将焦点移动到一个元素上时,就会触发 onfocus
事件。
输入'οnfοcus='alert(1)
第四题
同样使用onfocus,发现后面多了两个双引号,只需要在"οnfοcus=alert(1)的后面空格再写一个value占用后面的引号。即"οnfοcus=alert(1) value
第五题
如图,此题对<script>进行了修改(onfocus同样)
使用"><a href="javascript:alert()">lmx</a>
单机链接lmx,可解。
第六题
使用第五题的注入发现不行
通过大小写绕过
"><sCript>alert(233);</sCript>
第七题
写入"><script>alert(233);</script>发现script被隐去
重复写入即可。
"><scrscriptipt>alert(233);</scrscriptipt>
第八题
写入javacript:alert()发现script会被下划线隔开
将Javascript转换为UNICODE码:javascript
写入javascript:alert()
写入成功
第九题
无论输入什么结果友情链接都不变,是写死的,所以直接将Javascript:alert()写入href