对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
1.获取用户cookie
2.钓鱼
3.Xss蠕虫
4.获取存储在浏览器的账号口令
...
1.过滤输入的数据,对例如:“ ‘ ”,“ “ ”,” < “,” > “,” on* “,script、iframe等危险字符进行严格的检查。
2.前后端进行数据校验,验证输入数据类型/格式、长度、范围和内容。
3.对输出到页面的数据进行相应的编码转换,如HTML实体编码、JS编码等。
Xss_reflected_get.php
服务端代码显示对前端输入的message未做任何限制
漏洞利用
前端长度限制maxlength,可修改之后输入测试语句#<script>alert(/xss/)</script>
POST_login.php
登录未进行限制校验,可以暴力破解(admin/123456)
Xss_reflected_get.php
后端代码分析,对输入的参数未进行校验过滤,直接带入前端代码执行
漏洞利用
#<script>alert(/xss/)</script>
Xss_Stored.php
1.后端代码分析留言输入仅仅对sql注入做限制,数据被插入数据库,能造成存储型xss
2.删除点代码分析,判断id值进行删除,且未做防注入过滤限制,明显存在sql注入
漏洞利用
1.存储型Xss
留言恶意语句<script>alert(/stored_xss/)</script>
访问留言页面则触发
2.sql注入测试
删除留言明显存在sql注入,直接点击删除留言内容在id后输入测试语句,猜解数据库长度测试当length(database())=7能正常删除及数据库库名长7,接着可猜解库名、表名、字段及字段内容
前端代码查看点击之后调用domxss函数,document.getElementById("dom").innerHTML;取标签的值,即用户输入的数据被传到前端dom处理在前端执行,和后端没有交互
漏洞利用
闭合,攻击
#' ><img src=x οnerrοr=alert(/xss/)>,点击click me!
代码分析点击提交之后调用domxss函数,获取url搜索目标,去掉+, document.getElementById("dom").innerHTML获取标签内容,原理都一样,获取传参调用js函数处理在前端执行。
漏洞利用
输入测试语句' ><img src=x οnerrοr=alert(/xss/)>
点击a标签”有些费尽心机想要忘记的事情,后来真的就忘掉了”触发
后端代码显示对输入的内容插入数据库,进行防sql注入处理,但未进行xss防御
漏洞利用
意见提交一波
#<script>alert(/xss_blind1/)</script>
登录后台查看
xss_01.php代码分析过滤了<script>标签
漏洞利用
可使用其他标签或者大小写等绕过
#<img src=x οnerrοr=alert(/xss/) />标签绕过
xss_02.php代码分析使用htmlspecialchars进行处理,理解函数预定义
变量输入后被写入a标签
漏洞利用
- 变量输入后被写入a标签(可考虑伪协议:JavaScript:alert(/xss/)触发)
- ' 成为 '(默认不开启)
可考虑使用伪协议触发或者事件标签触发
事 件:rv' οnfοcus='alert(/xss/)
伪协议:JavaScript:alert(/xss/)
xss_03.php
1.代码分析使用了实体编码
2.输出在a标签的href属性里面
漏洞利用
变量输出在a标签href,使用伪协议测试
#JavaScript:alert(/xss/)
xss_04.php代码分析这里输入内容被动态生成到网页的js代码中了,但输入并未做任何限制
漏洞利用
输出到如下js,直接</script>闭合测试,后接测试语句即可
闭合标签</script><script>alert(/xss/)</script>