前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用DWN在Docker中进行渗透测试

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

作者头像
FB客服
发布2021-05-20 15:52:07
8420
发布2021-05-20 15:52:07
举报
文章被收录于专栏:FreeBufFreeBuf

关于DWN

DWN是一个针对网络安全研究人员设计和开发的Docker-Compose,它使用的是一种简单的YAML格式的Plan,支持在工具配置和安装过程中定义镜像名称、版本、卷/端口映射等。本质上来说,DWN就是一个Docker版本的渗透测试工具管理器。

当前版本的DWN支持以下功能:

在Docker容器中安装和配置常用渗透测试工具。 能够自动识别卷宗加载。 在不重新启动容器的情况下动态修改端口绑定。 更多功能敬请期待…

DWN安装

首先,我们需要在本地系统安装并配置好Python环境,然后运行下列命令即可安装DWN:

代码语言:javascript
复制
pip3 install dwn

工具使用

DWN的使用非常简单,这里的核心思想就是定义关于工具的信息-Plan,比如说工具名称、版本信息、加载和绑定等等。DWN已经有一些预置的Plan了,我们可以直接运行dwn命令来查看:

代码语言:javascript
复制
❯ 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”):

代码语言:javascript
复制
❯ 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,可以直接运行下列命令:

代码语言:javascript
复制
dwn run gowitness --disable-db single https://www.google.com

这个Plan将会在完成任务后退出,因此我们不需要运行“dwn stop gowitness”命令:

代码语言:javascript
复制
❯ 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交互之后接收到相关信息,比如说:

代码语言:javascript
复制
❯ 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:

代码语言:javascript
复制
❯ dwn stop netcat-reverse -y

(i) stopping 2 containers for plan netcat-reverse

网络连接

DWN允许我们对Plan进行动态端口映射,而无需重启容器。网络连接命令属于dwn network的子命令。我们用nginx这个Plan来举个例子,我们可以对其进行动态端口映射。首先,我们需要启动nginx这个Plan:

代码语言:javascript
复制
❯ 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测试通信连接:

代码语言:javascript
复制
❯ 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名称即可,比如说:

代码语言:javascript
复制
dwn plans pull nginx

编写Plan

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

许可证协议

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于DWN
  • DWN安装
  • 工具使用
    • 网络连接
      • 更新Plan
        • 编写Plan
        • 许可证协议
        相关产品与服务
        容器镜像服务
        容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档