原理
檔案上傳漏洞是應用程式在處理用戶上傳的檔案時沒有對檔案進行合理的檢查和過濾,而惡意檔案由攻擊者偽造成合法檔案,從而騙過應用程式進行上傳和執行惡意代碼,
存在原因
開發人員沒有對用戶上傳的檔案進行充分的驗證和過濾,攻擊者可以通過構造惡意檔案,利用上傳漏洞將其上傳到服務器,從而獲取敏感資訊或者在服務器上執行惡意代碼,
防御措施
- 檔案名過濾:對于上傳的檔案名進行過濾,只允許合法的字符出現在檔案名中,例如,只允許使用字母、數字、下劃線等字符,禁止使用"."等特殊字符,
- 檔案擴展名過濾:在上傳檔案時,對檔案的擴展名進行驗證與過濾,例如,只允許上傳特定型別的檔案,比如圖片、文本、壓縮包等,禁止上傳危險的腳本檔案,
- 檔案型別驗證:檢查上傳檔案的MIME型別是否合法,只允許上傳符合預期的檔案型別,
- 檔案大小限制:限制檔案的上傳大小,避免上傳過大的檔案,從而防止服務器資源被枯竭,
- 權限設定:通過控制上傳目錄的權限來限制用戶上傳檔案的位置和可訪問性,從而確保檔案上傳后只能被授權用戶訪問,
- 檢查上傳檔案:對用戶上傳的檔案進行檢查,檢測是否包含惡意的內容、病毒或者木馬程式,
- Web應用防火墻:通過安裝Web應用防火墻(WAF)來檢測上傳的檔案,過濾掉例外請求和非法檔案上傳,
突破方式
- 修改檔案后綴名:攻擊者可能會將惡意檔案重命名為合法檔案的后綴名,例如將.php檔案改為.jpg檔案,以此騙過檔案型別檢測,
- 繞過客戶端驗證:前端驗證是指在用戶上傳檔案之前對檔案型別、大小等進行驗證,攻擊者可以通過修改前端代碼或使用開發者工具繞過前端驗證,上傳惡意檔案,
- 繞過服務端驗證:后端驗證是指在檔案上傳完成后,對檔案進行型別、大小等檢測,攻擊者可以通過構造特殊的檔案格式或使用一些已知漏洞進行繞過,從而上傳惡意檔案,
- 空位元組注入:攻擊者通過在檔案名中插入空位元組(\0)來欺騙檔案處理程序,使處理程式不識別檔案擴展名,從而導致惡意檔案被成功上傳,
【Low】級別

通過查看該等級的原始碼,可以看到該等級對上傳的檔案沒有任何限制和過濾,存在明顯的上傳漏洞,成功上傳后就會顯示出路徑+successfully uploaded 上傳失敗則會提示your image was not uploaded,

上傳一個包含一句話木馬的php(<?php @eval($_POST['123456']); ?>),我們可以發現上傳成功,注:@表示后面即使執行錯誤也不報錯;eval()函式表示括號內的陳述句字串什么的全都當做代碼執行;$_POST['123456']表示從頁面中獲得123456這個引數數值,即該木馬密碼為123456,

然后訪問dvwa檔案中的uploads對應的檔案位置D:\phpstudy_pro\phpstudy_pro\WWW\DVWA\hackable\uploads,就可以看到剛剛上傳的muma.php已經上傳成功,

使用蟻劍連接木馬,顯示頁面如下,說明木馬連接成功,
【Medium】級別

將剛剛寫的一句話木馬檔案后綴改為png格式,然后上傳,發現上傳成功,接著利用工具bp抓包分析,

然后將Content-Disposition的filename檔案后綴改回php,然后forward,(由于這里重新做了一次,后面就寫的是muma2)

然后可以看到瀏覽器頁面顯示muma2.php,

然后打開根目錄查看,可以看到剛剛上傳的muma2.png檔案和修改后的muma2.php檔案,

最后使用蟻劍連接,出現如圖所示界面,到這里,medium就完成了,
【High】級別
在dvwa中使用前面的方式上傳檔案,會發現傳不上去,這里就需要自己去合成一個新的圖片,首先需要準備后綴為png的圖片和一句話木馬,

在終端使用命令把一句話木馬寫進圖片中,

然后在010中,打開合成后的新圖片,拉到最后面,可以看到一句話木馬已經在圖片中了,

這時再去dvwa中上傳合成后的圖片,會看到在dvwa中已經把圖片成功上傳上去了,

最后同之前一樣的使用蟻劍連接即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/555828.html
標籤:其他
上一篇:協議分析(一)
下一篇:返回列表
