安全RCE之未授权访问分析(9)

2023-05-02 来源:飞速影视
post "account/setting/:id", to: "account#setting", constraints: { id: /[A-Z]d{5}/ }
account/setting/是请求的固定url,:id表示带参数的路由。to表示交给accountcontroller下的actionsetting处理。constraints定义了路由约束,使用正则表达式来对参数进行约束。
过滤器
rails中可以插入定义好的类方法实现过滤器,一般分为before_action,after_action,around_action分别表示调用action"之前"、“之后”、"围绕"需要执行的操作。如:
before_action :find_product, only: [:show]
上方表示在执行特定 Actionshow之前,先去执行 find_product 方法。
还可以使用skip_before_action跳过之前指定的方法。
class ApplicationController < ActionController::Base before_action :require_loginendclass LoginsController < ApplicationController skip_before_action :require_login, only: [:new, :create]end
如在父类ApplicationController定义了一个,在子类可以使用跳过,只针对于和create的调用。

漏洞简要介绍


根据gitlab的官方漏洞issues来看,当访问接口/uploads/user上传图像文件时,GitLab Workhorse会将扩展名为jpg、jpeg、tiff文件传递给ExifTool。用于删除其中不合法的标签。具体的标签在workhorse/internal/upload/exif/exif.go中的startProcessing方法中有定义,为白名单处理,函数内容如下:
func (c *cleaner) startProcessing(stdin io.Reader) error { var err error //白名单标签 whitelisted_tags := []string{ "-ResolutionUnit", "-XResolution", "-YResolution", "-YCbCrSubSampling", "-YCbCrPositioning", "-BitsPerSample", "-ImageHeight", "-ImageWidth", "-ImageSize", "-Copyright", "-CopyrightNotice", "-Orientation", } //传入参数 args := append([]string{"-all=", "--IPTC:all", "--XMP-iptcExt:all", "-tagsFromFile", "@"}, whitelisted_tags...) args = append(args, "-") //使用CommandContext执行命令调用exiftool c.cmd = exec.CommandContext(c.ctx, "exiftool", args...) //获取输出和错误 c.cmd.Stderr = &c.stderr c.cmd.Stdin = stdin c.stdout, err = c.cmd.StdoutPipe() if err != nil { return fmt.Errorf("failed to create stdout pipe: %v", err) } if err = c.cmd.Start(); err != nil { return fmt.Errorf("start %v: %v", c.cmd.Args, err) } return nil}
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号