0

我正在尝试为一个项目创建一个 CTF。我的目标之一是设置一个允许目录遍历的 Apache Web 服务器,以便尝试我的 CTF 的人可以遍历我的根目录并访问包含加密文件的文件夹。我希望他们能够下载这个文件,这样他们就可以在他们的机器上解密它。但是,我什至不知道从哪里开始允许目录遍历。我以前从未真正使用过 Apache Web 服务器,我在网上找到的所有内容都是关于防止目录遍历。

我在 Ubuntu 12.04 VM 上使用 Apache2。

4

3 回答 3

0

我有一个足够好的解决方法。

首先,我更改DocumentRoot/etc/apache2/sites-available/default以便"/"服务器可以访问其中的所有内容/并在其中创建一个index.html文件,/以便 Apache 服务器知道要呈现什么。里面index.html只是

    <html><script>location="/home/user/server/index.html";</script>

哪个渲染要显示的实际索引。我这样做是为了更清楚地表明会进行某种目录遍历。通过这样做,向访问者显示的路径是http://192.168.xx.xx/home/user/server/index.html.

然后,我添加了一个通配符目录:

  <Directory ~ "/*">
        Options +Indexes
  </Directory>

以便用户可以进入根目录中的任何文件夹。现在,当任何人访问时,192.168.xx.xx他们会被路由到192.168.xx.xx/home/user/server/index.html并且如果他们输入其他任何内容,则说192.168.xx.xx/etc/passwd文件将显示给他们。

我知道这不是真正的目录遍历,但对于这个项目来说已经足够解决了。

于 2021-04-02T22:03:21.507 回答
0

PHP 的最小示例

  1. 还要安装 PHP:

    sudo apt install php
    
  2. 清除网络根:

    sudo rm -rf /var/www/html/*
    
  3. /var/www/html/index.php使用以下内容创建:

    <?php
    $p = 'home.php';
    if (isset($_GET['p']))
      $p = $_GET['p'];
    include ($p);
    ?>
    
  4. /var/www/html/home.php使用以下内容创建:

    <!DOCTYPE html>
    <html>
      <head>
        <title>Read World!</title>
      </head>
      <body>
        <a href="?p=home.php">home</a>
      </body>
    </html>
    
  5. 利用,例如:

    curl http://<IP>/?p=../../../etc/passwd
    
于 2022-03-04T12:01:22.803 回答
0

Apache 本身不允许创建目录遍历漏洞。您将需要使用 PHP 之类的东西来传递?file=filename参数并使用open()该值。

PHPopen()函数将解释../../转义“预期”目录所需的序列。但是 Apache 本身不允许这样做。

于 2021-04-06T19:12:27.293 回答