pikachu—目录遍历

文章目录

目录遍历概述

在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再执行其对应的文件。 在这个过程中,如果后台没有对前端传进来的值进行严格的安全考虑,则攻击者可能会通过“…/”这样的手段让后台打开或者执行一些其他的文件。 从而导致后台服务器上其他目录的文件结果被遍历出来,形成目录遍历漏洞。

区别

看到这里,你可能会觉得目录遍历漏洞和不安全的文件下载,甚至文件包含漏洞有差不多的意思,是的,目录遍历漏洞形成的最主要的原因跟这两者一样,都是在功能设计中将要操作的文件使用变量的 方式传递给了后台,而又没有进行严格的安全考虑而造成的,只是出现的位置所展现的现象不一样,因此,这里还是单独拿出来定义一下。

需要区分一下的是,如果你通过不带参数的url(比如:http://xxxx/doc)列出了doc文件夹里面所有的文件,这种情况,我们成为敏感信息泄露。 而并不归为目录遍历漏洞。

目录遍历漏洞测试

1.打开目标网站,我们单击第一个链接和第二个链接查看内容
pikachu—目录遍历
pikachu—目录遍历

2.发现URL是通过title传参过去的,尝试构造漏洞利用链接,失败

/vul/dir/dir_list.php?title=../../

pikachu—目录遍历
从上面能看出来是因为这里是使用文件包含的函数来进行完成的,所以只有目录没有文件就算包含失败了。

可是将dir_list.php去掉后,得到这样的一个页面。
pikachu—目录遍历
3.尝试是否可以访问某些敏感文件

访问首页:

http://127.0.0.1/pikachu-master/vul/dir/dir_list.php?title=../../../index.php

pikachu—目录遍历
访问敏感文件:

http://127.0.0.1/pikachu-master/vul/dir/dir_list.php?title=../../../../../mysql/my.ini

pikachu—目录遍历

4.通过查看源代码

从代码里面读取文件内容用的是require()函数,并且对输入参数没有做处理和限制,因而造成了目录遍历漏洞,

由于测试用的是require()函数,因此也是有文件包含漏洞的。
pikachu—目录遍历

漏洞原理

若web要显示一个商品的图像,有时候开发者会用通过HTML加载,如:

<img src="/loadImage?filename=214.png">

使用filename参数加载图像文件,图片文件位置可能映射在 /var/www/images/ 上,所以真实的路径是

/var/www/images/214.png

这就导致了攻击者可以读取服务器上的任意文件:

https://www.*****.com/loadImage?filename=../../../etc/passwd

filename的参数值与真实路径组合起来就是:

/var/www/images/../../../etc/passwd
其等价于:
/etc/passwd

Unix操作系统上,../ 是一个标准的返回上一级路径的语法;
Windows操作系统上, ../..\ 都是返回上一级的语句。

常用漏洞验证方法

  • …/…/…/…/…/…/(多少个…/都行,越多越好)/etc/passwd
    URL上这一串东西的意义:…/返回上级目录,当返回到根目录时候再…/还是根目录,然后直接进入linux系统的passwd文件
  • file:///etc/passwd(这里是文件包含漏洞,不过利用方法一致)
  • http://xxxxx

前两者用途:可以读取到目标系统的机密文件

目录遍历漏洞的特征

?page=xxx.php
?home=xxx.html
?index=xxx.jsp
?file=content

总结

很多文件包含漏洞实际上也包含了目录遍历漏洞(payload中包含…/)
只要payload中包含../就是有目录遍历漏洞,只是它经常作为其他比它危害更大的漏洞的不留名辅助。

上一篇:pikachu之越权漏洞


下一篇:pikachu靶场安装(phpstudy)(仅供参考)