WEB漏洞—XSS跨站之WAF绕过及安全修复

WEB漏洞—XSS跨站之WAF绕过及安全修复

Snipaste_2022-05-12_15-24-32

常规WAF绕过思路:标签语法替换,特殊符号干扰,提交方式更改,垃圾数据溢出,加密解密算法,结合其他漏洞绕过

Snipaste_2022-05-14_10-04-19

这里我用单引号不行,访问结果是404,但是我用双引号就可以了,访问结果是200

#:类似于注释符

/:在html中有结束符的意思,因为一般的标签都是:这样的形式,所以html会认为【/】后面就没有东西了。

用其他类型的标签 “href” 和特殊符号干扰

Snipaste_2022-05-14_10-19-35

这里我虽然是可以成功,访问但是xss平台并没有任何反应

FUZZ

1
https://xssfuzzer.com/fuzzer.html

Snipaste_2022-05-14_11-02-58

采用网上的绕过方法

Snipaste_2022-05-14_11-08-25

这里使用了编码以及特殊符号,标签替换,编码要注意要对方可以解密才行,如果对方识别不了,也不行

自动化工具说明:XSStrike主要特点反射和DOM XSS扫描

特点:多线程爬虫,Context分析,可配置的核心,检测和规避 WAF,老旧的 JS 库扫描,智能payload生成器,手工制作的 HTML & ,JavaScript 解析器,强大的fuzzing引擎,盲打 XSS 支持,高效的工作流,完整的 HTTP 支持,Bruteforce payloads支持,Payload编码

使用参数说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-h, --help 		//显示帮助信息
-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 //使用代理
--blind //盲测试
--skip //跳过确认提示
--skip-dom //跳过DOM扫描
--headers //提供HTTP标头
-d, --delay //设置延迟

fuzz字典+bp

对方如果开了CC流量,我们发的量太大的话会被封IP

代理或者可以延长测试时间或者本地搭建一样的环境,测试好了再去!

Snipaste_2022-05-14_17-27-29

这里还有一个WAF的检测,这里的话我用的是安全狗,而且是开启的状态,为啥这里检测不出来呢?因为这个软件是国外人写的,所以针对的是国外的一些出名的WAF,然后安全狗只是针对国内的市场来说的。所以这里检测不到

这里黄色代表的是被拦截或者不响应,也有可能是误报,绿色表示可以

【绿色】

Snipaste_2022-05-14_17-32-39

【黄色】这里我的理解是可以看到之前都是 “欢迎用户” 然后这里是如下图,名字也就是name是你输入语句的字符串,这也不算拦截,所以我又觉得是误报

Snipaste_2022-05-14_17-35-19

如果不加这个fuzzer的参数的话,会自动帮你检测有哪些payload可以使用,这里我随机用了一个

<a/+/OnmOUsEover%0d=%0d[8].find(confirm)%0dx>v3dm0s

Snipaste_2022-05-14_17-53-40

刷新页面之后,只要鼠标移动到页面的这个有图像或者上面这个欢迎用户这里,还有下面的payload的长度的地方,都会有一个弹窗8,我现在是安全狗开启状态, 如果是有弹窗的script的代码的话是会进行拦截的,但是这里没有拦截就说明绕过成功了

除了手工还有刚刚说的这个xss的自动化工具,还有上面介绍的一个网页形式的自动化测试,除此之外还有上几节课,有可能是文件上传那一章说过的别人写好的FUZZ字典,然后用burp跑那个字典,同样是可以对这个xss进行测试的

Snipaste_2022-05-14_18-02-55

先抓到数据包

Snipaste_2022-05-14_18-04-21

burp会自动帮你在可能要测试的地方,插入测试点,这里先clean,也就是删除所有测试点

Snipaste_2022-05-14_18-04-39

Snipaste_2022-05-14_18-06-06

Snipaste_2022-05-14_18-06-18

Snipaste_2022-05-14_18-07-23

Snipaste_2022-05-14_18-32-01

我这里长度为3061就是被安全狗拦截了。

Snipaste_2022-05-14_18-38-01

双击这个数据包

Snipaste_2022-05-14_18-38-14

这里就是payload可以直接复制,也可以像下面这样复制数据包中的,但是如果直接复制数据包中的话需要把url的编码转化一下

Snipaste_2022-05-14_18-38-51

Snipaste_2022-05-14_18-39-11

填写payload

Snipaste_2022-05-14_18-41-07

成功

安全修复方案
开启httponly,输入过滤,输出过滤等

1
2
PHP:http://www.zuimoge.com/212.html
JAVA:https://www.cnblogs.com/baixiansheng/p/9001522.html

涉及资源

1
2
3
4
5
6
https://gitee.com/jadmin/imxss
https://github.com/3xp10it/xwaf
https://xssfuzzer.com/fuzzer.html
https://github.com/s0md3v/XSStrike
https://bbs.pediy.com/thread-250852.htm
https://github.com/TheKingOfDuck/fuzzDicts