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跳轉了.

   這種反推對漏洞挖掘來說還是很有意思的   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章