耳朵音乐CMS 免认证登录

漏洞版本20160723,官方于今天修复了该漏洞。
0x01:漏洞分析
在文件 admin.php 第四行:

变量 $iframe 通过 GET 方式获取值,如果 iframe 的值不在数组 frames 里就定向到 “login.php”。我们以 “config.php” 为例,当传入参数 “?iframe=config” 时将包含文件 “source/admincp/module/config.php”,跟进该文件从第二行可以看到如下代码:

跟进函数 “Administrator”,在 “source/admincp/include/function.php” 第三十九行定义了 “Administrator”:

这段代码通过 cookie 验证登录用户信息,将 “in_adminid”,”in_adminname”,”in_adminpassword”,”in_permission” 拼接在一起 MD5 后与 “in_adminexpire” 的值比较,左右两值相等就通过验证,再通过 “in_permision” 验证该用户是否有本页面权限。在数组 “frames” 中的页面都没有通过数据库验证用户信息,因为 cookie 我们是可控的所以我们很容易绕过它的验证方式。以 “config.php” 为例,先进入 “http://xxx.xxx.xxx.xxx/qwyy/admin.php” (这步我也不知道为什么要这样,直接进入 “http://xxx.xxx.xxx.xxx/qwyy/admin.php?iframe=config”不能成功 QAQ,改了 Refer 也不行):这时候我们没有保存cookie,页面将会跳转到 “login.php”:
1
再次登录 “http://xxx.xxx.xxx.xxx/qwyy/admin.php?iframe=config” 用 burpsuit 截取数据包修改 cookie 为:

截图结果显示我们成功绕过验证并登录到 “config.php”,利用此方法可以登录到 “config.php”,”backup.php”,”index.php”等页面进行文件上传,数据库备份以及其他危险操作:
1
Author:LionEiJonson

发表评论

要发表评论,您必须先登录