mutillidae實戰(3)
1.工作總結
時隔一個多月了,因為忙著保研所以沒太多時間來寫部落格,今天開始,把之前在mutillidae平臺上的一些實踐發出來,把欠下來的補上,首先是一個涉及到密碼學的一個東西,挺有意思的,也算是對課堂上的內容進行了運用了吧。
使用CBC反轉來實現使用者許可權的提升。
主要工作為三個:
-
burpsuite安裝;
-
CBC反轉許可權提升。
在burpsuite的安裝中,這裡我找了一個破解版的進行安裝,且經過測試可以使用。
2.1CBC反轉簡介
這裡根據之前學的一些密碼學知識和今天的實踐,總結下CBC反轉的主要原理。
2.1.1 CBC加密過程
首先是CBC加密模式的加密過程:
其中的各個量如下。
Plaintext:待加密的資料。
IV:用於隨機化加密的位元塊,保證即使對相同明文多次加密,也可以得到不同的密文。
Key:被一些如AES的對稱加密演算法使用。
Ciphertext:加密後的資料。
在這裡重要的一點是,CBC工作於一個固定長度的位元組,將其稱之為塊。
參照網上一篇部落格的總結,可以將其概括為如下公式:
Ciphertext-0 = Encrypt(Plaintext XOR IV)—只用於第一個組塊Ciphertext-N= Encrypt(Plaintext XOR Ciphertext-N-1)—用於第二及剩下的組塊
從上面的公式和圖來看,CBC模式最大的特點便是前一塊的密文用來產生後一塊的密文。
而很顯然,我們在反轉過程中,也是需要利用CBC解密的原理的。
2.1.2 CBC解密過程
解密實際上是加密的一個逆運算,依舊是總結成一個公式:
Plaintext-0 = Decrypt(Ciphertext) XOR IV—只用於第一個組塊Plaintext-N= Decrypt(Ciphertext) XOR Ciphertext-N-1—用於第二及剩下的組塊
這裡可以看到,Ciphertext-N-1(密文-N-1)是用來產生下一塊明文;這就是位元組翻轉攻擊開始發揮作用的地方。如果我們改變Ciphertext-N-1(密文-N-1)的一個位元組,然後與下一個解密後的組塊異或,我們就可以得到一個不同的明文了!也就是說,可以用下面這張圖來概括下CBC反轉攻擊的過程:
2.2 CBC位元組反轉攻擊
下面進行CBC反轉攻擊,先看到網頁頁面:
這裡大意就是,需要將使用者ID和組ID都等於“000”才能成為root使用者。
先看下包裡面有沒有什麼引數可以改,這裡是可以使用burpsuite抓包的,但是這裡用簡單一點的,就不用burpsuite了,直接使用F12看就可以:
這裡可以看到,在get中有這樣的一長串字元,除此之外便沒有其他引數有可能和CBC有關了,所以可以嘗試修改整個引數來看看頁面內容是否變化,以檢查是否是這個引數,這裡的話可能是因為現在的mutillidae的安全等級比較低,所以在url處就有這樣的iv引數,這裡直接對這個引數進行修改即可檢查。
隨意修改前兩個字元試試,可以看到頁面發生了變化:
很顯然,這裡說明是存在CBC反轉攻擊漏洞的,那麼下一步就是要找出那幾位是影響User ID和Group ID的,然後對其進行CBC反轉運算以實現攻擊目標。
採用一個位元組一個位元組(這裡是16進位制數,也就是說每兩位便是一個位元組)嘗試的方法,經過幾次嘗試之後發現,第5個位元組到第7個位元組改變時User ID發生變化,第8到第10個位元組發生改變時Group ID發生變化,於是下面我們對這幾位進行修改以實現將UID和GID置為“000”。(此處其實可以直接根據下面的字元個數來判斷,一個字元佔一個位元組,但是謹慎起見,建議還是按位元組進行嘗試)
下一步進行CBC的反轉,利用上述CBC反轉介紹中的知識,實際上就是相連的三個異或操作,那麼只要反推一下便可以得到“000”的密文了。
根據頁面上的提示,“1”的ASCALL碼為0x31,“0”則為0x30,那麼我們假設此時在User ID處“100”的加密金鑰為key,“0”加密後的密文為M1,則可以列以下公式:
key xor 0xab = 0x31
key xor 0x30 = M
可以解得M1=0xaa。
同理反推出Group ID處M2=0x24。將其填入url中,可以看到以下頁面,此處已經將UID和GID都置為了“000”,並且出現了“User is root”的提示,此時CBC反轉攻擊成功,使用者許可權提升:
3.總結
今天的CBC反轉攻擊算是密碼學在web安全上的運用中比較基礎的吧,能夠直接在url上進行修改而不用抓包改包,也是讓我覺得蠻意外的。另外也是第一次使用密碼學來進行web攻擊,通過這樣一個比較基礎的攻擊嘗試,也對密碼學有了一些更加深入的理解和認識,難怪說密碼學能夠算得上是衡量國家國力的一個標準,畢竟能夠有自主安全的密碼演算法的話,不僅資料安全能夠有比較大的保障,一些重要的機構平臺或者網路也是能夠依靠密碼演算法來獲得一個更加安全的執行環境的。
而關於burpsuite,網上也有很多使用教程,後續我也會給出一些使用它來進行滲透的樣例。