论坛: 黑客进阶 标题: Myarticle文章系统存在严重漏洞 复制本贴地址    
作者: cck123 [cck123]    论坛用户   登录
本文作者: angel
文章出处: 安全天使
发布日期: 2003-11-04
前言
  phparticle恐怕是最好最爽的PHP文章管理系统了,但毕竟是商业程序。虽然我有这套程序。但我没有用。还是尊重作者吧。没有钱就老老实实用Myarticle了,Myarticle是免费用户的首选。后台管理功能强大,前台简洁清爽,速度快。作为一个专业的站点最适合不过了。个人认为比夜猫的好。所以我一直用。作为一个安全站点。使用的程序有漏洞是可悲的,被该漏洞黑了是可怜的。再完美的程序也有出状况的时候。估计Myarticle也是。就从我做起,分析一下源代码,结果发现两个漏洞。

漏洞一

涉及版本:
  Myarticle 0.02以下

描述:
  由于后台管理入口验证代码存在严重缺陷。导致任何用户可以只在用户名里输入任何字符可以进入后台。

详细:
  在admin/admin_global.inc.php文件里的151行的代码是这样写的:

function verifyUser($name, $pwd) {
global $DB_site,$table_user;
$usrpwd = $DB_site->query_first("select password FROM $table_user where username = '$name'");
return $pwd==md5($usrpwd);
}

  看出问题了吧?因为输入的是一个没有的用户名,所以它的密码肯定是为空的,自然就等于你输入的密码了。自然登陆了。

解决办法:
  将上面的代码改为:

function verifyUser($name, $pwd) {
global $DB_site,$table_user;
$usrpwd = $DB_site->query_first("select password FROM $table_user where username = '$name'");
$num=mysql_affected_rows($DB_site->link_id);
if ($num) {
if ($pwd==md5($usrpwd)) return true;
}
return false;
}

  其实这个漏洞好象0.03也存在。可是测试了网上几个0.03的站点。有些可以。有些不可以。在本地调试0.03的就不能利用。不知何故?哪位高手能指点一二?感激不尽。

漏洞二

涉及版本:
  目前所有版本

描述:
   由于category.php、article.php、print.php……多个文件对用户提交的变量过滤不足。导致非法用户可以进行SQL Injection攻击。

详细:
  这几个文件的相关代码是这样写的(这几个文件的代码不一定相同):

if (!isset($aid)){
showerror('error_articleid');
}

  没有检查变量用户提交的变量。不过在PHP里注入有点困难。因为MYSQL4以下的版本是不支持子语句的,而且新版本的php.ini里的 magic_quotes_gpc 选项默认是 On 的。当 magic_quotes_gpc 打开时,所有的 ' (单引号), " (双引号), \ (反斜线) and 空字符会自动转为含有反斜线的溢出字符。这样我们就无法注入了,所以注入语句就不说了,大家自己看看相关MYSQL语句再碰碰运气自己尝试添加用户吧。

解决办法:
  检查用户输入的代码。比如检查提交的数据是否为数字类型。在以上代码后面加入以下代码检查变量:

$idid=str_replace(" ","",${"aid"});
if (is_numeric($idid)==0 || $idid=="")
{
print "非法参数";
exit();


后记:
  由于是在网吧用下机前的15分钟看的源代码。难免有遗漏、疏忽的地方。有兴趣的朋友可以继续分析。有结果请第一时间告诉我,因为我也用myarticle。谢谢。



地主 发表时间: 11/09 00:44

论坛: 黑客进阶

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号