docker.sock
Apresentação
O arquivo docker.sock pode ser usado para a comunicação com o docker deamon dentro do contêiner. Ele utiliza sockets do unix, então podemos acessar usando unix://
Docker Deamon
O docker deamon é uma "ponte" entre o contêiner e o host para a manipulação de contêiners.
Ele sempre é executado como root, então se conseguirmos escapar do contêiner pegaremos acesso root ao host
Privilege Escalation
Para escapar do contêiner e conseguir acesso ao host, o docker.sock teria que estar mapeado dentro do contêiner, isso é usado por desenvolvedores quando, por algum motivo, o contêiner precise executar algo no host.
O root do docker é o mesmo do root do host, porém com permissões diferentes, o docker consegue isso através de namespaces
Vamos olhar o diretório do root do nosso host para ter certeza que conseguimos escapar do contêiner
Suponhamos que a imagem tenha sido executada assim:
É muito normal as imagens do docker não possuirem o docker, então precisamos instalar caso não haja.
-H, --host list Daemon socket(s) to connect to
Vamos usar a opção -H para o docker deamon para se conectar ao docker.sock, a ideia aqui é rodar o comando no host com auxílio do docker deamon + docker.sock, com isso vamos executar uma nova imagem mapeando o diretório raiz do host para o nosso novo contêiner, como o docker deamon roda como root, teremos acesso root ao host, podemos utilizar o segunite comando para isso:
É importante frisar que o comando acima será executado no host através do nosso contêiner com apoio do docker deamon + docker.sock
Conclusão
Só mapeie o docker.sock no seu contêiner se realmente precisar, se for mapear segue o link para a proteção contra esse escape:
Last updated