XSS挖掘思路

1:输入点和输出点进行XSS

输入点
URL参数
表单内容
JSONP

输出点
输出在
标签之间,例如:
输出在
属性之中,例如:
输出在
注释之中,例如://document.getElementById(“order_select”).value=”输出”

2:扫描器

这里强烈推荐Xray,配合被动扫描,简直比一刀999还爽

Bypass

之前我根据CTF特训营的XSS Bypass写了篇文章:XSS绕WAF,大家可以看看

1:未经过任何过滤直接输出

XSS Bypass - 图1 XSS Bypass - 图2 click click


2:过滤关键字绕过

a、大小写绕过(仅限于未先转换为小写,直接替换关键字的情形)

XSS Bypass - 图3


b、双写关键词绕过(仅限于将关键字替换为空的情形,且仅仅替换一次的情形)**

alert(1)

XSS Bypass - 图4


c、编码绕过
编码绕过知识不是很了解,可以看我之前的文章:**XSS编码绕过讲解

放一些我常用的编码网站:编码解码在线107000工具站jsonsHTML字符实体转换

HTML实体字符 **
注意:标签名不能被编码

这里能绕过的原因就是因为HTML编码的地方在属性中,会自动解码

编码前

编码后 click


在放一个经典的例子**

click

最后的形式是以URL形式的,因为实体化中有#,#中**在URL**是注释的意思,传不过去

解码顺序:URL->HTML->URL->JS

编码顺序:JS->URL->HTML->URL(与解码顺序相反)

image.png**

因为在属性中,所以先HTML解码,结果如下
image.png

然后因为在href**,所以进行URL编码
image.png

最后因为Schema为Javascript,进行JS解码
image.png

最终结果就是:**
image.png
image.png**

3:过滤引号绕过

a、使用“/”替换引号

XSS Bypass - 图11

b、使用String.fromCharCode
fromCharCode可以对利用代码中的引号进行**编码处理,但是需要利用eval函数结合**进行使用

编码前

_ _ 编码后

4:过滤空格绕过

使用%0d、%0a绕过

编码前:XSS Bypass - 图12

编码后:

标签名称和第一个属性间可以使用 “/“ 代替空格

扩展知识点

1:拦截JS黑魔法

首先要了解CSS语法的知识,简单选择器和复杂选择器,定义在 标签闭合,进行XSS
image.png
image.png

2:JS解析模型

a.源码处理
判断代码语法是否正确
image.png

b.函数变量注册
函数和变量注册到全局中
image.png
image.png
**

实例

这里放一个某专属的存储XSS

思路:通过未授权进入后台,文章发布处未经过过滤,导致XSS

登录后台,查看源代码
image.png

可以看到成功跳转到index.html,我们访问一下看看,这里有两个按钮
image.png

有个很奇怪的现象,点击文章列表—>跳转到登录界面,点击添加文章—->直接可以添加
image.png

这里经测试,文章正文这没有进行过滤,有三处可以XSS,这里直接放效果了
image.png
image.png

image.png