XSS挖掘思路
1:输入点和输出点进行XSS
输入点
URL参数
表单内容
JSONP
输出点
输出在标签之间,例如:
输出在属性之中,例如:
输出在注释之中,例如://document.getElementById(“order_select”).value=”输出”
2:扫描器
这里强烈推荐Xray,配合被动扫描,简直比一刀999还爽
Bypass
之前我根据CTF特训营的XSS Bypass写了篇文章:XSS绕WAF,大家可以看看
1:未经过任何过滤直接输出
2:过滤关键字绕过
a、大小写绕过(仅限于未先转换为小写,直接替换关键字的情形)
b、双写关键词绕过(仅限于将关键字替换为空的情形,且仅仅替换一次的情形)**
alert(1)
c、编码绕过
编码绕过知识不是很了解,可以看我之前的文章:**XSS编码绕过讲解
放一些我常用的编码网站:编码解码在线、107000工具站、jsons、HTML字符实体转换
HTML实体字符 **
注意:标签名不能被编码
这里能绕过的原因就是因为HTML编码的地方在属性中,会自动解码
在放一个经典的例子**
最后的形式是以URL形式的,因为实体化中有#,#中**在URL**是注释的意思,传不过去
解码顺序:URL->HTML->URL->JS
编码顺序:JS->URL->HTML->URL(与解码顺序相反)
**
因为在属性中,所以先HTML解码,结果如下
然后因为在href**中,所以进行URL编码
最后因为Schema为Javascript,进行JS解码
最终结果就是:**
**
3:过滤引号绕过
a、使用“/”替换引号
b、使用String.fromCharCode
fromCharCode可以对利用代码中的引号进行**编码处理,但是需要利用eval函数结合**进行使用
编码前
_ _ 编码后
4:过滤空格绕过
使用%0d、%0a绕过
编码前:
编码后:
标签名称和第一个属性间可以使用 “/“ 代替空格
扩展知识点
1:拦截JS黑魔法
首先要了解CSS语法的知识,简单选择器和复杂选择器,定义在 标签闭合,进行XSS
2:JS解析模型
a.源码处理
判断代码语法是否正确
b.函数变量注册
函数和变量注册到全局中
**
实例
这里放一个某专属的存储XSS
思路:通过未授权进入后台,文章发布处未经过过滤,导致XSS
登录后台,查看源代码
可以看到成功跳转到index.html,我们访问一下看看,这里有两个按钮
有个很奇怪的现象,点击文章列表—>跳转到登录界面,点击添加文章—->直接可以添加
这里经测试,文章正文这没有进行过滤,有三处可以XSS,这里直接放效果了