
d(ockerp)wn - مدير أدوات pwn لدوكر
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 لتحديث الصور المعرفة في الخطط. لتحديث خطة واحدة فقط، أضف اسم الخطة بعد pull. مثال: dwn plans pull nginx.
يوجد أمر dwn plans new لإنشاء هيكل خطة جديدة بسرعة. بينما تحتاج فقط إلى بعض الخيارات لتشغيل الخطة، فإن جميع الخيارات الموجودة في Python Docker SDK لاستدعاء run هي علامات صالحة يمكن استخدامها.
dwn مرخص بموجب رخصة GNU العامة العامة v3. قد تكون الأذونات خارج نطاق هذه الرخصة متاحة على http://sensepost.com/contact/.