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

  代码审计必备技能,github代码对比,写一笔:

  搜索某开源组建漏洞,搜索出来某个版本rce:

  

  

 

 

  

  通过消息得出:存在漏洞版本:1.10.10 ,修复漏洞版本1.10.11

  去github寻找apache-airflow:

  打开就是主分支:

   

  切换到漏洞版本分支:

  有两个办法:

  (1)https://github.com/apache/airflow/tags

  一个个翻,翻到对应版本,往下拉

   

 

 

 

  (2)搜索Tags分支,切换分支:

  

 

 

 

  

  切换过来然后:

  切换分支下载对应版本项目:

  

git clone -b 1.10.10 https://github.com/apache/airflow.git

 

   

  这样就把存在漏洞的版本下载下来了,修复版本是1.10.11

  下载修复版本:

  

git clone -b 1.10.11 https://github.com/apache/airflow.git

 

  下载之后可通过

  

git diff 文件夹1 文件夹2:

  这样就可以查看修改了哪些文件:

  

 

  除了下载下来查看,也可以直接网页查看对比:

  https://github.com/apache/airflow/compare/1.10.10...1.10.11?diff=split

  可以看到1.10.10~1.10.11之间提交的Commits和修改的文件:

  

 

 

  查看代码修改,左侧是修复前,右侧是修复后的代码片段:

  

 

  遇到的问题:Commit太多了,版本更新迭代的文件太多了,这时候,我们怎么定位到哪个是问题文件?

   (1) 理想状态:第三方漏洞预警平台提供了对应的漏洞Commit提交记录

  (2)只知道某种漏洞类型,如sql注入类型/rce类型

  大部分都是2,如果是1的情况,直接看对应的Commit提交记录就可以了,不要那么费劲

  如果是2,只知道漏洞类型怎么办?

  举例子说明:git diff配合grep:

  

git diff airflow airflow_novuln/ |  grep "command" > aa.txt

  

  去漏洞版本项目中搜索部分代码片段:

  

grep -rn "echo \"Here is the message: '" ./

 

  

 

 

   找到漏洞文件,如果还有更好的方法,麻烦留言!

posted @ 2022-02-14 18:03  飘渺红尘✨  阅读(429)  评论(0编辑  收藏  举报
Title