您当前的位置:首页 > 知乎文章

web攻击之目录遍历

时间:2022-02-28 10:47:52  知乎原文链接  作者:网盾科技

在下面这张图中,我们可以看到很明显的漏洞提示。

这就是本文所要描述的关键词“目录遍历”的例图。

很多网站功能设计人员会把需要访问的文件定义成变量,以此使前端功能更加灵活。当用户发起一个前端请求时,会将请求的这个文件的数据传递到后台,后台再执行其对应的文件。

在这个过程中,假如后台没有对前端传过来的数据进行严格的安全审核,则攻击者可能会通过“../”这样的方法从后台打开或者执行一些其他的文件,从而导致后台服务器上其他目录的文件结果被遍历出来,形成目录遍历漏洞。

和遍历目录的意思不同,所谓遍历目录,是给定一个目录,访问其中的所有文件(包括子目录下的文件),而程序员只需要利用很简单的语言特性封装目录遍历,会运用成员函数,就能够在自己的程序中实现目录遍历。

目录遍历又称之为路径遍历,通常是由于web服务器配置错误,或者web应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件(可以使web根目录以外的文件),甚至执行系统命令。

以上的一些描述,或许会让你对目录遍历成因理解成与不安全的文件下载漏洞差不多,其实没错,目录遍历漏洞形成的最主要原因是在功能设计中将要操作的文件使用变量的方式传递给了后台,而后台对这个方面没有搭建严谨的安全审核程序,只是所表现的方式和所发生的位置不一样。需要区分一下的是,如果通过不带参数的url(比如xxxx/doc)列出了doc文件夹里面所有的文件,这种情况我们称为敏感信息泄露,而并不归为目录遍历漏洞。

要查询一个网站上有没有目录遍历,可以通过一个非常简单的方式。

在网盾上随机找出一张图片的链接:

将后面的代码去掉,只保留目录wangdun.cn/Images/

发现访问被拒绝,说明这个网站不存在目录遍历漏洞;或者说,一般没有index.php就可能出现像图一那样的一个目录遍历漏洞,但一般情况下都会有index文件。

我们不能把风险点由存在缺陷的代码处转移到依赖框架上面主要原因有二:

(一)我们无法确保每次写url传递规则的时候不出错,特别是项目庞大之后为了兼顾功能而忽略一些安全隐患点;

(二)存在缺陷的代码不能就这样放着,因为无法保证在别处不会调用这块代码,必须把风险点从根本上消除。

这就是为什么很多公司网站会更喜欢通过租用高防IP或者云WAF业务直接避免web攻击的原因,毕竟省时省力的同时还不需要实时跟进技术考核。

假如有攻击者写了一个网站攻击脚本,利用代码获取了文件存储路径,通过获取此目录文件、显示至网站上,其中如果没有对代码进行相关验证的过滤机制就会导致目录遍历漏洞。

我们可以利用漏洞练习平台Pikachu做一个详细的漏洞描述。

点击以下红色箭头指向的链接:

下面图可以看到URL发生变化且有个参数title,title的内容是一个文件名,下面直接爆出该文件名的内容:

尝试一下修改title的值,爆出etc下的passwd文件,输入../../../../../../../../../../etc/passwd, 可以看到成功显示passwd的内容。说明这里后台没有进行一个严格的安全考了导致了漏洞。

那么我们爆出指定文件的内容,是否可以直接爆出后台所有的文件目录呢?

这里换一种思维去操作,可以看到整个URL可以看成就是一个jasheads.php文件的路径,把后端路径代码全部删除掉,直接在dir目录下的文件。

直接爆整个后台的目录,在后面输入../../,敲回车就自动跳转到后台的整个目录页面了,此时看到URL也发生了变化最终成功爆出整个后台的目录。

上一篇      下一篇    删除文章    编辑文章
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门