Faaalaaa galera,

Estava aqui brincando um pouco com docker e suas funcionalidades - que são incríveis por sinal!

Mas como todo hacker, gosto sempre de pensar "por onde daria pra invadir esse negócio aqui"? E então, durante o processo de instalação do queridíssimo docker, é possível fazer o gerenciamento dos containers usando o comando "docker".

Com este comando você pode criar seus containers, redes, imagens e muito mais! Esse "gerenciador via cli" está conectado ao unix socket "/var/run/docker.sock" e também pode se conectar remotamente ao docker via TCP.

Depois de tudo instalado, podemos usar os comandos:

docker ps - para listar os containers que estão rodando no servidor
docker exec - para rodar comandos dentro do container e muito mais

Até aqui, nada a anormal né ?

imagem de docs.docker.com

Então, agora começa a brincadeira! Lembra que eu falei que você pode se conectar remotamente no servidor onde está hospedado os seus containers né ?

Isso é feito via API, e esta API por padrão não tem senha e não é criptografado!

Sim, é exatamente o que você acabou de ler "SEM SENHA e SEM CRIPTOGRAFIA".

A porta padrão de gerenciamento remoto do docker via TCP é na porta 2375.

Então, se eu quiser gerenciar remotamente um servidor eu posso digitar o comando -H no meu docker e conectar ao servidor.

Ex: docker -H SERVIDOR ps

ou podemos exportar uma variável de ambiente também, assim não precisa usar -H sempre.

Ex:

- export DOCKER_HOST=SERVIDOR
- docker ps

Agora, você deve estar pensando a mesma coisa que eu, se tem senha padrão e porta TCP, vamos para o shodan rs

Em uma pesquisa rápida aqui no shodan, deu resultado com mais de 6,8k hosts potencialmente vulneráveis a essa falha.

Print do shodan.io

Vamos pegar um host para testar ?

Olha só, primeiro eu fiz um teste com netcat pra ver se a porta estava aberta no servidor e então executei um comando "ps" para listar todos os containers do servidor.

Neste host existem vários containers, um para o servidor web "nginx", outro para cache "redis" e até um container pra minerar bitcoin "cpuminer", acho que alguém chegou antes que a gente rsrsrsrs.

Bom, podemos executar o comando "docker exec" para ganhar uma "shell" dentro do servidor, vamos testar...

Conseguimos acessar o container com o login "root", lembrando que, como temos acesso ao servidor hospedeiro, poderíamos deletar e parar todos os containers hospedados lá!

Bizarro, não é mesmo e pensar que existem vários outros com o mesmo potencial de vulnerabilidade.

Atenção !
O objetivo deste artigo é apenas alertar para esta potencial falha caso você seja do BlueTeam e caso seja do RedTeam/Pentest, mais uma coisa para olhar quando estiver testando uma infraestrutura.

Este post NÃO é um incentivo a pratica de crimes!

Agora imagina outro cenário interessante, um atacante poderia fazer download de todos esses servidores potencialmente vulneráveis do shodan, criar imagens personalizadas e instalar em todos eles, criar uma "Botnet" para fazer ataques DDoS ou até uma rede de cryptojacking para ficar minerando bitcoin.