文件操作安全之-目录穿越原理篇

这篇具有很好参考价值的文章主要介绍了文件操作安全之-目录穿越原理篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本节将详细解释一下目录穿越相关内容,作为我的专栏《安全运营之网络攻击研判分析》中的一节。本文主要阐述目录穿越相关的原理,关于目录穿越攻击的流量示例,以及分析研判等内容,详见这里。

Linux系统中提供了./用以表示当前目录,…/表示上一级目录,如下是Linux系统中关于这些字符的用法:
文件操作安全之-目录穿越原理篇

图1

在linux中一切皆文件,可以看到每个文件夹下面都是存在着./以及…/两个文件的,用来表示当前文件目录和上一级的文件目录,因此可以使用cd命令对这两个字符进行操作。

目录穿越之漏洞原理

关于目录穿越的定义,CWE的定义如下图2:
文件操作安全之-目录穿越原理篇

图2
在web服务中,URL是访问文件的路径标识,该路径和后台web服务器上的文件路径有着某种对应的关系,如图3:
文件操作安全之-目录穿越原理篇

图3
其中packetstormsecurity.com是该web服务的广域网地址(相当于IP地址),在定位到该IP服务器之后,则会根据URL到相应的目录下去查找对应的文件。/files/164418/是对外显示的文件目录,实际的服务器后台绝对路径可能是web目录+/files/164418/,例如/var/www/html/files/164418/。如果不对输入的URL进行限制,则存在着构造特殊的URL路径,映射到具体的服务器目录则导致访问回溯,最常见的后果是导致任意文件访问。

目录穿越之漏洞举例

目录穿越的漏洞曾经是非常的普遍,但是随着框架的普及以及安全意识的提升,没有任何过滤所导致的目录穿越漏洞越来越少。但是绝大多数的程序员是缺乏攻击者视角的,目前文件目录穿越的防护还是依赖于一些框架所提供的的一些机制,因此框架本身处理不当将会导致比较严重的后果。目前来看,框架中导致目录穿越漏洞原因更多的集中在一些细微之处的疏忽。下面介绍一个比较典型的目录穿越漏洞。

CVE-2021-41773

该漏洞是Apache HTTP SERVER的一个漏洞,存在于在2.4.49 版本中。当解析HTTP请求中的文件路径时候,文件路径标准化处理函数ap_normalize_path考虑不周,导致可以通过编码构造文件路径实现任意文件的访问,由于apache的HTTP服务器通常情况下会开启CGI的配置,因此该漏洞还有可能导致任意命令执行。如下图4 NVD中的介绍:

文件操作安全之-目录穿越原理篇
图4
由于该漏洞是apache http服务器漏洞,属于基础性服务软件,因此可以说影响所有使用apache服务器的网站,因此从该漏洞从影响面,apache http server的流程程度,以及可能潜在的后果来看,这是一个非常严重的漏洞。下面根据公开的exp以及apache 修复的patch进一步的分析该漏洞。其中exp(该漏洞的利用程序)如图5所示:
文件操作安全之-目录穿越原理篇
图5
图中提供了两个利用示例,可以看到只要对第二个点使用%2e进行URL编码,即可绕过URL标准化处理程序实现目录穿越。两个示例会导致两种后果,其一是实现任意文件读取(读取/etc/passwd),其二是在开启CGI(CGI允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器)的情况下,实现任意命令的执行(即在/bin/sh中执行whoami命令)。对比漏洞patch内容,如下图6:
文件操作安全之-目录穿越原理篇
图6
对比补丁来看,其注释表明,修复之前的版本仅仅是在标准化的时候略过了…/这样的字符,而修复后的版本增加了对于.%2e/这种情况的处理。这种修复的方式是一种非常典型的处理方式,即在漏洞爆出之后,为了尽可能的修复该漏洞,针对POC即图4中的利用进行修复,限制%2e的使用。由于业务开发人员对于往往不具备攻防知识,因此修复的结果往往是治标不治本。因此在2.4.50版本修复完成之后,很快针对修复版本出现了新的利用,虽然针对的是同一个问题,但是软件的版本不同,因此被赋予了漏洞编号CVE-2021-42013。

CVE-2021-42013

上图5中也有提到CVE-2021-41773中的补丁修复不够的完备,仍然存在绕过的情形,如下图7 NVD中的介绍:
文件操作安全之-目录穿越原理篇
图7
该漏洞的利用程序,如下图8:
文件操作安全之-目录穿越原理篇
图8
对比图8中的漏洞利用程序和 CVE-2021-41773 即图5中的利用程序,是很容易理解该漏洞的成因的,即没有对双编码的情形加以考虑,如下图9为该漏洞CVE-2021-42013的patch修复情况:

文件操作安全之-目录穿越原理篇
图9
从图9中的补丁对比可以看出,在遇到双编码的时候,直接返回0(非法编码),表示URL标准化失败,这样的话,该URL就不会被成功的处理,从而避免双编码的利用。

CVE-2021-41773和CVE-2021-42013被分配了两个不同的编号,但是实际上这两个漏洞可以说是相关性非常强的漏洞,问题出现在同一个函数之中,只是影响的版本不同。历史上曾经多次出现过面向POC的修复导致修复不完备的情况,针对同一个问题被连续分配多个漏洞编号。这其中的根因是因为绝大多数的软件开发人员缺乏安全知识,无法从攻防的角度系统性的考虑业务功能安全。因此目前整个软件安全还是通过黑盒测试,白盒审计以及POC的开放促进软件的业务安全。由于黑盒白盒,白盒审计都无法100%覆盖所有的漏洞,因此尽可能早的漏洞细节纰漏对于软件的修复以及安全防御都是很重要的。

上述从漏洞POC以及源码层面介绍了目录穿越的漏洞,要想深入的体验该漏洞的影响,建议使用apache 2.4.50的release环境自行的验证,加深对于该漏洞的理解,如下图10 vulhub中的环境:
文件操作安全之-目录穿越原理篇
图10

目录穿越之潜在危害

前面从原理和示例两份方面针对目录穿越进行了简单阐述,目录穿越会导致哪些后果呢。应该来说不同的漏洞影响程度是不一样的。下面列举目录穿越漏洞潜在的危害:

  • 任意文件访问,这应该是目录穿越漏洞导致的最常见后果了,例如图8中的POC利用目录穿越读取/etc/passwd等关键文件。
  • 信息泄露,这类的后果比之任意文件访问影响小一些。在复杂的软件中,各种黑白名单的限制,导致目录穿越能够访问文件受限,例如访问权限仅存在于WEB空间目录,这个时候会导致一些敏感配置文件的泄露
  • 远程命令执行,一般我们提到远程命令执行说的是这一类漏洞的统称,但是在本文的漏洞中,例如图8中的POC示例,可以看到在CGI开启的情况下,也会因为目录穿越导致远程命令执行的发生。

本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里。文章来源地址https://www.toymoban.com/news/detail-477505.html

到了这里,关于文件操作安全之-目录穿越原理篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Nginx目录穿越漏洞

    Nginx目录穿越漏洞

    影响版本 :全版本 影响说明 :信息泄漏 环境说明 :Nginx 1.13.0 漏洞复现: Nginx的目录穿越漏洞严格定义的话,并非是漏洞,而是Nginx的特性,由于运维人员或者开发人员配置错误而导致的漏洞。 该问题出现在Nginx的虚拟目录配置上,也就是Alias。Alias正如其名,alias指定的路

    2024年02月16日
    浏览(14)
  • Nginx漏洞修复之目录穿越(目录遍历)漏洞复现及修复

    Nginx漏洞修复之目录穿越(目录遍历)漏洞复现及修复

    前言 Nginx是一个高性能的HTTP和反向代理服务器,经常被做为反向代理,动态的部分被proxy_pass传递给后端端口,而静态文件需要Nginx来处理。 漏洞出现在服务器的静态文件中。如果静态文件存储在/home/目录下,而该目录在url中名字为files,那么就需要用alias设置目录的别名 。

    2024年02月04日
    浏览(11)
  • Nginx/OpenResty目录穿越漏洞复现

    Nginx/OpenResty目录穿越漏洞复现

    2020年03月18日, 360CERT监测发现 openwall oss-security 邮件组披露了两枚漏洞。在特定配置下 nginx/openresty 存在 内存泄漏漏洞/目录穿越漏洞。 Nginx 是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。 OpenResty是一个基于nginx的Web平台,它对nginx增加LuaJIT引擎使其

    2023年04月10日
    浏览(10)
  • nginx目录穿越漏洞(insecure-configuration)

    nginx目录穿越漏洞(insecure-configuration)

    该漏洞是由于配置错误导致的 这个常见于Nginx做反向代理的情况,动态的部分被proxy_pass传递给后端端口,而静态文件需要Nginx来处理。 vulhub靶场   进入nginx/insecure-configuration 运行docker-compose up -d 8081端口为目录穿越漏洞  最终结果:   我们打开docker-compose.yml文件,看看里面的

    2024年02月09日
    浏览(8)
  • 目录穿越/遍历漏洞及对其防御方法的绕过

    目录穿越/遍历漏洞及对其防御方法的绕过

      目录穿越(目录遍历)是一个Web安全漏洞,攻击者可以利用该漏洞读取运行应用程序的服务器上的任意文件。 这可能包括应用程序代码和数据,后端系统的登录信息以及敏感的操作系统文件。目录穿越不仅可以访问服务器中的任何目录,还可以访问服务器中任何文件的内

    2024年02月11日
    浏览(13)
  • 使用WAF防御网络上的隐蔽威胁之目录穿越

    使用WAF防御网络上的隐蔽威胁之目录穿越

    目录穿越(Directory Traversal)是一种网络安全攻击手段,也被称为路径穿越。 这种攻击允许攻击者访问存储在Web服务器文件系统上的文件和目录,这些文件和目录原本不应该对用户可见或可访问。 通过利用安全漏洞,攻击者可以通过修改URL的路径来访问系统文件或其他关键目

    2024年01月22日
    浏览(9)
  • 详细的DedeCMS(织梦)目录权限安全设置教程

    一、目录权限 根据统计,绝大部分网站的攻击都在根目录开始的,因此,栏目目录不能设置在根目录。 DEDECMS部署完成后,重点目录设置如下: 1)将install删除。 2) data、templets、uploads、a或html目录, 设置可读写,取消执行的权限(Windows如何设置目录的权限?);当然对于

    2024年02月02日
    浏览(9)
  • Linux 命令操作(一)——文件和目录操作

    目录信息 参考链接 Linux常用操作命令大全 1.1、创建文件夹 1.1.1、创建目录 1.1.2、创建文件 touch命令操作 1.2、删除文件夹/文件 1.2.1、删除目录操作 1.2.2、删除文件 1.3、重命名目录或者文件名称 1.4、目录切换 1.5、目录以及文件列表查看 1.6、复制目录或者文件 -r 递归处理,将

    2024年02月03日
    浏览(17)
  • 文件目录操作——Linux命令核心

    文件目录操作——Linux命令核心

    目录 相对路径和绝对路径  查看和切换工作目录 pwd 显示当前工作目录的绝对路径 cd 切换目录 列出目录内容 ls 列出目录的内容 创建和删除目录文件夹 mkdir创建一个新目录 rmdir 删除一个空的目录 touch 创建空文件 cp复制文件或者目录 rm 删除文件或目录  mv移动文件与目录或重

    2024年02月01日
    浏览(17)
  • Linux 目录和文件常见操作

    Linux 目录和文件常见操作

    就常见的命令: pwd pwd 显示当前的目录 我以如下的目录大致结构做一个简单的例子 cd 迁移到指定的路径,可以指定相对路径和绝对路径,默认相对 .指向当前路径,…/ 指向上一级的目录。 ls 列出文件及其目录 命令选项: -F 区分文件和目录,目录后面会加上/ -a 显示隐藏文

    2024年02月13日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包