bWAPP A7:Missing Functional Level Access Control 應用層訪問控制缺失。
阿新 • • 發佈:2019-01-10
Directory Traversal - Directories
function show_file($file) { // Checks whether a file or directory exists // if(file_exists($file)) if(is_file($file)) { $fp = fopen($file, "r") or die("Couldn't open $file."); while(!feof($fp)) { $line = fgets($fp,1024); echo($line); echo "<br />"; } } else { echo "This file doesn't exist!"; } }
low
case "0" :
show_file($file);
// Debugging
// echo "<br />" . $_GET['page'];
break;
未對輸入的目錄進行限制,可以訪問任意目錄。
http://localhost/bwapp/directory_traversal_2.php?directory=documents/../../../../
medium
strpos($data, "../") !== false || strpos($data, "..\\") !== false || strpos($data, "/..") !== false || strpos($data, "\..") !== false)
同目錄遍歷medium,只限制了目錄遍歷,仍可使用檔名訪問當前目錄
任意檔案。
http://localhost/bwapp/directory_traversal_2.php?directory=eval
high
$real_base_path = realpath($base_path);
// echo "base path: " . $base_path . " real base path: " . $real_base_path . "<br />";
$real_user_path = realpath($user_path);
使用real user path進行比較。
這裡需要比較我們要訪問的目錄是不是在我們的目錄下。從邏輯上解決了目錄遍歷的問題。
Directory Traversal - Files
http://localhost/bwapp/directory_traversal_1.php?page=666
還可以結合目錄遍歷訪問上層目錄檔案
http://localhost/bwapp/directory_traversal_1.php?page=../../manual.chm
還可以結合目錄遍歷訪問上層目錄檔案
http://localhost/bwapp/directory_traversal_1.php?page=../../manual.chm
medium
同目錄遍歷medium,只限制了目錄遍歷,仍可使用檔名訪問當前目錄任意檔案。
high
同目錄遍歷high,使用real user path進行比較。