一次XSS测试经历

Posted 弥天安全实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一次XSS测试经历相关的知识,希望对你有一定的参考价值。


网安引领时代,弥天点亮未来   




 


写在前面:

记一次input标签中的xss测试,测试步骤如下~

逃出闭合符号

如下所示,可以闭合双引号,但是闭合标签的时候会被实体编码掉,该显示位位于input中,所以需要在input标签中形成xss


寻找能在input标签中形成xss的payload
<input onmouseover="alert(1)"/><input onclick="alert(1)"/><input onfocus="alert(1)"/>

输入以上payload后发现均会被过滤掉,结果如下图所示:

一次XSS测试经历

FUZZ

1.双写

进行双写绕过的时候,发现直接把

”onmouseover=”以及”onmouseover=”前面的字母给直接清除了,但是并没有清除掉双引号,所以我猜测应该是用的正则匹配的字母。

一次XSS测试经历

一次XSS测试经历


2.FUZZ特殊符号

在特殊符号中不断的测试,发现“as+onmouseover=a” 会被直接清除掉只剩下一个“a”,但是as+aonmouseover=a”,则保留下了“asa”,直接把前后的内容拼接上了。

一次XSS测试经历

一次XSS测试经历


3.再次双写

发现再次双写还是不行,又被清除了;

这时候猜想有两种可能:

1)循环过滤:直接采用循环的方式把内容过滤到没有危险字符了才会进入下一个处理流程

2)多次过滤: 非循环过滤,只是人工写的进行了2次或者2次以上的过滤操作

一次XSS测试经历

4.三次拼写

发现输入三次拼写的时候,成功的绕过了他的过滤,得到了我们想要的输出:“onmouseover=”(所以应该只是写了两次过滤)

一次XSS测试经历

5.写出完整的payload
"o+aon+aonmouseover=mouseover=nmouseover="alert`1`

一开始我输入的alert(1),但是发现会被过滤掉,所以选择了alert`1`

一次XSS测试经历

一次XSS测试经历


6.更新触发方式

这样的payload需要人为的去点击才能触发,所以后续更新了一下触发方式,使用“onfocus=“属性加 “autofocus“可以自动触发聚焦,完成xss攻击

"autofocus+onf+aonf+ aonfocus=ocus=ocus="alert`1`" a="


修复建议

    1.采用循环过滤的方式过滤危险方法名

    2.或者过滤双引号



学海浩茫,
予以风动,
必降弥天之润!


   弥  天

安全实验室



以上是关于一次XSS测试经历的主要内容,如果未能解决你的问题,请参考以下文章

记一则有趣的存储XSS Bypass经历

浅析XSS的几种测试方法

渗透测试之XSS漏洞:记一次模拟注入攻击

案例解析一次针对XSS+CSRF构造蠕虫的渗透测试

投稿一次不完整的XSS混合渗透测试记录

一次小破站JS代码审计出XSS漏洞思路学习