荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: 朱雀.bbs@wusetu.cn (睡觉§暗黑§魔兽§凤凰涅磐不加人), 信区: InstallBBS
标 题: ytht代码 web精华区权限检查漏洞
发信站: 五色土BBS (Sun Jan 2 03:37:44 2005)
转信站: SZU!news.szu.edu.cn!news.happynet.org!WuSeTu
原描述 by chutium@zzu(这个猪头还用这个bug跑到我们站大肆偷窥了一下):
这个本来是我没有权限进去看的封闭俱乐部精华区,但是以前的ytht代码有bug,注意
/groups/GROUP_C//BMClub 这里是两个 // ,如果是一个/ 就进不去了
比如用这个地址
http://wusetu.cn/wusetu.cn/bbs0an?path=/groups/GROUP_C/
就啥隐藏版面的精华区都能给guest我看到并访问了:)
分析产生原因:
ytht系统精华区采用两种不同的机制来判断目录权限,对于版面精华区,检查对应的版面
权限,来设置精华区,对于其他非版面目录,则仅判断是否为hide目录.
其判断精华区目录权限时,首先检查是否为版面目录.如判断为非版面目录,则不进行版
面权限判断.
漏洞产生于版面目录检查过程中.因为浏览器中传递的/ 与 // 甚至是///////相等或者
相似,但目录判断函数在处理/与//或者////过程中存在漏洞.导致利用特殊手段可欺骗系统
,使版面根目录跳过权限判断函数,从而达到越权观看精华区的目的
解决方案:
1.过虑畸形路径,在nju09/bbs0an.c内添加路径过虑函数
bbs0an_main()
{
FILE *fp;
int index = 0;
//int visit[2];
char *ptr, papath[PATHLEN], path[PATHLEN], names[PATHLEN],
file[80], buf[PATHLEN], title[256] = " ";
char *board;
html_header(1);
changemode(DIGEST);
check_msg();
printf("<script src=/function.js></script>\n");
printf("<body topmargin=0><center>\n");
strsncpy(path, getparm("path"), PATHLEN - 1);
if (strstr(path, ".."))
http_fatal("此目录不存在");
if (strstr(path, "//"))
http_fatal("此目录不存在");
snprintf(names, PATHLEN, "0Announce%s/.Names", path);
strcpy(papath, path);
ptr = strrchr(papath, '/');
...........
此方法可过虑所有//,///,////等非法格式,效果比较明显,但可能会影响正常精华区浏
览
方法2:更改目录判断函数
在 libythtbbs/announce.c下getbfroma函数更改
添加非法字符过虑
char *
getbfroma(char *path)
{
static char board[30];
char *ptr;
if (*path == '/')
path++;
if (!strncmp(path, "0Announce/", 10))
path += 10;
if (strncmp(path, "groups/GROUP_", 13))
return "";
ptr = strchr(path + 13, '/');
if (!ptr)
return "";
while (1)
{
if (strncmp(ptr+1, "/", 1) == 0 )
ptr++;
else
break;
}
strsncpy(board, ptr + 1, sizeof (board));
ptr = strchr(board, '/');
if (ptr)
*ptr = 0;
return board;
}
--
★经专家考证:本贴为水贴,浪费您的时间,本人深感抱歉
★经专家考证:本人曾经是水车,发表水文无数,浪费硬盘空间.本人深感抱歉
★经本人考证:以上两条推论成立,您能抽空观看这篇水贴,本人深感谢意
※ 来源:.五色土BBS wusetu.cn.[FROM: 202.205.90.220]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店