1day漏洞反推技巧实战(2) - 飘渺红尘✨
2021-9-1 18:9:0 Author: www.cnblogs.com(查看原文) 阅读量:10 收藏

  学习存货(2)

  CVE-2018-11784简单分析之反推的魅力

  

   看着挺有趣的,简单分析下:

  通过搜索tomcat漏洞找到:

  

  修改了这两个文件,我们看java文件即可,xml文件先不看:

因为跟url跳转相关,直接搜索redirect/direct等关键字:

  

  关键问题在这里

   说实话这样黑盒找修复代码,还是有点费劲的,毕竟看的是修复代码,没有漏洞代码做参照

   通过网上前人的脚印找到github漏洞修复对比:

  

  这样看太清晰了,其中问题代码是左边的代码块:

    

    右边是加了一行这个:

// Avoid protocol relative redirects
        while (location.length() > 1 && location.charAt(1) == '/') {
            location.deleteCharAt(0);
        }

  修复这个问题代码的版本如下:

  

   github项目:tomcat>9.0.12都修复了,tomcat9.0.12之前都没做处理

  跟进相关修复文件:

    

   复制粘贴出来这一段到我的本地测试:

  

   这是修复后的,直接去除掉修复的代码:

  

  运行查看:

    

   访问:http://localhost:8070//test

  

  跳转到了test

  漏洞原因就是因为:

  sendRedirect方法支持http/https外,还有//

  

  运行下:

  访问路由地址,跳转到百度:

  

  这里的代码没对//做处理,导致变量走sendRedirect的时候,直接url跳转了:

  简单跟下sendRedirect方法:

  

   

  再往下跟进函数

    

   修复方案就是去除掉两次/

  所以官方的修复方案就是这样:

  循环判断,如果这里的while改成if,那么会存在安全问题hhhh

    

  再次访问:http://localhost:8070//test/

  已经不能重定向了

  输入//,只会输出一个

  

   这样可控点再走sendRedirect方法,就不能url跳转了.

   这种反推对漏洞挖掘来说还是很有意思的   


文章来源: https://www.cnblogs.com/piaomiaohongchen/p/15215885.html
如有侵权请联系:admin#unsafe.sh