pikachu 目录遍历 (皮卡丘漏洞平台通关系列)

16 篇文章 23 订阅

目录

一、官方概述和肺腑之言

二、禅之通关

三、曾经的迷惑,如今的领悟


一、官方概述和肺腑之言

引用内容来自皮卡丘漏洞平台

目录遍历漏洞概述

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

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

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

你可以通过“../../”对应的测试栏目,来进一步的了解该漏洞。

年少不知概述香,一开始pikachu的以上概述我没看明白,特别是看了一眼本关的源代码,更是一脸懵逼,这玩意儿和文件包含漏洞有半点区别吗?所以这一关也一直没弄。

直到后来玩了WebGoat漏洞平台,才理解了目录遍历漏洞究竟是什么意思,看了WebGoat的源代码才明白目录遍历漏洞和文件包含漏洞的区别。

都讲到这里了,就顺便推荐一下我之前写的WebGoat (A1) Injection Path traversal (目录遍历 / 路径遍历)

看起来像在砸场子?然而并没有,每个平台有每个平台的优点,玩过WebGoat之后,再看上述概述,觉得这段概述真不错,难道这就是“大师,我悟了”?

二、禅之通关

这个主题之下只有一关,我们来慢~慢~过~

进入这关可以看到两个链接(下图红框框里面的),都点点试试

点完之后得到带参数的url:http://192.168.101.16/pikachu/vul/dir/dir_list.php?title=jarheads.php

用已知存在的文件试试是否存在目录遍历漏洞,比如文件包含漏洞的概述页面http://192.168.101.16/pikachu/vul/fileinclude/fileinclude.php

对比本关url和目标文件的url,假设文件jarheads.php和文件dir_list.php在同一个文件夹下,payload就应该是这样:http://192.168.101.16/pikachu/vul/dir/dir_list.php?title=../fileinclude/fileinclude.php

先试他一试

报错了,但是一点不亏,稳赚,信息量巨大:

(1)dir_list.php文件中显示title参数值表示的文件的内容用的是require()函数

(2)文件jarheads.php和文件dir_list.php不在同级目录下,jarheads.php在dir_list.php同级的soup目录下

(3)网站所在目录是C:\phpstudy_pro\WWW\

按照上述信息(2),payload应该为:http://192.168.101.16/pikachu/vul/dir/dir_list.php?title=../../fileinclude/fileinclude.php

攻击成功

如果想获得网站外的文件,比如C:\Windows\System32\drivers\etc\hosts,根据之前获得的信息(2)和(3)可以构造payload:http://192.168.101.16/pikachu/vul/dir/dir_list.php?title=../../../../../../Windows/System32/drivers/etc/hosts

三、曾经的迷惑,如今的领悟

来看看曾经令我迷惑的源代码(其实从通关过程中的报错信息已经可以看出来了)

本关的代码里面读取文件内容用的是require()函数,并且对输入参数没有做处理和限制,因而造成了目录遍历漏洞,其实这关由于用的是require()函数,因此也是有文件包含漏洞的。

这个在我一开始玩靶场的时候造成了非常大的迷惑性,使我一度搞不清楚目录遍历漏洞和文件包含漏洞到底有啥区别。

后来玩WebGoat的目录遍历关卡的时候,也看了一下源代码,然后就顿悟了

从下图可见,WebGoat的目录遍历关卡读文件内容不是用的文件包含的方式,而是正常的文件操作。

我可知道为啥pikachu官方对目录遍历漏洞和文件包含漏洞的区别写的不清不楚了,确实有点难表达。

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

 

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值