日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
淺談ASP.NET的Padding Oracle攻擊

網(wǎng)絡(luò)犯罪和黑客攻擊已經(jīng)越來越受到人們的重視。之前,我們?cè)凇?010年揚(yáng)名的十大WEB黑客技術(shù)》一文中了解到:2010年,排名第一的是在線網(wǎng)上銀行交易威脅,而其中黑客所鐘愛的攻擊技術(shù)便是Padding Oracle,這也是在過去一年中最為流行的黑客攻擊技術(shù)。那么下面,我們就引用一位網(wǎng)友的博客內(nèi)容,了解一下ASP.NET和Padding Oracle Attack相關(guān)內(nèi)容。

目前創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、鉛山網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

什么是Padding和Oracle

要談這個(gè)問題,先要了解什么是Padding Oracle Attack。有些文章把Padding和Oracle,與CSS樣式表或是那個(gè)收購(gòu)了Sun的甲骨文公司聯(lián)系起來,這就驢唇不對(duì)馬嘴了。

Padding在這里的含義是“填充”,因?yàn)閷?duì)于加密算法來說,它們是基于等長(zhǎng)的“數(shù)據(jù)塊”進(jìn)行操作的(如對(duì)于RC2,DES或TripleDES算法來說這個(gè)長(zhǎng)度是8字節(jié),而對(duì)于Rijndael算法來說則是16、24或32字節(jié))。但是,我們的輸入數(shù)據(jù)長(zhǎng)度是不規(guī)則的,因此必然需要進(jìn)行“填充”才能形成完整的“塊”?!疤畛洹睍r(shí)比較常用的是PKCS #5規(guī)則,簡(jiǎn)單地說,便是根據(jù)最后一個(gè)數(shù)據(jù)塊所缺少的長(zhǎng)度來選擇填充的內(nèi)容。

例如,數(shù)據(jù)塊長(zhǎng)度要求是8字節(jié),如果輸入的最后一個(gè)數(shù)據(jù)塊只有5個(gè)字節(jié)的數(shù)據(jù),那么則在最后補(bǔ)充三個(gè)字節(jié)的0x3。如果輸入的最后一個(gè)數(shù)據(jù)塊正好為8字節(jié)長(zhǎng),則在最后補(bǔ)充一個(gè)完整的長(zhǎng)為8字節(jié)的數(shù)據(jù)塊,每個(gè)字節(jié)填0x8。使用這個(gè)規(guī)則,我們便可以根據(jù)填充的內(nèi)容來得知填充的長(zhǎng)度,以便在解密后去除填充的字節(jié)。

在解密時(shí),如果算法發(fā)現(xiàn)解密后得到的結(jié)果,它的填充方式不符合規(guī)則,那么表示輸入數(shù)據(jù)有問題,對(duì)于解密的類庫(kù)來說,往往便會(huì)拋出一個(gè)異常,提示Padding不正確。Oracle在這里便是“提示”的意思,和甲骨文公司沒有任何關(guān)系。

如何進(jìn)行Padding Oracle Attack

剛才已經(jīng)提到,如果輸入的密文不合法,類庫(kù)則會(huì)拋出異常,這便是一種提示。攻擊者可以不斷地提供密文,讓解密程序給出提示,不斷修正,最終得到的所需要的結(jié)果。這里的一個(gè)關(guān)鍵在于,攻擊者所需要的提示僅僅是“解密成功與否”這樣一個(gè)二元信息,例如它在一個(gè)Web程序中可能只是“200 - OK”及“500 - Internal Server Error”這樣的表現(xiàn)形式,而不需要其他任何詳細(xì)信息。

例如,現(xiàn)代流行的Web框架大都是開源的,因此它的加密方式完全透明(當(dāng)然這點(diǎn)其實(shí)并不是必須的,只是大有幫助而已),對(duì)于攻擊者來說唯一不知道的便是密鑰。于是攻擊者便可以根據(jù)這個(gè)加密方式設(shè)計(jì)有針對(duì)性的密文,最終得到密鑰(及IV等信息)。在很多時(shí)候,一個(gè)網(wǎng)站都會(huì)使用同樣的密鑰和IV,于是只需從一個(gè)漏洞,便可以在網(wǎng)站的其他方面進(jìn)行破壞,或解密信息,或繞開驗(yàn)證。

在具體操作上還可以有許多方式進(jìn)行輔助,在Juliano Rizzo和Thai Duong的《Practical Padding Oracle Attacks》(及此)論文(下文稱PPOA)中便提到了很多方式,例如使用Google搜索異常的關(guān)鍵字(這說明許多站點(diǎn)都把異常信息輸出在頁(yè)面上),檢查代碼,從外表檢查一些BASE64形式的字符串,猜測(cè)常見的分割符,如“--”,“|”或是“:”等等。PPOA認(rèn)為,如今Padding Oracle漏洞與SQL注入,腳本注入等漏洞一樣無處不在,論文中還詳細(xì)討論了利用這個(gè)漏洞來攻擊eBay拉丁美洲站點(diǎn),CAPTCHA等應(yīng)用,以及在JSF(包括Apache MyFaces和Sun Mojarra實(shí)現(xiàn)),Ruby on Rails等Web框架中的漏洞——奇怪的是其中反而沒有提到ASP.NET。

關(guān)于Padding Oracle Attack的具體細(xì)節(jié),您可以從《Automated Padding Oracle Attacks with PadBuster》及《Padding Oracle Attacks on CBC-mode Encryption with Secret and Random IVs》兩篇文章中得到更詳細(xì)的信息,它們似乎并不像表面那樣高深莫測(cè),尤其是前者,有機(jī)會(huì)我也打算將它翻譯一下。

針對(duì)ASP.NET的攻擊及其危害

那么,這次又是如何對(duì)ASP.NET站點(diǎn)進(jìn)行攻擊的呢?方式有不少,例如攻擊者可以為一個(gè)需要認(rèn)證的請(qǐng)求發(fā)送自定義的cookie值,如果沒有通過認(rèn)證,則會(huì)得到一個(gè)轉(zhuǎn)向登陸頁(yè)面的302跳轉(zhuǎn)。一個(gè)更為直觀和通用的作法來自于PPOA論文的作者所提供的一段視頻,其中使用了WebResources.axd?d=xyz進(jìn)行探測(cè)工作。WebResource.axd有一個(gè)特點(diǎn),便是會(huì)對(duì)錯(cuò)誤的密文(即d=xyz中的xyz)產(chǎn)生500錯(cuò)誤,而對(duì)正確的密文產(chǎn)生404錯(cuò)誤,這便形成了足夠的提示。

好,那么假設(shè)攻擊者已經(jīng)得到了站點(diǎn)的Machine Key,也就是網(wǎng)站所使用的密鑰,那么它又能造成什么危害呢?

一些危害是很容易理解的,例如解密(或注入)ViewState,或是如視頻里那樣設(shè)置一個(gè)管理員的cookie。在ScottGu等文章中描述這個(gè)漏洞的危害時(shí)還提到,這個(gè)漏洞可以用來下載web.config等私密文件,這又是如何辦到的呢?要知道web.config文件的下載是被IIS和ASP.NET所禁止的,它似乎和加密解密或是Machine Key無關(guān)。不過您是否意識(shí)到,在ASP.NET 3.5 SP1以后,我們可以利用ScriptManager來打包輸出本地的腳本文件?例如:

 
 
 
  1.  
  2.       
  3.