LB5000 存在Cookie 变量未过滤漏洞发布时间:2001-10-30 更新时间:2001-10-30 严重程度:高 威胁程度:普通用户访问权限 错误类型:输入验证错误 利用方式:服务器模式 受影响系统 LB5000II v1029以下详细描述 <http://www.leoboard.com/> LB5000 是在国内一个非常流行的WEB方式的BBS系统。 论坛程序存在严重漏洞,任何人都可以利用此漏洞获得BBS系统的管理员权限,结合系统环境,可能进一步获得服务器的shell访问权限,甚至是主机的管理员权限。 问题存在于File:Search.cgi ---[L.59-60]--- $inmembername = $query->cookie("amembernamecookie"); $filename = $inmembername; --- As we can see, $inmembername is the get for cookie 'amembernamecookie' ---[L.71-]--- $searchfilename = "$lbdir" . "search/$filename"; --- ---[L.134-140]--- open (SEARCH, ">$searchfilename") or die "不能够保存到 search 目录,请设置此目录为 777 !"; print SEARCH "$CUR_TIME\n"; print SEARCH "$SEARCH_STRING\n"; print SEARCH "$TYPE_OF_SEARCH\n"; print SEARCH "$REFINE_SEARCH\n"; print SEARCH "$FORUMS_TO_SEARCH\n"; close (SEARCH); --- --- Well, it sets the file, runs it through the filter and opens it. -> $cookie("amembernamecookie");, remember?! ;) 在此段代码中,变量$filename也就是从Cookie所得的amembernamecookie没有对".."进行过滤,攻击者可以通过伪造cookie("amembernamecookie")在系统上任何可写的目录中创建或修改文件,而且写入文件的变量也未做任何过滤,所以文件的内容也可由攻击者任意操纵,借此可以获得bbs的管理员权限。 在UNIX类系统中,如果系统安装了PHP,可以通过BBS提供的上传文件功能,上传一个执行shell的PHP脚本,从而获得主机的shell访问权限。 在Windows系统中,鉴于Windows系统执行Perl CGI的特殊机制,可以直接用些漏洞生成一个合法的PERL脚本,即可直接获得在Windows主机上执行命令的能力。 测试代码 鉴于LB5000的流行性,攻击方法暂不公布! 解决方案 临时解决办法 ------------ 1.Cookie的问题临时解决办法 可以在第60行$filename = $inmembername;之前,加下下面两行 $inmembername =~ s/\///g; $inmembername =~ s/\.\.//g; 2.建议对写入文件的变量进行过滤 厂商信息 -------- 在2001年10月29日通知了厂商 厂商主页: http://www.leoboard.com 相关信息 发 现 者: By NetGuard Security Team Chen Jun (chenjun@netguard.com.cn) 主 页: http://www.netguard.com.cn |