1. 程式人生 > >bWAPP A7:Missing Functional Level Access Control 應用層訪問控制缺失。

bWAPP A7:Missing Functional Level Access Control 應用層訪問控制缺失。

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

Host Header Attack (Cache Poisoning)low
還可以結合目錄遍歷訪問上層目錄檔案

http://localhost/bwapp/directory_traversal_1.php?page=../../manual.chm

在這裡插入圖片描述medium

同目錄遍歷medium,只限制了目錄遍歷,仍可使用檔名訪問當前目錄任意檔案。
high

同目錄遍歷high,使用real user path進行比較。