记录一次有意思的XSS

  前几天在漏洞挖掘中遇到个xss,感觉绕过过程蛮有意思的,写篇文章记录下。

  接下里是我对这个xss详细的分析和绕过

  存在问题站点******/index/appInfo?appId=784&url=xss

  当我查看源代码搜索xss:

  一处输出点:

记录一次有意思的XSS

 

  继续搜索第二处输出点:

     

记录一次有意思的XSS

 

 

两次输出,第一次输出是在input标签中,第二次是在js中,这里不考虑input中利用了。因为input的type为hidden,即使能够利用成功xss也非常的鸡肋:

 

记录一次有意思的XSS

 

所以不考虑input标签了,我们转战到js下构造代码让其弹窗。

  最简单的,我们先闭合引号,先输入:';alert(1);//

  

记录一次有意思的XSS

 

页面直接变成空白页。。是不是程序判断中过滤了 alert?

  我们尝试删除 alert:

  

记录一次有意思的XSS

 

还是 空白页,说明()被过滤了。

我们尝试删除()看看alert有没有被过滤:

  

记录一次有意思的XSS

 

页面显示依旧是空白,接着我尝试把alert替换成prompt和confirm等常用弹窗遇见 ,依旧是空白页,很明显这里对弹窗函数和过滤了(),我们再次尝试双引号("")有没有被过滤:

  

输入:******/index/appInfo?appId=784&url=xss';"xss";//

页面显示内容,然后再次查看源代码:

  

记录一次有意思的XSS

 

双引号没有被过滤。过滤了括号,一些弹窗函数。

  现在我们不抱着弹窗的目的看看能否执行一些简单的js操作,尝试用js代码跳转到百度:

  代码window.location.href="http://baidu.com"

  我们闭合然后构造:

  

记录一次有意思的XSS

 

 

发现还是显示空白页,说明过滤了,我猜测过滤window,我删除其他内容 保留window关键字:

  

记录一次有意思的XSS

 

只要有 window他就显示空白页面。说明对window做了过滤。

  window表示打开的当前窗口,表示当前的还有this关键字,这里过滤了window我们可以尝试使用this代替window:

  我们再次构造地址:******/index/appInfo?appId=784&url=xss';this.location.href="http://baidu.com";//

  这次他没有拦截,让我们跳转到了百度:

    

记录一次有意思的XSS

 

现在我们可以使用他进行url的跳转,现在我开始想着尝试弹窗,但是这貌似很难,因为他过滤的东西有点多。

  我尝试能不能使用dom节点写入:

  

记录一次有意思的XSS

 

又是空白页面,我保留document删除其他部分 :

  

记录一次有意思的XSS

 

我发现程序只要 有document他就会拦截你到空白页,对于dom来说,没有document是没有灵魂的。虽然过滤document但是我们还是有办法绕过的。

本地调试:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfpws.html