zoukankan      html  css  js  c++  java
  • 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跳转了.

       这种反推对漏洞挖掘来说还是很有意思的   
  • 相关阅读:
    【POJ1743】Musical Theme(后缀数组,二分)
    【BZOJ1031】字符加密Cipher(后缀数组)
    gui线程
    线程同步
    多线程
    java记事本
    gui界面2048小游戏
    IO流+数据库课后习题
    数据库(批处理, 事务,CachedRawSetImpl类
    java(try块语句变量,和匿名类变量生存时间
  • 原文地址:https://www.cnblogs.com/piaomiaohongchen/p/15215885.html
Copyright © 2011-2022 走看看