0

我正在解决这个问题:

https://www.hackthissite.org/missions/realistic/3/

上面的网站被黑了,我们的工作是把它恢复到原来的状态。我从查看源代码开始。黑客留下了一条评论:

“站长请注意,该网站已被黑客入侵,但并未完全破坏。旧网站仍在运行。我只是将旧的 index.html 文件复制到 oldindex.html 并重新制作了这个。不便之处,敬请原谅。”

因此我去了https://www.hackthissite.org/missions/realistic/3/oldindex.html

然后我点击提交诗歌。在名称字段中,我放置了 ../index.html,在诗歌字段中,我放置了页面的源代码:

www(dot)hackthissite.org(dot)missions/realistic/3/oldindex(dot)html。

我得到了正确的答案;但是,我不太明白这是如何工作的。

  1. 首先,您如何知道某些东西何时容易受到目录遍历的影响。我这样做是因为我查看了论坛,但我怎么知道目录遍历是一个选项?

  2. 如果你点击读诗 --> '诗名' 你会得到一个这样的网址:

    www(dot)hackthissite(dot)org/missions/realistic/3/readpoem(dot)php?name=The%20Idiot

    在那种情况下,使用 ../index.html 的最终网址不会是:

    www(dot)hackthissite(dot)org/missions/realistic/3/?name=index(dot)html

    不是 www(dot)hackthissite(dot)org/missions/realistic/3/index(dot)html

对不起(点)。我需要更多的声誉来发布更多的链接。

4

1 回答 1

0

在目录遍历攻击期间,攻击者将提交一个包含字符的文件名,这将允许他们访问预期目录之外的文件。例如,一个点 (.) 表示当前目录,两个点 (..) 表示父目录。在攻击期间,目标是使用 PHP 的提升权限访问和读取受限文件。

这是目录横向易受攻击的 php 代码的示例:

$page = $_GET['page'];
$filename = "/pages/$page";
$file_handler = fopen($filename, "r");  
$contents = fread($file_handler, filesize($file)); 
fclose($file_handler); 
echo $contents;

在您的挑战中,文件:“readpoem.php”在他的 $_GET['name'] 变量中很容易受到攻击,并且发生了类似的事情。

在黑盒渗透测试中,您可以通过跟踪模糊值和分析请求/响应流量时产生的错误来检测它。

en.wikipedia.org/wiki/Fuzz_testing

防止这种情况的一种解决方案是检查“禁止”事件,因为有人在这里举了一个例子: Preventing Directory Traversal in PHP but allowed paths

于 2014-02-11T02:24:54.390 回答