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

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

1day漏洞反推技巧实战(2)的更多相关文章

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

    学习笔记里的存货(1) 以前看了一篇推特老外做赏金猎人的文章,感触有点深,作者没有写相关漏洞分析,只是说了自己挖了多少个漏洞,这里简单的分析下: 1day漏洞在很多时候至关重要,不管是在红蓝对抗,还是 ...

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

    代码审计必备技能,github代码对比,写一笔: 搜索某开源组建漏洞,搜索出来某个版本rce: 通过消息得出:存在漏洞版本:1.10.10 ,修复漏洞版本1.10.11 去github寻找apache ...

  3. Gym 101102J---Divisible Numbers(反推技巧题)

    题目链接 http://codeforces.com/gym/101102/problem/J Description standard input/output You are given an a ...

  4. Python高效编程技巧实战 实战编程+面试典型问题 中高阶程序员过渡

    下载链接:https://www.yinxiangit.com/603.html 目录:   如果你想用python从事多个领域的开发工作,且有一些python基础, 想进一步提高python应用能力 ...

  5. dwr2反推

    package services; import org.directwebremoting.Browser; import org.directwebremoting.ScriptSessions; ...

  6. Anipang2反推文档

    此文档主要用于一个开发同学尝试学习描述一个产品的基本设计.也许工程师都应该有类似能力. 反推的基础,目前是自己玩过的一些关卡和youtube上的一些关卡通关视频,主要是前120关.(120关后面应该是 ...

  7. base64随机字符混淆加密、解密-美拍视频地址解密,反推加密算法

    用火车头测试采集美拍的数据时无意中发现美拍的视频地址是一段加了混淆字符串的base64代码.如下图 于是好奇之下研究了下解密算法.具体过程省略800字.发现美拍的视频解密是通过js完成,于是找到了具体 ...

  8. JavaScript反调试技巧

    一.函数重定义 这是一种最基本也是最常用的代码反调试技术了.在JavaScript中,我们可以对用于收集信息的函数进行重定义.比如说,console.log()函数可以用来收集函数和变量等信息,并将其 ...

  9. HackerRank - string-reduction【反推】【规律】

    HackerRank - string-reduction[反推] 题意 给出一串 只有 字母 a, b, c 组成的字符串,然后没两个不同的字符碰到一起都可以变成另外一个字符,然后变到最后,求最短的 ...

随机推荐

  1. SpringBoot之yaml语法及静态资源访问

    配置文件-yaml 在spring Boot开发中推荐使用yaml来作为配置文件. 基本语法: key: value:kv之间有空格 大小写敏感 使用缩进表示层级关系 缩进不允许使用tab,只允许空格 ...

  2. K8S系列第四篇(Dockerfile)

    DokcerFile 镜像定制 更多精彩内容请关注微信公众号:新猿技术生态圈 定制docker镜像的方式有两种: 手动修改容器内容,导出新的镜像. 基于dockerfile自行编写指令,基于指令流程创 ...

  3. English Study!

    As you konw, education is a top priority for us !  When the times abandon you, they don't even call ...

  4. 利用swagger和API Version实现api版本控制

    场景: 在利用.net core进行api接口开发时,经常会因为需求,要开发实现统一功能的多版本的接口.比如版本V1是给之前用户使用,然后新用户有新需求,这时候可以单独给这个用户写接口,也可以在V1基 ...

  5. decimal和float的区别

    场景 今天在开发的时候,在mongodb中有个字段保存的数据结构是decimal,然后需要对这个字段的值进行范围的查询.结果却怎么查询值范围都是空. 解决 如图中看到的,利用Navicat,可以明显的 ...

  6. Java的三种日期工具 Date Calendar SimpleDateFormat

    三种日期工具 配合下面的案例可以更加深度的了解 Date 需要导包java.util.Date Date d = new Date(); //两种都是获取到现在时间的时间戳 long t1 = d.g ...

  7. k8s强制删除资源

    一般强制删除 kubernetes 的资源: kubectl delete <resource> <resourename> --grace-period=0 --force ...

  8. python3中的希尔排序

    def shell_sort(alist): n = len(alist) # 初始步长 gap = round(n / 2) while gap > 0: # 按步长进行插入排序 for i ...

  9. Java面向对象08——继承

    继承  package oop.demon01.demon05; ​ // Person 人 ---- 父类 public class Person {     //public     //prot ...

  10. Python从零开始编写控制程序(一)

    Python之从零开始编写控制程序(一) 在此声明:本博客仅供学习参考,任何产生相关违法犯罪行为与本人无关. 另外如果有师傅有好的思路和想法,可以和我一起沟通交流. 最近在一直尝试做Powershel ...