最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

軟件測試 | web測試—上傳帶有惡意文件名的文件

2023-08-29 15:47 作者:愛測軟件測試  | 我要投稿

問題

除了常規(guī)HTTP的常規(guī)請求 - 響應(yīng)接觸以外,允許上傳文件的應(yīng)用提供了另一種攻擊途徑。在你上傳文件時,你的瀏覽器會隨同文件內(nèi)容一起發(fā)送一個文件名。文件名本身可以為注入攻擊提供一種潛在的機會。你需要測試你的應(yīng)用對這種文件名的處理方式。本秘訣將演示如何將文件上傳作為一種特殊的輸入表單進行測試。

解決方案

這個測試可以用于任何允許用戶上傳文件的表達,如果這個文件之后會被下載或顯示為圖像,那么這個測試將特別有用。

首先,在你本地計算機上創(chuàng)建一個測試圖像文件。將這個文件復制復制若干份,在文件名中使用各種非法或可以的字符,比如單引號,等號或者圓括號。例如,在Windows NTFS文件系統(tǒng)中,‘onerror=’alert(‘XSS’)‘a(chǎn)='.jpg是個合法的文件名。微軟的畫圖軟件就足以創(chuàng)建這個圖像,或者你可以復制并重命名現(xiàn)有的圖像。Unix和Linux文件系統(tǒng)可能會允許更多的特殊字符,比如管道符號(|)和斜線號。

通過應(yīng)用的表單上傳這個文件,并完成必要的步驟以找出文件鄂弼顯示或下載的位置。在顯示這個文件或者列出其下載鏈接的頁面中,找出源代碼中的文件名。

對于文件被下載的應(yīng)用,你很可能會找到指向文件在服務(wù)器上的位置的鏈接。如果文件時圖像并直接顯示在應(yīng)用中,你應(yīng)該找到引用這個文件的圖像標簽。要確保鏈接或圖位置并不是簡單地回顯示完全相同的文件名。理論上,URL中會包含ID編號而不是實際文件名。或者,文件名中的特殊字符可以通過斜號線或某種編碼進行轉(zhuǎn)義處理,簡單地回顯完全相同的文件名可能會使你的應(yīng)用容易遭受攻擊。

例如,圖5-8中所顯示的基于Web的郵件應(yīng)用通過反斜線將文件名進行轉(zhuǎn)義處理。

討論

文件上傳可能會揭露出一些重要環(huán)境的漏洞。其中包括操作系統(tǒng)代碼注入,跨站式腳本。SQL注入或者文件處理的濫用。服務(wù)器層次的代碼注入不是典型的應(yīng)用層次安全所關(guān)心的事。不過,因為文件提供了一種如此簡單的到服務(wù)器的路徑,所以值得在這里提一下。

代碼注入

通常情況下,可以通過相應(yīng)頭來辨別服務(wù)器操作系統(tǒng),正如我們在3.6節(jié)中所討論的。特別是在一些Unix或Linux文件系統(tǒng)重,文件名可以包含特殊字符,比如斜線號、管道符號和引號。例5-5中顯示了使用Mac OS X和與之關(guān)聯(lián)的HFS文件系統(tǒng)時的一些不常見和可能存在危險的文件名。相反,如果頭信息揭露了應(yīng)用框架或語言,那么你可以嘗試一下這種語言的特殊符號。在上傳文件名中包含這些特殊字符的文件時,如果應(yīng)用不自動地將這些特殊字符轉(zhuǎn)義或者替換掉,那么你的應(yīng)用就可能存在危險。請對這些特殊字符進行實驗——如果你可以讓應(yīng)用崩潰護著表現(xiàn)出不正確的行為,那么進一步的操縱很可能足以充分利用你的服務(wù)器或應(yīng)用。

例5-5:一些包含特殊字符的文件名

基于Unix或Linux的服務(wù)器的一個普通例子是文件名| 1s -al。如果未經(jīng)轉(zhuǎn)義或重命名就上傳,那么嘗試打開這個文件的服務(wù)器腳本可能反而會返回該目錄的內(nèi)容(類似于DOS中的dir命令)。存在要壞的多的攻擊,其中包括一些會在文件系統(tǒng)中刪除或創(chuàng)建文件的攻擊。

對于那些在不允許文件名中出現(xiàn)特殊字符的操作系統(tǒng)(比如Windows)中進行的測試而言,要記住,即使你無法再磁盤上以特殊字符作為文件名來保存文件,在你上傳文件的時候是可以更改文件名。

跨站式腳本。即使代碼注入不可能實現(xiàn),如果文件名沒用被正確地轉(zhuǎn)義處理,跨站式腳本將仍然是個潛在的問題。在保存到磁盤之前,所有文件名都需要進行轉(zhuǎn)義處理或編碼成HTML特殊字符。最好能將整個文件名替換為一個唯一的標識符。

如果將原始的,未經(jīng)更改的文件名發(fā)送到瀏覽器,那么下面的HTML輸出可能會由<IMGSRC='' onerrror='alert('XSS')'變成<IMG SRC='' onerrror='alert( 'XSS')' a='jpg'/>。這是非常簡單的JavaScript注入的一個極好的例子,而JavaScript注入是實現(xiàn)跨站式腳本攻擊的一種重要方法。

SQL注入。代碼注入攻擊的是運行應(yīng)用的服務(wù)器或語言,跨站式腳本的目標是瀏覽器,而SQL注入則集中在惡意訪問數(shù)據(jù)庫。如果上傳的文件存儲在數(shù)據(jù)庫中,而不是作為服務(wù)器上的文件,那么你應(yīng)該測試的領(lǐng)域是SQL注入,而不是代碼注入。

SQL注入所需要的最常見的特殊字符是單引號。試著在文件名中添加單引號,看看在文件被保存到數(shù)據(jù)庫時會發(fā)生什么。如果你的應(yīng)用返回錯誤,那么很可能它容易遭受SQL注入攻擊。

警告:上傳和處理文件這種行為為文件名之外的其他安全問題做好了準備。所有以這種方式上傳的文件都是應(yīng)用的輸入,應(yīng)該像HTTP驅(qū)動的輸入那樣進行全面細致的測試。每種文件格式都需要根據(jù)這種格式應(yīng)有的內(nèi)容進行測試,不過我們可以就與文件內(nèi)容有關(guān)的風險給出一份簡要匯總。在將這些文件存儲到你的計算機上時,要當心。你可能會引起防病毒軟件的古怪行為,凍結(jié)你的計算機,或者違反公司政策。要小心!


軟件測試 | web測試—上傳帶有惡意文件名的文件的評論 (共 條)

分享到微博請遵守國家法律
图片| 扎赉特旗| 高平市| 阿巴嘎旗| 光山县| 白银市| 荥阳市| 普定县| 磐安县| 鹰潭市| 佳木斯市| 西乌珠穆沁旗| 金阳县| 阜康市| 和龙市| 漳平市| 张掖市| 共和县| 福州市| 岱山县| 子长县| 海南省| 措勤县| 忻州市| 民权县| 麻江县| 许昌县| 潞西市| 宜宾县| 潍坊市| 邵东县| 泸溪县| 封丘县| 长顺县| 元谋县| 罗田县| 伊春市| 思南县| 建宁县| 普陀区| 保定市|