测试 chroot 环境中的权限提升漏洞

信息安全 linux 开发
2021-09-04 23:55:28

我正在为一组用户实现的 chroot 监狱的当前实现中寻找漏洞。有什么我可以在这里做得更好的吗?

我使用了以下软件包: RHEL6 openSSH jailkit

用户运行标准 shell,而不是 jailkit 特定的 shell,但我配置了 openSSH 以通过 MatchGroup 指令启动用户 chroot。

仅启用对此服务器的 ssh 访问。

我使用 jailkit 来构建监狱本身并解决所需的库依赖关系。

我使用所有必需文件的副本而不是硬链接来构建监狱。

每个用户都有自己的监狱,监狱的挂载点是挂载 nosuid。

用户不需要任何需要 SUID 的东西,所以我注意在用户的监狱中删除所有此类 SUID 位,这与挂载上的 nosuid 标志无关紧要。

用户主目录之外的所有文件都是 root 拥有的。

以下是我为监狱中的用户提供的命令、路径和设备的完整列表。很标准的东西:

/dev/random /dev/urandom /dev/null /bin/vi /bin/env /usr/bin/which /bin/hostname /usr/bin/id /usr/bin/file /usr/share/misc/magic /lib/libnsl.so.1 /lib64/libnsl.so.1 /lib/libnss*.so.2 /lib64/libnss*.so.2 /etc/nsswitch.conf /etc/ld.so.conf /bin /sh /bin/bash /bin/ksh /bin/ls /bin/cat /bin/chmod /bin/mkdir /bin/cp /bin/cpio /bin/date /bin/dd /bin/echo /bin/egrep /bin/false /bin/fgrep /bin/grep /bin/gunzip /bin/gzip /bin/ln /bin/ls /bin/mkdir /bin/mktemp /bin/more /bin/mv /bin/pwd /bin /rm /bin/rmdir /bin/sed /bin/sh /bin/sleep /bin/sync /bin/tar /bin/touch /bin/true /bin/uncompress /bin/zcat /etc/motd /etc/issue /etc/bash.bashrc /etc/bashrc /etc/profile /usr/lib/locale/en_US.utf8 /usr/bin/awk /usr/bin/bzip2 /usr/bin/bunzip2 /usr/bin/ldd /usr/bin/less /usr/bin/clear /usr/bin/cut /usr/bin/du / usr/bin/find /usr/bin/head /usr/bin/less /usr/bin/md5sum /usr/bin/nice /usr/bin/sort /usr/bin/tac /usr/bin/tail /usr/ bin/tr /usr/bin/sort /usr/bin/wc /usr/bin/watch /usr/bin/whoami /usr/bin/mc /usr/bin/mcedit /usr/bin/mcview /usr/share/ mc /etc/terminfo /usr/share/terminfo /usr/bin/joe /usr/bin/nano /usr/bin/vi /usr/bin/vim /etc/vimrc /etc/joe /usr/share/vim

更复杂的是,我在被监禁的用户主目录中公开了一个自动挂载,它以 root 身份挂载远程 FUSE/sshfs 文件系统,具有以下选项:ro、noexec、nodev、nosuid、nonempty、noatime、follow_symlinks、allow_other、auto_cache、max_read= 65536
每个用户都将自己的自动挂载条目硬编码到被监禁的用户家中。

我已经编译了所有我能找到的旨在突破 chroot 并故意将它们放入监狱的漏洞。如果不从监狱挂载中删除“nosuid”指令,将文件拥有为 root,并在其中一个上设置 SUID 位,我就无法突破。

还有什么我想念的吗?

1个回答

bash 可以建立 tcp 连接,你不应该忘记检查你的防火墙。也许您想删除来自用户的所有流量,iptables -A OUTPUT -m owner --uid-owner youruser -j DROP但这不应该取代您的防火墙。

如果用户能够打开连接,他可以扫描网络并利用易受攻击的服务来破解监狱或破坏服务器。