使用DWN在Docker中进行渗透测试

关于DWN
DWN是一个针对网络安全研究人员设计和开发的Docker-Compose,它使用的是一种简单的YAML格式的Plan,支持在工具配置和安装过程中定义镜像名称、版本、卷/端口映射等。本质上来说,DWN就是一个Docker版本的渗透测试工具管理器。
当前版本的DWN支持以下功能:
在Docker容器中安装和配置常用渗透测试工具。
能够自动识别卷宗加载。
在不重新启动容器的情况下动态修改端口绑定。
更多功能敬请期待…

DWN安装
首先,我们需要在本地系统安装并配置好Python环境,然后运行下列命令即可安装DWN:
pip3 install dwn
工具使用
DWN的使用非常简单,这里的核心思想就是定义关于工具的信息-Plan,比如说工具名称、版本信息、加载和绑定等等。DWN已经有一些预置的Plan了,我们可以直接运行dwn命令来查看:
❯ dwn
Usage: dwn [OPTIONS] COMMAND [ARGS]…
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
如需查看所有可用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 │

└──────────────────┴───────────────────────────────────────┘

如果你想要运行gowitness(屏幕截图)这个Plan,可以直接运行下列命令:
dwn run gowitness --disable-db single https://www.google.com
这个Plan将会在完成任务后退出,因此我们不需要运行“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这样的Plan会一直保持运行,我们可以在它开始跟任意Shell交互之后接收到相关信息,比如说:
❯ 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
绑定Plan:
❯ 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
最后,终止一个Plan:
❯ dwn stop netcat-reverse -y
(i) stopping 2 containers for plan netcat-reverse

网络连接
DWN允许我们对Plan进行动态端口映射,而无需重启容器。网络连接命令属于dwn network的子命令。我们用nginx这个Plan来举个例子,我们可以对其进行动态端口映射。首先,我们需要启动nginx这个Plan:
❯ 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!
更新Plan
“dwn plans pull”命令可以更新Plan中定义的镜像。如需更新一个Plan,只需要在“pull”命令后添加Plan名称即可,比如说:

dwn plans pull nginx
编写Plan
“dwn plans new”命令可以用于快速构建新Plan。尽管启动和运行Plan只需要几个选项,但Python Docker SDK中存在的所有用于运行调用的选项都是可以使用的有效选项。

项目地址
DWN:https://github.com/sensepost/dwn

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值