定制小程序开发CVE-2018-3760漏洞复现

CVE-2018-3760

前言

一、漏洞介绍: On Rails定制小程序开发是一个著名的Ruby Web开发框架,定制小程序开发它使用链轮作为开发环定制小程序开发境中的静态文件服务器。Sprockets是一个编译和分发静态资源文件的Ruby库。
在Ruby 3.7.1和更低版本中,存在由辅助解码引起的路径遍历漏洞。攻击者可以使用%252e%252e/访问根目录并读取或执行目标服务器上的任何文件。
具体操作及原理接下来会详细描述。
二、影响版本:
4.0.0.beta7及更低版本
3.7.1及更低版本
2.12.4及更低版本

漏洞原理

问题出在sprockets,它用来检查 JavaScript 文件的相互依赖关系,用以优化网页中引入的js文件,以避免加载不必要的js文件。当访问如http://127.0.0.1:3000/assets/foo.js时,会进入server.rb:

解题思路

利用%252e%252e/进行目录穿越,读取passwd

漏洞复现

一、访问靶机
该漏洞在kali下进行复现

二、当我们使用/assets/file:///etc/passwd访问,发现//会被过滤,所以对其进行url编码,而/的url编码为%2f
三、
报错的原因是:/etc/passwd is no longer under a load path,也就是说不再位于加载路径下
四、在ruby on ralis内部存在函数forbidden_request用来对path进行检查,是否包含..以防路径穿越
%252e%252e

private    def forbidden_request?(path)    # Prevent access to files elsewhere on the file system    #    #     http://example.org/assets/../../../etc/passwd    #    path.include?("..") || absolute_path?(path)end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

因为对..做了过滤,且当前环境存在二次编码,我们对../中的…进行二次编码
..第一次转码:%2E%2E,因为%也要进行二次编码,第二次编码就是:assets/file:%2f%2f/usr/src/blog/vendor/assets/javascripts/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/etc/passwd成功得到passwd文件内容。

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发