
d(ockerp)wn - менеджер инструментов для взлома Docker
dwn — это «docker-compose для хакеров». Используя простой формат YAML «планов», похожий на docker-compose, можно задать имена образов, версии и пробросы томов/портов для настройки инструмента.
С помощью dwn вы можете:
Просто выполните pip3 install dwn.
dwn действительно очень прост. Основная концепция — «планы», в которых определяется информация об инструменте (например, имя, версия, монтирования и привязки). Уже есть несколько встроенных планов, но вы также можете создать свои собственные. Без аргументов простой запуск dwn выглядит так.
❯ dwn
Usage: dwn [OPTIONS] COMMAND [ARGS]...
__
___/ / _____
/ _ / |/|/ / _ \
\_,_/|__,__/_//_/
docker pwn tool manager
by @leonjza / @sensepost
Options:
--debug enable debug logging
--help Show this message and exit.
Commands:
check Check plans and Docker environment
network Work with networks
plans Work with plans
run Run a plan
show Show running plans
stop Stop a plan
Чтобы вывести список доступных планов, выполните dwn plans show.
❯ dwn plans show
dwn plans
┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ name ┃ path ┃
┡━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ sqlmap │ /tools/dwn/plans/sqlmap.yml │
│ wpscan │ /tools/dwn/plans/wpscan.yml │
│ gowitness-report │ /tools/dwn/plans/gowitness-report.yml │
│ msfconsole │ /tools/dwn/plans/msfconsole.yml │
│ gowitness │ /tools/dwn/plans/gowitness.yml │
│ nginx │ /tools/dwn/plans/nginx.yml │
│ cme │ /tools/dwn/plans/cme.yml │
│ netcat-reverse │ /tools/dwn/plans/netcat-reverse.yml │
│ semgrep-sec │ /tools/dwn/plans/semgrep-sec.yml │
│ semgrep-ci │ ~/.dwn/plans/semgrep-ci.yml │
│ neo4j │ ~/.dwn/plans/neo4j.yml │
└──────────────────┴───────────────────────────────────────┘
11 plans
Чтобы запустить план, например gowitness для создания скриншота https://google.com, выполните dwn run gowitness --disable-db single https://www.google.com. Этот план завершится после выполнения, так что вам не нужно выполнять dwn stop gowitness.
❯ dwn run gowitness --disable-db single https://www.google.com
(i) found plan for gowitness
(i) volume: ~/scratch -> /data
(i) streaming container logs
08 Feb 2021 10:46:18 INF preflight result statuscode=200 title=Google url=https://www.google.com
❯
❯ ls screenshots
https-www.google.com.png
Однако такой план, как netcat-reverse, будет работать постоянно. Вы можете подключиться к TTY плана после его запуска, чтобы взаимодействовать с любыми полученными шеллами. Пример использования:
❯ dwn run netcat-reverse
(i) found plan for netcat-reverse
(i) port: 4444<-4444
(i) container booted! attach & detach commands are:
(i) attach: docker attach dwn_wghz_netcat-reverse
(i) detach: ctrl + p, ctrl + q
Подключение к плану (и выполнение nc -e где-то ещё)
❯ docker attach dwn_wghz_netcat-reverse
connect to [::ffff:172.19.0.2]:4444 from dwn_wghz_netcat-reverse_net_4444_4444.dwn:46318 ([::ffff:172.19.0.3]:46318)
env | grep -i shell
SHELL=/bin/zsh
read escape sequence
Также можно получить отчёт о работающих планах
❯ dwn show
running plan report
┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ plan ┃ container(s) ┃ port(s) ┃ volume(s) ┃
┡━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ netcat-reverse │ dwn_wghz_netcat-reverse_net_4444_4444 │ 4444<-4444 │ │
│ │ dwn_wghz_netcat-reverse │ │ │
└────────────────┴───────────────────────────────────────┴────────────┴───────────┘
И, наконец, остановка плана.
❯ dwn stop netcat-reverse -y
(i) stopping 2 containers for plan netcat-reverse
dwn позволяет динамически сопоставлять порты с планами без перезапуска контейнеров. Сетевые команды находятся в подкоманде dwn network. Возьмём в качестве примера план nginx — мы можем динамически добавить сопоставление портов. Сначала запустите план nginx.
❯ dwn run nginx
(i) found plan for nginx
(i) volume: ~/scratch -> /usr/share/nginx/html
(i) port: 80<-8888
(i) container dwn_wghz_nginx started for plan nginx, detaching
Затем проверьте связь с помощью cURL
❯ curl localhost:8888/poo.txt
haha, you touched it!
❯ curl localhost:9000/poo.txt
curl: (7) Failed to connect to localhost port 9000: Connection refused
Порт 9000 не открыт, поэтому добавим новую привязку порта и проверим соединение
❯ dwn network add nginx -i 80 -o 9000
(i) port binding for 9000->nginx:80 created
❯
❯ curl localhost:9000/poo.txt
haha, you touched it!
Команда dwn plans pull используется для обновления образов (images), определённых в планах. Чтобы обновить только один план, добавьте имя плана после pull. Например: dwn plans pull nginx.
Существует команда dwn plans new для быстрого создания нового плана. Хотя для запуска плана требуется всего несколько параметров, все опции, доступные в Python Docker SDK для вызова run, являются допустимыми тегами, которые можно использовать.
dwn распространяется под лицензией GNU General Public v3 License. Дополнительные разрешения, выходящие за рамки этой лицензии, можно получить по адресу http://sensepost.com/contact/.