Gravação de escalonamento de privilégios / etc / passwd, mas sem permissão SUID no su
Este não é um exercício, pode não haver solução.
Estamos produzindo uma imagem Docker (baseada no CentOS) que foi projetada para ser executada por um usuário não root. No entanto, este usuário tem acesso de gravação em / etc / passwd porque está no grupo "root". Aqui estão as permissões / etc / passwd:
-rw-rw-r-- 1 root root 692 Dec 16 14:35 /etc/passwd
Esta é uma falha crítica e deve permitir um escalonamento fácil de privilégios. Posso adicionar um usuário em / etc / passwd.
Mas não posso mudar para este usuário, porque su não tem permissão SUID:
-rwxr-xr-x 1 root root 32128 Sep 30 17:46 /bin/su
Como resultado, o usuário não tem permissões suficientes para uma execução bem-sucedida do su:
su: cannot set groups: Operation not permitted
Pelo que entendi, na maioria do Linux, o comando su é configurado com permissão SUID. Isso significa que quem quer que execute su, é considerado executado pelo usuário root. Outra alternativa pode ser brincar com os recursos. Suponho que CAP_SETGID e CAP_SETUID sejam necessários e talvez alguns outros. Se o su foi configurado com esses recursos, a permissão SUID pode não ser necessária. Mas em nossa imagem Docker, não há recursos no su. Portanto, parece que apenas o root pode executar o su corretamente.
Além disso, o sudo não está instalado e nenhum sshd / telnetd está em execução.
Então, como posso usar as credenciais adicionadas a / etc / passwd? O Curl está disponível se isso puder ajudar.
Respostas
Em um host Linux padrão (VM ou servidor) se você tem acesso a /etc/passwd
ou /etc/shadow
então você pode modificar ou adicionar credenciais para contas, o que seria, obviamente, um problema sério (há detalhes sobre as conseqüências de permitir que uma modificação /etc/passwd
em esta resposta
Em um contêiner Docker, geralmente o software que faz uso desses arquivos não está instalado, portanto, nenhum PAM Linux, nenhum SSHD ou outro software que faria uso de um banco de dados de autenticação.
Sem esse tipo de software instalado, não há muito o que fazer, pois não há programas que operem nesses arquivos.
Obviamente, se o aplicativo em execução no contêiner fizer uso de /etc/passwd
, modificá-lo poderá ter um impacto, mas isso será situacional, dependendo do que o contêiner fizer.