Myarticle文章系统存在严重漏洞
本文作者:angel
文章性质:原创
发布日期:2004-04-02
前言

  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');
}
……
……
$article=$DB_site->query_first("SELECT $table_article.*,$table_page.* FROM $table_article
LEFT JOIN $table_page USING (articleid)
WHERE $table_article.articleid=$aid and $table_page.pagenum=$page");


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

解决办法:
  检查用户输入的代码。比如检查提交的数据是否为数字类型。将以下代码:

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


  改为:

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


后记:
  由于是在网吧用下机前的15分钟看的源代码。难免有遗漏、疏忽的地方。有兴趣的朋友可以继续分析。有结果请第一时间告诉我,因为我也用myarticle。谢谢。
 
打印这篇文章】【关闭该窗口
Copyright © 2004 Security Angel Team [S4T] All Rights Reserved.