| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | 

您现在的位置: 中国X黑客小组 >> 技术文章 >> 新闻中心 >> 漏洞公告 >> 文章正文 用户登录 新用户注册
  夜猫系列[留言薄+文章系统+ymCMS]漏洞预警         ★★★ 【字体:
夜猫系列[留言薄+文章系统+ymCMS]漏洞预警
作者:未知    文章来源:CnXHacker.Net    点击数:    更新时间:2006-2-25    

漏洞发现者:xY7[B.C.T] 
漏洞组织:Bug.Center.Team-漏洞预警中心小组 
程序名称:Yemao Studio系列产品 
程序版本:ymGuestBook Version 2.x ,ymArticleFree Version 2.1.x , ymCMS v3.0.1 Free  
程序厂商:http://www.yemao.net/ 
漏洞危害:中高  

一,夜猫留言薄漏洞详情: 

1,跨站漏洞: 
漏洞页面:post.php,用户提交留言处存在跨站攻击安全隐患,漏洞代码入下: 
<? 
if ($_POST[’username’] == "" || $_POST[’pagetext’] == ""): 
echo "<a href=javascript:history.back(1)>昵称和留言内容不能为空, 点击这里返回.</a>\n"; 
else: 
post($_POST[’iconid’],$_POST[’username’],$_POST[’touser’],$_POST[’sex’],$_POST[’comefrom’],$_POST[’email’],$_POST[’qq’],$_POST[’homepage’],$_POST[’pagetext’],$_SERVER[’HTTP_USER_AGENT’],$_SERVER[’REMOTE_ADDR’]); 
endif;?> 
程序先判断用户名和留言内容是否为空,如不为空则通过post()函数进行提交,这里我们看到程序没有对我们提交的变量做任何过滤就直接引用了,那post()函数是怎么写的呢,看代码function.php: 
function post($iconid,$username,$touser,$sex,$comefrom,$email,$qq,$homepage,$pagetext,$useros,$ipaddress){ 
global $dbname,$ymcity_gb_table,$ymcity_icon_table; 

$dateline = time(); 

if ($iconid > "0"): 
$iconsql = "SELECT iconpath FROM $ymcity_icon_table WHERE iconid=’$iconid’"; 
$iconresult = mysql_db_query($dbname, $iconsql); 
$iconrow = mysql_fetch_array($iconresult); 
$icon = $iconrow[’iconpath’]; 
else: 
$icon = ""; 
endif; 

$sql = "INSERT INTO $ymcity_gb_table (icon,username,touser,sex,comefrom,email,qq,homepage,dateline,pagetext,useros,ipaddress) VALUES (’$icon’,’$username’,’$touser’,’$sex’,’$comefrom’,’$email’,’$qq’,’$homepage’,’$dateline’,’$pagetext’,’$useros’,’$ipaddress’)"; 
mysql_db_query($dbname,$sql) or die ("留言发表失败!"); 
原来post()函数并没有过滤字符而是直接接受我们提交的变量,然后就通过定义的SQL语句插入到数据库里了,这样当从数据库里读出留言内容的时候我们的代码就可以被浏览器解析到,漏洞由此产生了! 
漏洞利用:直接在留言处提交<script>alert(‘Test by xY7[BCT]’)</script>,主页即可弹出提示框。 

2注入安全隐患 
漏洞代码:reply.php 
if ($_POST[’gbid’] == "" || $_POST[’password’] == ""): 
echo "<a href=javascript:history.back(1)>密码不能为空, 点击这里返回.</a>\n"; 
else: 
reply($_POST[’gbid’],$_POST[’password’],$_POST[’replyiconid’],$_POST[’replyname’],$_POST[’pagetext’]); 
endif;?> 
首先判断要回复的留言编号和密码是否为空,二者缺一不可,然后就用reply()函数进行提交,这里没有过滤$gbid这个变量. 

利用条件:magic_quotes_gpc=OFF 时,提交http://xxx.con/ymguestbook/reply.php?gbid=1&#39; and 1=1 or 2 /* 类似URL进行测试。 
当magic_quotes_gpc=ON时,改变$gbid值类型,提交:http://xxx.con/ymguestbook/reply.php?gbid=a 类似URL,在服务器disliay_errors=ON时,有时可暴出网站绝对路径。 

二,夜猫文章系统漏洞详情: 

1,跨站漏洞: 
漏洞页面:register.php 
漏洞代码: 
<?register($setting[user_reg_usergroupid],$_POST[username],$_POST[password],$_POST[email],$_POST[sex],$_POST[birthday],$_POST[homepage],$_POST[icq],$_POST[oicq],$_POST[race],$_POST[signature],$_POST[ipaddress],$_POST[realname],$_POST[realname1],$_POST[organization],$_POST[organization1],$_POST[country],$_POST[country1],$_POST[province],$_POST[province1],$_POST[city],$_POST[city1],$_POST[address],$_POST[address1],$_POST[zip],$_POST[phone],$_POST[fax],$_POST[idnumber],$_POST[referrerid]); 
?>用一个专门的函数register()来进行提交,那我们就看看这个注册函数怎么定义的,打开function.php看到如下代码(代码太长这里只给出关键的语句):$sql = "INSERT INTO $ymcity_user_table (usergroupid,username,password,email,sex,birthday,homepage,icq,oicq,race,experience,money,signature,joindate,ipaddress,realname,realname1,organization,organization1,country,country1,province,province1,city,city1,address,address1,zip,phone,fax,idnumber,referrerid) VALUES (’$usergroupid’,’$username’,’$password’,’$email’,’$sex’,’$birthday’,’$homepage’,’$icq’,’$oicq’,’$race’,’$experience’,’$money’,’$signature’,’$timenow’,’$ipaddress’,’$realname’,’$realname1’,’$organization’,’$organization1’,’$country’,’$country1’,’$province’,’$province1’,’$city’,’$city1’,’$address’,’$address1’,’$zip’,’$phone’,’$fax’,’$idnumber’,’$referrerid’)"; 
mysql_db_query($dbname,$sql); 
漏洞利用:在个人网站里输入:<script>alert(document.cookie)</script>即可弹出当前用户cookie。 

2注入漏洞:原理跟留言薄相似,代码也相似,当magic_quotes_gpc=OFF ,可以通过闭合单引号后加注释符进行测试。 

三,ymCMS跨站漏洞: 

由于该CMS加密了全部的后台文件以及全部的函数文件,所以不能有效的发掘更多的安全漏洞,但是注册页面register.php还是存在跨站漏洞 
漏洞代码: 

<?if(isset($_POST[’action’]) && $_POST[’action’] == "adduser"){ 

$birthday = $_POST[’b_year’]."-".$_POST[’b_month’]."-".$_POST[’b_day’]; 
$success = register($setting[’user_reg_usergroupid’], $_POST[’username’], $_POST[’password’], $_POST[’email’], $_POST[’question’], $_POST[’answer’], $_POST[’sex’], $birthday, $_POST[’homepage’], $_POST[’icq’], $_POST[’oicq’], $_POST[’race’], $_POST[’signature’], ’0’, $_POST[’style’], $_POST[’ipaddress’], $_POST[’realname’], $_POST[’realname1’], $_POST[’organization’], $_POST[’organization1’], $_POST[’country’], $_POST[’country1’], $_POST[’province’], $_POST[’province1’], $_POST[’city’], $_POST[’city1’], $_POST[’address’], $_POST[’address1’], $_POST[’zip’], $_POST[’phone’], $_POST[’fax’], $_POST[’idnumber’], $_POST[’referrerid’]);?>通过函数register()进行提交,这里没有过滤用户输入的信息。 

漏洞利用:在注册页面邮箱地址栏输入:test@163.com<script>alert(document.cookie)</script>,当浏览该注册资料时,即可谈出当前用户cookies。 

漏洞修补: 
1,用htmlspecialchars()函数来过滤用户输入的文本例如夜猫留言薄这样过滤htmlspecialchars($pagetext) 
2,用类似代码将各类数字型变量强制整形化防止注入及暴路径: 
<?if(!is_number($id)) 
$id=intval($id); 
?> 
3,用addslashes()函数过滤字符型变量。 

个人建议,夜猫系列是一组没有安全防护意识的程序,在没有完全开源的情况下出现如此多的安全隐患,如果以后开源,将会给使用者带来更大的损失,建议不使用此类程序。

文章录入:IceRiver    责任编辑:IceRiver 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    熊猫卫士系列杀毒软件 有不安
    中国反流氓软件联盟系列诉讼
    新手也能对付病毒系列之告别
    为你支招 预防“熊猫烧香”
    系统安全基础知识系列之RUND
    系统安全系列之ASP漏洞全接触
    系统安全系列之加密与解密的
    安全基础系列之状态检测工作
    反钓系列之:继续曝光钓鱼攻
    MySQL查询优化技术系列讲座之
      网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    Powered by ICE RIVER - STUDIO
    » CnXHacker.CoM   © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved.