关于目录遍历的问题

时间:2014-02-11 02:18:51

标签: directory-traversal

我正在解决这个问题:

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

上面的网站遭到黑客入侵,我们的工作就是让它恢复原状。我从查看源代码开始。黑客留下了评论:

“网站管理员的注意事项本网站遭到黑客入侵,但并未完全被破坏。旧网站仍然存在。我只是将旧的index.html文件复制到oldindex.html并重新制作了这个。很抱歉给您带来不便。” / p>

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

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

WWW(点)hackthissite.org(点)的任务/逼真/ 3 / oldindex(点)的HTML。

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

  1. 首先,你怎么知道什么时候容易受到影响 目录遍历。我这样做是因为我看了论坛,但是 我怎么知道目录遍历是一个选项?

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

    WWW(点)hackthissite(点)的有机/任务/逼真/ 3 / readpoem(点)PHP?名称=的%20Idiot

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

    WWW(点)hackthissite(点)的有机/任务/逼真/ 3 /?名称=指数(点)的HTML

    不是www(点)hackthissite(点)组织/使命/现实/ 3 /索引(点)html

  3. Sory为(点)。我需要更多声望才能发布更多链接。

1 个答案:

答案 0 :(得分: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 allowing paths