freeBuf
主站

分类

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

特色

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

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Nginx+Docker+Goby快速构建安全扫描环境
FreeBuf_329837 2021-07-13 17:43:14 237900

Goby是国内优秀的漏洞扫描器,但是如果构建分布式扫描环境难度比较大,而且,goby本身使用http通信,数据明文传输,不利于隐藏自身。这里主要通过nginx反向代理来对流量进行加密,同时使用docker实现goby环境的快速搭建。

goby分为client端和server端,server端程序使用Golang编写,放在golib文件夹中。client和server通过restful的形式进行数据交互,内容不加密。结合上述特点,我们如果需要构建分布式扫描环境,可以有以下思路:

使用https协议加密流量

将server端封装成docker

实现goby api的sdk,批量开启扫描

本篇文章介绍前两点内容。

配置

nginx配置

我们这里使用nginx的官方docker镜像,下载地址: https://github.com/nginxinc/docker-nginx/tree/master/stable/alpine

下载后的文件夹,新建一个conf.d文件,内容如下:

server {
    listen       80;
    listen  [::]:80;

    listen 443 ssl default_server;
    listen [::]:443 default_server;

    ssl_certificate /etc/nginx/conf.d/domain.crt;
    ssl_certificate_key /etc/nginx/conf.d/domain.key;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        proxy_pass http://127.0.0.1:8361;
    }
}

这里重点是生成一个自签名证书,流程如下:

RSA密钥生成(设置一个密码)
openssl genrsa -des3 -out domain_pass.key 1024

拷贝一个不需要输入密码的密钥文件
openssl rsa -in domain_pass.key -out domain.key

生成一个证书请求
openssl req -new -key domain.key -out domain.csr

对证书签名
openssl x509 -req -days 365 -in domain.csr -signkey domain.key -out domain.crt

最后将生成的文件放在nginx的conf.d文件夹中,nginx的配置工作就完成了。

Goby配置

Docker中需要保持Goby的即时更新,因此需要从github上获取最新版本的docker,这里通过调用github的api来实现,代码如下:

# 40-goby-deploy.sh

echo 'Downloading goby..'
mkdir /app
goby_url=`curl -s https://api.github.com/repos/gobysec/Goby/releases/latest | grep browser_download_url | grep linux | cut -d '"' -f 4`
wget $goby_url -O /app/goby.zip
unzip /app/goby.zip -d /app/
echo 'Goby Download success'
goby_dir=`ls /app/ | grep goby-linux-`
mv /app/$goby_dir /app/goby
echo 'Goby Download success'

代码下载最新的goby,并移动到/app目录下,同时,将文件夹重命名为goby

接下来配置Goby的后台启动,脚本如下:

# start-goby.sh

echo "Starting Goby Service"
nohup /app/goby/golib/goby-cmd-linux -mode api -apiauth goby:goby > /app/goby.log 2>&1 &
echo "Goby Done"

Docker打包

完成了上述的准备工作,我们就可以着手写自己的Dockerfile。这里就在原有Dockerfile的基础上修改:

COPY 40-goby-deploy.sh /
COPY start-goby.sh /

RUN /bin/sh /40-goby-deploy.sh # 在打包阶段下载最新的goby
ENTRYPOINT ["/docker-entrypoint.sh"] # 
COPY conf.d /etc/nginx/conf.d/

EXPOSE 80 443

STOPSIGNAL SIGQUIT

CMD ["nginx", "-g", "daemon off;"]

最后,在入口脚本docker-entrypoint.sh中添加:

/bin/sh "/start-goby.sh"

运行

构建镜像:docker build -t gobysec:v1 .

运行镜像:docker run -it -d -p 80:80 -p 443:443 gobysec:v1

使用

1. Goby的官方client需要使用http进行通信,如图:

CleanShot 2021-07-13 at 17.35.23.png

2. 可以通过GobyAPI来进行分布式调度,目前可以同时调度多个goby后台程序扫描。相关内容下一期讨论。

# 渗透测试 # web安全 # Docker
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 FreeBuf_329837 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
大眼喵的漏洞日常
FreeBuf_329837 LV.1
这家伙太懒了,还未填写个人描述!
  • 1 文章数
  • 2 关注者
文章目录