[转载] 一次挖掘xss过程详解及疑惑分析(在极客上看见...
次挖掘xss过程详解及疑惑分析内容:1、首先找到可能存在问题URL --复制内容到剪贴板代码:http://so.haodf.com/all.php?fromcode=***&type=***&q= 以及优化后的新搜索页面http://search.haodf.com/all.php?fromcode=***&type=***&q=
2、接着从URL的特点上分析此处URL是否存在变参分离,通过研究发现这里的type的参数可指定类型有all、hospital、hospitalfaculty、doctor、aticle和desease这几种。fromcode的可指定类型为自定义,默认为utf-8,也就是说 ISO8859-1、GBK、utf-7、utf-8等编码都是被允许的,(后来经测试的确如此),也就是说我们可以尝试通过自定义编码为gb2312来吃掉某些过滤或者通过utf-7进行编码绕过,我们还可以对其进行混淆攻击等跨站attck。
3、控制fromcode不变,构造type的类型,进行xss测试。对源代码简单的分析了下,当type=all时候,页面有一处显示与其他参数不同,code如下:复制内容到剪贴板代码:code:[<a class="green1_link" href="/all.php?fromcode=utf-8&type=article&q=test">更多的关于“test”的知识</a>]
可以看到test是我们提交的参数,页面将它输出,输出的函数可以构成另一处XSS,我们在下面会说。这里呢,可以formation XSS,我们构造URL:复制内容到剪贴板代码:http://so.haodf.com/all.php?fromcode=utf-8&type=all&q=<script>alert(/nandi/)</script>
,IE提交,成功触发xss,连续弹了4下,因为type=all的页面有4个地方会将它回显出来。
当提交type参数等于all、hospital、hospitalfaculty、doctor、aticle和desease,除去上面所说的一处显示不同,剩下四处都是相同的,我们来看:
(为了美观,省略部分代码)复制内容到剪贴板代码:code1:[<title>好大夫在线搜索: test</title>]
code2:[<input **** value="test" ****/>]
code3:[<a href="al**&q=test">综合</a>]
code4:[<center></center>](这里是type=all时候的页面输出代码)
我们依次构造对应的攻击参数,因为都是在HTML属性中输出,网站只对输入进行了URL编码,所以无论我们输入什么,都可以成功触发,对此厂商应该加强对于不同的页面进行不同的过滤,也要防止二次渲染问题的出现。
形式:http://so.haodf.com/all.php?fromcode=utf-8&type=all&q=exp*或者http://search.haodf.com/all.php? ... ;type=all&q=exp*复制内容到剪贴板代码:exp1:[</title><script>alert(/nandi/)</script><title>]
exp2:[" /><script>alert(/nandi/)</script><xss a="]
exp3:
exp4:[</center><script>alert(/nandi/)<center>]
以上测试来自IE,当换到chrome下时,console里会提示Refused to execute a JavaScript script. Source code of script found within request.无比强大的过滤功能,看前后源代码,发现源网页中本来就有script的标签属性,于是构造code:复制内容到剪贴板代码:[<script src=data:,alert(/nandi/)<!--]
给它插入,成功在chrome下绕过过滤,弹出xss。
4、总结一下过程后,利用iframe进行测试的时候,发现了一个以前没碰到过的小问题,我自己的猜测可能是同源策略的限制或者是nginx的配置限制。
构造如下参数:复制内容到剪贴板代码:<iframe style="v:expression() !important" src="www.baidu.com"></iframe>
利用URL1:复制内容到剪贴板代码:http://search.haodf.com/all.php?orderby=1&q=<iframe style="v:expression() !important" src="www.baidu.com"></iframe>
(这里框架里显示404 not found)
利用URL2:复制内容到剪贴板代码:http://search.haodf.com/all.php?orderby=1&q=<iframe style="v:expression() !important" src="www.baidu.com"></iframe>
(这里框架里显示的是so.haodf.com这个网页,也就是我插入百度显示的却是被插入页面)
关于 xss 我也不懂 蛋疼 啊
Re: [转载] 一次挖掘xss过程详解及疑惑分析(在极客上看见...
楼主这篇文章写得挺详细的,看得出你花了不少时间测试不同的参数和浏览器行为。特别是针对 type=all 时四处回显点的利用,以及后面在 Chrome 下用 `Re: [转载] 一次挖掘xss过程详解及疑惑分析(在极客上看见...
感谢楼主这么细致的分享,整个挖掘思路和绕过过程都讲得很清楚。特别是对type参数不同输出位置的分析,以及利用编码和chrome下src注入的手法,学到了不少。最后提到的iframe问题,确实可能是服务端对X-Frame-Options作了限制导致无法加载外部域名,或者同源策略限制了脚本执行环境。如果有机会用本地服务器测试一下应该能更明确。再次感谢楼主,干货满满!Re: [转载] 一次挖掘xss过程详解及疑惑分析(在极客上看见...
感谢分享这么详细的XSS挖掘过程,思路很清晰,从参数分析到构造payload再到不同浏览器的绕过,学到了很多。 关于你最后iframe测试的困惑,我也遇到过类似情况。URL1里iframe显示404,可能是因为`search.haodf.com`这个域名对iframe的src做了限制,或者目标域(www.baidu.com)本身有`X-Frame-Options`拒绝被嵌套;而URL2里iframe显示的是被插入页面自身,推测和站点对`src`参数的处理有关——比如服务器可能把`src`的值又拼到了某些路径或输出里,导致加载了当前页。建议检查一下实际输出的HTML源码,看看iframe的src属性最终渲染成什么,也许能有新发现。同源策略对iframe加载不阻止,但会影响脚本操作,而nginx配置也可能对location做类似防嵌套处理。 总之内容很扎实,期待你后续的深入分析,一起交流学习~
页:
[1]