一次XSS测试经历
Posted 弥天安全实验室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一次XSS测试经历相关的知识,希望对你有一定的参考价值。
网安引领时代,弥天点亮未来
写在前面:
记一次input标签中的xss测试,测试步骤如下~
如下所示,可以闭合双引号,但是闭合标签的时候会被实体编码掉,该显示位位于input中,所以需要在input标签中形成xss
<input onmouseover="alert(1)"/>
<input onclick="alert(1)"/>
<input onfocus="alert(1)"/>
输入以上payload后发现均会被过滤掉,结果如下图所示:
进行双写绕过的时候,发现直接把
”onmouseover=”以及”onmouseover=”前面的字母给直接清除了,但是并没有清除掉双引号,所以我猜测应该是用的正则匹配的字母。
在特殊符号中不断的测试,发现“as+onmouseover=a” 会被直接清除掉只剩下一个“a”,但是as+aonmouseover=a”,则保留下了“asa”,直接把前后的内容拼接上了。
发现再次双写还是不行,又被清除了;
这时候猜想有两种可能:
1)循环过滤:直接采用循环的方式把内容过滤到没有危险字符了才会进入下一个处理流程
2)多次过滤: 非循环过滤,只是人工写的进行了2次或者2次以上的过滤操作
发现输入三次拼写的时候,成功的绕过了他的过滤,得到了我们想要的输出:“onmouseover=”(所以应该只是写了两次过滤)
"o+aon+aonmouseover=mouseover=nmouseover="alert`1`
一开始我输入的alert(1),但是发现会被过滤掉,所以选择了alert`1`
这样的payload需要人为的去点击才能触发,所以后续更新了一下触发方式,使用“onfocus=“属性加 “autofocus“可以自动触发聚焦,完成xss攻击
"autofocus+onf+aonf+ aonfocus=ocus=ocus="alert`1`" a="
1.采用循环过滤的方式过滤危险方法名
2.或者过滤双引号
弥 天
安全实验室
以上是关于一次XSS测试经历的主要内容,如果未能解决你的问题,请参考以下文章