Web_for_Pentester_I之目录遍历

Web_for_Pentester是国外安全研究者开发的一款渗透测试平台,由PentesterLab出品。官方给自己的定义是一个简单又十分有效地学习渗透测试的演练平台。
目录遍历漏洞是因为web应用对路径部分没有过滤或者编码。在一个遍历漏洞中,可以使用“相同值技术”来测试是否存在问题。举个例子,如果一个参数的路径是/images/photo.jpg。你可以尝试以下这些路径:
 /images/./photo.jpg 可以看到同样的页面。
 /images/…/photo.jpg 看到一个错误页面。
 /images/…/images/photo.jpg 再次看到同样的页面。
 /images/…/IMAGES/photo.jpg 出现一个错误(视文件系统而定)或者发生一些古怪的事情。
如果没看到image这个路径参数,这个合法的路径直接是photo.jpg,你需要找出它的父目录是什么。
在测试中,你可以尝试检索其他文件。在Linux/Unix中最常用的测试文件是/etc/passwd。你可以这么试:
images/…/…/…/…/…/…/…/…/…/…/…/etc/passwd
如果你能看到passwd文件的内容说明web应用是存在漏洞的。这个方法的好处是你不用知道需要放几个…/,如果你放了很多一样能奏效。
另一件有趣的事情是,如果在windows下你有个目录遍历漏洞,你可以打开test/…/…/…/file.txt这样的路径,即使test这个目录不存在。但在linux就行不通了。当遇到代码结合用户输入的数据来创建文件名的时候这是很有用的漏洞。举个例子,下面的php代码是设计为添加id变量来创建文件名的(比如example_1.txt)。在linux下,如果不存在以example_开头的目录,就无法利用这个漏洞,然而在windows下,即使不存在这样的目录也能成功利用这个漏洞。
f i l e = " / v a r / f i l e s / e x a m p l e " . file = "/var/files/example_". file="/var/files/example"._GET[‘id’ ].“.txt” ;
在这些例子中,含有漏洞的脚本代码使用了<img标签。你需要读取HTML源代码(或者复制图片url)来获得正确的链接地址来实施漏洞攻击。
步骤如下:
一、 Example1
1.1 由Directory traversal Example1的源代码example1.php可知,这是一个非常简单的目录遍历例子。你可以进入下层或者返回上传目录来获取任何你能获取的文件。在这个例子中,你会受到文件系统的权限限制,比如不能得到/etc/shadow 这个文件。在这个例子中,基于web服务器发送的报文报头,浏览器会以不同的形式显示返回值。有时候服务器返回的报文的报头是Content-Disposition: attachment,这样浏览器不会直接显示文件的内容。你需要打开这个附件形式的文件来查看它的内容。这种方式的每次测试都会花费一点时间。如图1、图2所示
在这里插入图片描述

图 1
在这里插入图片描述

图 2
1.2 打开火狐浏览器,在浏览器地址栏输入http://vulnerable/dirtrav/example1.
php?file=…/…/…/…/…/…/…/etc/passwd,获得passwd文件的内容,单击右键,选择查看页面源代码,可以更清楚地查看文件内容。如图3、图4所示
在这里插入图片描述

图 3
在这里插入图片描述

图 4
二、 Example2
2.1 由Directory traversal Example2的源代码example2.php可知,在这个例子中,你可以看到链接的文件的完整路径。但是,如果你直接把路径替换成 /etc/passwd ,那你还是得不到任何东西。这个简单的路径检查是php代码完成的。不过你仍然可以在原来路径的后面加上你的攻击代码,在文件系统中进入或者返回上下级目录。如图5、图6所示
在这里插入图片描述

图 5
在这里插入图片描述

图 6
2.2 在IE浏览器地址栏输入http://vulnerable/dirtrav/example2.php?file=
/var/www/files/hacker.png,得到乱码。

2.3 打开IE浏览器,在浏览器地址栏输入http://vulnerable/dirtrav/example2.
php?file=/var/www/files/hacker.png,得到图片,/var/www/后的是绝对路径。如图8所示
在这里插入图片描述

图 8
2.4 在火狐浏览器地址栏输入http://vulnerable/dirtrav/example2.php?file=
/var/www/files/…/…/…/etc/passwd,得到passwd的文件内容。如图9所示
在这里插入图片描述

图 9
三、 Example3
3.1 由Directory traversal Example3的源代码example3.php可知,这个例子是基于一个常见的问题,当你尝试遍历目录的时候,服务端代码会在你的代码中添加自己的后缀。这时候用 NULL 字符(url编码为%00)很容易绕过它。用空值摆脱服务器端添加的后缀是通常的绕过方法,这在Perl和旧版本的PHP能达到很好的效果。PHP从5.3.4开始解决了这个安全漏洞。如图10、图11所示
在这里插入图片描述

图 10
在这里插入图片描述

图 11
3.2 在浏览器地址栏输入http://vulnerable/dirtrav/example3.php?file=…/…/
…/…/…/etc/passwd,得不到任何数据。如图12所示
在这里插入图片描述

图 12
3.3 在浏览器地址栏输入http://vulnerable/dirtrav/example3.php?file=…/…/
…/…/…/etc/passwd%00,得到passwd文件内容。如图13所示
在这里插入图片描述

图 13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值