1 問題復現 (1)登錄DVMA後,設置DVWA Security為Low。 (2)進入File Inclusion,訪問dvwa/vulnerabilities/fi目錄下的的test.txt文件(自己創建的測試文件)。 (3)報錯ERROR: File not found! 找不到文件。 2 抓 ...
1 問題復現
(1)登錄DVMA後,設置DVWA Security為Low。
(2)進入File Inclusion,訪問dvwa/vulnerabilities/fi目錄下的的test.txt文件(自己創建的測試文件)。
(3)報錯ERROR: File not found! 找不到文件。
2 抓包分析
(1)使用BurpSuit抓包。
訪問test.txt文件的請求中,Cookie有兩個security鍵;導致設置DVWA Security為Low沒有成功。
(2)在瀏覽器中查看“設置DVWA Security為Low”時,服務端Set Cookie情況。
在Set SessionId時指定了使用路徑;而Set Security是沒有指定路徑。
(3)Cookie的屬性。
屬性 |
描述 |
name |
Cookie的名稱,Cookie一旦創建,名稱便不可更改 |
value |
Cookie的值。如果值為Unicode字元,需要為字元編碼。如果值為二進位數據,則需要使用BASE64編碼 |
maxAge |
Cookie失效的時間,單位秒。如果為正數,則該Cookie在maxAge秒之後失效。如果為負數,該Cookie為臨時Cookie,關閉瀏覽器即失效,瀏覽器也不會以任何形式保存該Cookie。如果為0,表示刪除該Cookie。預設為-1。 |
secure |
該Cookie是否僅被使用安全協議傳輸。安全協議。安全協議有HTTPS,SSL等,在網路上傳輸數據之前先將數據加密。預設為false。 |
path |
Cookie的使用路徑。如果設置為“/sessionWeb/”,則只有contextPath為“/sessionWeb”的程式可以訪問該Cookie。如果設置為“/”,則本功能變數名稱下contextPath都可以訪問該Cookie。註意最後一個字元必須為“/”。 |
domain |
可以訪問該Cookie的功能變數名稱。如果設置為“.google.com”,則所有以“google.com”結尾的功能變數名稱都可以訪問該Cookie。註意第一個字元必須為“.”。 |
comment |
該Cookie的用處說明,瀏覽器顯示Cookie信息的時候顯示該說明。 |
version |
Cookie使用的版本號。0表示遵循Netscape的Cookie規範,1表示遵循W3C的RFC 2109規範 |
3 修複服務端代碼
(1)查看服務端setcookie的php代碼。
發現沒有給security指定使用路徑。
(2)修改setcookie()中security的路徑為“/”。
(3)PHP setcookie()函數。
語法:setcookie(name,value,expire,path,domain,secure)
參數 |
描述 |
name |
必需。規定 cookie 的名稱。 |
value |
必需。規定 cookie 的值。 |
expire |
可選。規定 cookie 的有效期。 |
path |
可選。規定 cookie 的伺服器路徑。 |
domain |
可選。規定 cookie 的功能變數名稱。 |
secure |
可選。規定是否通過安全的 HTTPS 連接來傳輸 cookie。 |
4 驗證結果
(1)清除瀏覽器Cookie。
(2)重新登錄DVMA,再次設置DVWA Security為Low。
Set SessionId的路徑和Set Security的路徑一致。
(3)進入File Inclusion,訪問dvwa/vulnerabilities/fi目錄下的的test.txt文件。
成功讀取到文件內容,並且請求Cookie中只有一個security鍵。