freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

如何使用DWN在Docker中进行渗透测试
2021-04-13 20:26:32

关于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]... __ ___/ / _____ / _ / |/|/ / _ \ \_,_/|__,__/_//_/ 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

如需查看所有可用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(屏幕截图)这个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

许可证协议

本项目的开发与发布遵循GNU General Public v3开源许可证协议。

本文作者:,转载请注明来自FreeBuf.COM

# 渗透测试 # pwn
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
评论 按热度排序

登录/注册后在FreeBuf发布内容哦

相关推荐
\
  • 0文章数
  • 0评论数
  • 0关注者
文章目录
登录/ 注册后在FreeBuf发布内容哦
收入专辑