xfocus logo xfocus title
首页 焦点原创 安全文摘 安全工具 安全漏洞 焦点项目 焦点论坛 关于我们
English Version

PostNuke 存在认证安全问题


发布时间:2001-10-15
更新时间:2001-10-15
严重程度:
威胁程度:读取受限文件
错误类型:访问验证错误
利用方式:服务器模式

受影响系统
PostNuke version 0.62
PostNuke version 0.63
PostNuke version 0.64
PHPNuke version 5.2
详细描述
Postnuke(https://sourceforge.net/projects/post-nuke/)是PHPNuke的类似
程序,是由PHP写的MYSQL后端支持的内容管理系统,其中存在一个安全漏洞可以
导致攻击者在知道用户名后不用密码登陆。

如果攻击者知道用户名和用户的userid的话,就可以不通过密码登陆,而用户名和
userids可以通过成员列表获得,问题存在与article.php和mainfile2.php中:

if ($save) {
    cookiedecode($user);
    mysql_query("update $pntable[users] set umode='$mode', uorder='$order', thold='$thold' where uid='$cookie[0]'");
    getusrinfo($user);
    $info = base64_encode("$userinfo[uid]:$userinfo[uname]:$userinfo[pass]:$userinfo[storynum]:$userinfo[umode]:$userinfo[uorder]:$userinfo[thold]:$userinfo[noscore]");
    setcookie("user","$info",time()+$cookieusrtime);
}



function getusrinfo($user) {
    global $userinfo, $pntable;
    $user2 = base64_decode($user);
    $user3 = explode(":", $user2);
    $result = mysql_query("select uid, name, uname, email, femail, url, user_avatar, user_icq, user_occ, user_from, user_intrest, user_sig, user_viewemail, user_theme, user_aim, user_yim, user_msnm, pass, storynum, umode, uorder, thold, noscore, bio, ublockon, ublock, theme, commentmax, timezone_offset from $pntable[users] where uname='$user3[1]' and pass='$user3[2]'");
    if(mysql_num_rows($result)==1) {
        $userinfo = mysql_fetch_array($result);
    } else {
        echo "<font class=\"pn-title\">"._MPROBLEM."</font><br>";
    }
    return $userinfo;
}

中。

测试代码
如果攻击者请求如下URL:

article.php?save=1&
sid=20& [any sid will do..]
cookieusrtime=160000& [to get a decent expire-date on the cookie]
user=USERID:USERNAME:' or uname='USERNAME [base64_encoded]

可以导致不用密码登陆。

解决方案
修改article.php:

if (($save) && (is_user($user))) {
    cookiedecode($user);
    mysql_query("update $pntable[users] set umode='$mode', uorder='$order', thold='$thold' where uid='$cookie[0]'");
    getusrinfo($user);
    $info = base64_encode("$userinfo[uid]:$userinfo[uname]:$userinfo[pass]:$userinfo[storynum]:$userinfo[umode]:$userinfo[uorder]:$userinfo[thold]:$userinfo[noscore]");
    setcookie("user","$info",time()+$cookieusrtime);
}

或者下载新的版本:

https://sourceforge.net/project/showfiles.php?group_id=27927

相关信息
lists at skjegstad.com
参考:http://www.securiteam.com/unixfocus/6Q00B0U2UG.html