Kubernetes Roles Abuse Lab
Last updated
Last updated
Aprenda e pratique Hacking AWS: Aprenda e pratique Hacking GCP:
Você pode executar esses laboratórios apenas dentro do minikube.
Vamos criar:
Uma conta de serviço "test-sa" com privilégio de cluster para ler segredos
Um ClusterRole "test-cr" e um ClusterRoleBinding "test-crb" serão criados
Permissões para listar e criar pods para um usuário chamado "Test" serão concedidas
Um Role "test-r" e RoleBinding "test-rb" serão criados
Em seguida, vamos confirmar que a SA pode listar segredos e que o usuário Test pode listar pods
Finalmente, vamos impersonar o usuário Test para criar um pod que inclui a SA test-sa e roubar o token da conta de serviço.
Esta é a maneira de mostrar que o usuário poderia escalar privilégios dessa forma
Para criar o cenário, uma conta de administrador é usada. Além disso, para exfiltrar o token da sa neste exemplo, a conta de administrador é usada para executar dentro do pod criado. No entanto, como explicado aqui, a declaração do pod poderia conter a exfiltração do token, então o privilégio de "exec" não é necessário para exfiltrar o token, a permissão de "criar" é suficiente.
Neste caso, vamos patchar um daemonset para fazer com que seu pod carregue nossa conta de serviço desejada.
Se seu usuário tiver o verbo update em vez de patch, isso não funcionará.
Não funciona:
Criar um novo RoleBinding apenas com o verbo create
Criar um novo RoleBinding apenas com o verbo patch (você precisa ter as permissões de binding)
Você não pode fazer isso para atribuir o papel a si mesmo ou a um SA diferente
Modificar um novo RoleBinding apenas com o verbo patch (você precisa ter as permissões de binding)
Você não pode fazer isso para atribuir o papel a si mesmo ou a um SA diferente
Neste exemplo, tentamos criar um papel com as permissões de criar e acessar os recursos de papéis. No entanto, o K8s nos impede de criar um papel com mais permissões do que o principal que está criando possui:
Na seção "Prevenção de Escalação de Privilégios e Inicialização" de é mencionado que se um SA pode criar um Binding e tem permissões de Bind explícitas sobre o Role/Cluster role, ele pode criar bindings mesmo usando Roles/ClusterRoles com permissões que não possui. No entanto, não funcionou para mim:
Aprenda e pratique Hacking AWS: Aprenda e pratique Hacking GCP:
Confira os !
Junte-se ao 💬 ou ao ou siga-nos no Twitter 🐦 .
Compartilhe truques de hacking enviando PRs para os repositórios do e .