<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/tips/4975

            0x01 什么是CBC比特反轉技術?


            CBC模式的全稱是密文分組鏈接模式(Cipher Block Chainning),之所以叫這個名字,是因為密文分組是想鏈條一樣相互連接在一起的.

            如圖所示:

            enter image description here

            在CBC模式中,首先將明文分組與前一個密文分組進行XOR運算,然后再進行加密,當加密第一個明文分組時,由于不存在“前一個密文分組”,因此需要事先準備一個長度為一個分組的比特序列來代替“前一個密文分組”,這個比特序列稱為初始化向量(Initialization vector),通常縮寫為IV,如果每次都使用相同的初始化向量(IV),當用同一密鑰對同一明文進行加密時,所得到的密碼一定是相同的,所以每次加密時都會隨機產生一個不同的比特序列來作為初始化向量,避免這種情況產生。

            CBC比特反轉攻擊的目的是攻擊者通過修改密文來操縱解密后的明文,攻擊者會對初始化向量(IV)中的任意比特位進行反轉(1變0,0變1),則明文分組(解密后得到的明文分組)中相應的比特也會被反轉。比如一個叫admin的用戶,登錄,經過CBC模式加密后,token為"aaabbbccc999",現在有一個攻擊者,叫john,登錄,經過CBC模式加密后,token為cccbbbccc1111,現在john將token改為"ffcbbbccc1111",發現登錄名變成了ohn,所以他知道token第一個位的ff轉換成了,經過幾輪測試,他發現如果將token改為“7bcbbbccc1111”,則登錄名變成了'aohn',最后他通過發送token為7bdc995465到服務器,發現自己已經變成了admin。

            0x02 攻擊演示


            我這里演示是使用的是Owasp Mutilidae測試平臺,通過依次點擊左側導航欄的”Owasp 2013” ,“Broken authentication and session management”,“Privilege escalation”,“view user privileges”,你能夠看到這個挑戰的目標是改變UID和GID到000,通過burpsuite已經抓到了IV,并把這個請求發送到burpsuite的Repeater,方便我們以后測試,如圖

            enter image description here

            當前抓到的IV值為“6bc24fc1ab650b25b4114e93a98f1eba”

            下面先改變“6bc24fc1ab650b25b4114e93a98f1eba”為“FFc24fc1ab650b25b4114e93a98f1eba”,觀察變化,如圖:

            enter image description here

            發現Application ID部分有一個字符變了,接著轉換字符,當IV為FFFFFFFFFF650b25b4114e93a98f1eba”時,發現User ID變成e00了。如圖

            enter image description here

            現在看看能不能影響到Group ID,當iv為FFFFFFFFFFFFFFFFb4114e93a98f1eba時,Group ID有變化了,如圖

            enter image description here

            我們要改變的僅僅是userID和GroupID,把FFFFFFFFFFFFFFFFb4114e93a98f1eba依次還原,最終找到對應項時,iv為6bc24fc1FF650bFFb4114e93a98f1eba,如圖

            enter image description here

            我們發現第一個FF對應的是USERID的e,e的十六進制編碼是0x65,經過異或,0xFF xor 0x65 =0x9a,現在我們的目標是需要USERID都為0 (對應的十六進制是0x30),所以0x9a xor 0x30 = 0xaa,我們提交iv為6bc24fc1aa650bFFb4114e93a98f1eba,USERID就是我們想要的結果了,如圖

            enter image description here

            然后我們讓GROUPID也為0,則0xFF xor 0xeb = 0x14,0x30 xor 0x14 = 0x24,我們提交iv為6bc24fc1aa650b24b4114e93a98f1eba。如圖

            enter image description here

            0x03 參考文檔


            Bypassing encrypted session tokens using CBC bit flipping technique.

            http://swepssecurity.blogspot.tw/2014/05/bypassing-encrypted-session-tokens.html

            <<圖解密碼技術>>

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线