漏洞概要 关注数(2) 关注此漏洞
缺陷编号: WooYun-2011-03385
漏洞标题: 阿西网站推广系统v4.02cookie欺骗漏洞
相关厂商: 阿西网站推广系统
漏洞作者: 小马
提交时间: 2011-11-22 20:13
公开时间: 2011-11-22 20:27
漏洞类型: 设计缺陷/逻辑错误
危害等级: 低
自评Rank: 2
漏洞状态: 未联系到厂商或者厂商积极忽略
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 第三方不可信程序 安全意识不足 php源码分析 阿西网站推广系统 cookie欺骗
漏洞详情
披露状态:
2011-11-22: 积极联系厂商并且等待厂商认领中,细节不对外公开
2011-11-22: 厂商已经主动忽略漏洞,细节向公众公开
简要描述:
网上出现的都是阿西网站推广系统的SQL漏洞,对于cookie欺骗的漏洞貌似没人发过! 阿西网站推广系统v4.02cookie欺骗漏洞,你懂的————
详细说明:
先看axphp.php的源码
------------------------------------------------
<tr>
<td>账号:</td>
<td><form method="post" action="login.php"> // 提交处理文件login.php
<input tabindex="1" type="text" name="adminname" class="texta" onkeyup="value=value.replace(/[^\w\.\/]/ig,'')" /></td>
<td rowspan="2"><input type="submit" value="登录" class="submit" /></td>
</tr>
<tr>
<td>密码:</td>
<td><input tabindex="2" type="password" name="adminpass" class="textb" /></td></form>
login.php 代码
-------------------------------------------------
require '../config.php';
$adminname = $_POST['adminname'];
$adminpass = $_POST['adminpass'];
$adminpass .= "A**.**.**.**";
$adminpass = md5($adminpass);
$adminsql = "select * from axphp_admin where adminname='$adminname' and adminpass='$adminpass'";
$adminery = mysql_query($adminsql, $config);
$adminnum = mysql_num_rows($adminery);
if ($adminnum == "1") { //如果用户和密码正确设置cookie
setcookie("admin", "Y", time() + 3600, '/'); //设置cookie值 admin=‘Y’
setcookie("admin_name", $adminname, time() + 3600, '/'); //设置cookie值 admin_name的值
header("location:axadmin.php"); //如果用户和密码正确就跳到后台管理页面
} else {
header("location:axphp.php");
}
再去看下axadmin.php的代码
-----------------------------------------------
<?php
require 'check.php'; //cookie验证文件 我们跟下这个。
require '../template/axadmin/head.php';
require '../template/axadmin/banner.php';
require '../template/axadmin/main.php';
require '../template/axadmin/bottom.php'
?>
check.php代码
-------------------------------------
<?php
error_reporting(0);
isset($_COOKIE['admin'])?$check=$_COOKIE['admin']:$check=null;
//我们只要不让$_COOKIE['admin']这个值不为空就可以
isset($_COOKIE['admin_name'])?$admin_user=$_COOKIE['admin_name']:$user=null;
//这里也是一样不让他不为空。
if($check==null){header("Location:../index.php");exit;}
?>
漏洞证明:
修复方案:
后台增加cookie验证
版权声明:转载请注明来源 小马@乌云
漏洞回应
厂商回应:
未能联系到厂商或者厂商积极拒绝
漏洞Rank:10 (WooYun评价)
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值