首先访问靶场:
image.png其中发现当前路径显示在了页面上,于是尝试在url中加入参数再访问:
image.png也将请求参数显示在了页面上,再继续用测试,这次添加尖括号:
image.png也显示在了页面上,于是添加js语句进行测试:
image.png结果弹框了,很好。
然后查看一下dom.php的源码,主要代码如下:
image.png代码首先获取GET请求参数url的值,然后将其进行URL解码,判断url链接来源,如果符合条件,则进行xss敏感输入过滤,过滤好后将该URL拼接到一个iframe标签中,最终将该iframe标签添加到log.html的尾部。
如果插入iframe的页面存在xss漏洞即可。那就直接利用前面已经证明存在XSS漏洞的 http://120.203.13.75:6815/3/ 就好了。
但是如上面代码所示,url链接在拼接到iframe的src属性之前,会调用 SafeFilter() 函数对url链接进行安全过滤,该函数代码如下:
image.png可以看到,它过滤掉了很多javascript事件名,比如onclick,onchange等,但并没过滤onerror事件,所以这里先做个试验,
构造并访问url如下:
http://120.203.13.75:6815/3/dom.php?url=http://120.203.13.75:6815/3/?<img src=1 onerror=alert('abcdefgxss')>
然后访问 http://120.203.13.75:6815/3/log.html,发现执行了我们的js代码:
image.png于是,到XSS平台中获取payload如下:
image.png最终看到XSS平台已经接收到管理员的Cookie和flag:
image.png
网友评论