1day漏洞反推技巧实战(2)

  学习存货(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跳转了.

   这种反推对漏洞挖掘来说还是很有意思的   
posted @ 2021-09-01 18:09  飘渺红尘✨  阅读(522)  评论(0编辑  收藏  举报
Title