DOM XSS 手动测试方法

78 阅读1分钟

image.png

这里以一道实例题目为参考,假设你遇到一个疑似 DOM XSS 的网站,要如何测试呢。

因为这里写着获取 location.hash 那么你直接在 URL 后面加 #test123 可以吗

image.png

实际上这样做是没有意义的,因为页面是需要等待 JS 执行完毕之后才完全渲染的,而且渲染过程中的数据又不会放到 HTML 里面去。

那么如何去测试呢?

这个时候,可以尝试去调试 JS。

image.png

来到源代码页面,然后给 setTimeout("aa('"+x+"')",100); 这里打上断点,然后在 URL 后面加 #test123 回车。

image.png

这里可以看到,代码已经停止运行,并且鼠标放到 x 上时,还可以看到数据,这个时候点击 单步执行

image.png

就可以看到我们最终执行的代码了,这样你就可以随意测试了。

image.png

这样就可以比较简单的找到方法来闭合、分割 XSS 代码了,我这里使用的是 - 来分割,JS 中还存在很多的运算符号都可以用来分割,这在一些符号被过滤的时候非常有用:

+
-
*
/
&
|
^
~
!
in
instanceof
/abc/i
[]
{}
()
%
**
>
<
>=
<=
==
!=
===
!==
<<
>>
>>>
&&
||
??
?.

使用方法参考:developer.mozilla.org/zh-CN/docs/…