当前位置: 首页 > 后端技术 > PHP

奇博CMSHMAC+Cookie注入漏洞分析

时间:2023-03-29 21:07:20 PHP

前言首先声明这不是0day。具体的奇博版本我就不说了。应该是有人发现了这个漏洞,后来发出来的。这篇文章是杜兴日常工作的记录。文章写于2014年国庆节,尚未公开。当时我对当时的奇博系列进行了完整的分析和代码审计,漏洞很多,所以挑了几个比较有意思的发出来~。一、HMAC简介HMAC是一种与密钥相关的哈希运算消息认证码(Hash-basedMessageAuthenticationCode)。HMAC操作使用散列算法,将密钥和消息作为输入,并生成消息摘要作为输出。在Google上详细介绍自己。https://en.wikipedia.org/wiki...2.奇博CMSHMAC分析,见文件inc/function.inc.php中mymd5函数/***加密解密函数**/functionmymd5($string,$action="EN",$rand=''){//字符串加解密global$webdb;$secret_string=$webdb[mymd5].$rand.'5*j,.^&;?.%#@!';//绝密字符串,可任意设置if(!is_string($string)){$string=strval($string);}if($string==="")return"";if($action=="EN")$md5code=substr(md5($string),8,10);else{$md5code=substr($string,-10);$string=substr($string,0,strlen($string)-10);}//$key=md5($md5code.$_SERVER["HTTP_USER_AGENT"].$secret_string);$key=md5($md5code.$secret_string);$string=($action=="EN"?$string:base64_decode($string));$len=strlen($key);$code="";for($i=0;$iget_one("SELECT*FROM{$pre}memberdataWHEREuid='$_uid'ANDusername='$_username'");}由上可知$_COOKIE[adminID]的明文形式为uid\tusername\tpassword三个参数之间用tab隔开。然后list($_uid,$_username,$_password)=explode("\t",$detail);然后将结果保存到$_uid、$_username和$_password中,如果参数前后的参数个数不同,那么那个参数就会为空。检查下面的数据库$lfjdb=$db->get_one("SELECT*FROM{$pre}memberdataWHEREuid='$_uid'ANDusername='$_username'");如果我们构造uid="1'#"then查询语句实际上变成SELECT*FROM{$pre}memberdataWHEREuid=1满足条件,前端登录成功,前端登录认证出来.由于COOKIE采用密文交换,我们不用担心单引号被传递的问题。这很棒。当然,这个uid必须存在。一般founderuid基本都是=1,结合上面我们只需要构造一个解密后的COOKIE[adminID]="1'#"就可以了。然后根据暴力分析章节,我们要构造的EncryptData的长度是000~fff范围内的3个,总大小为16^3=4096,相当可观。计算出的hashcode为cdb8c28d5dps:md5(1’#)=a425ef44cdb8c28d5d434b2a1343205e,那么我们只需要枚举base64_encode(000~fff)+cdb8c28d5d即可。最重要的一点是,我们发现在认证和登录的时候传入了$onlineip变量,这可能会导致密钥发生变化。不允许使用暴力。查看代码inc/function.inc.phpif($_SERVER['HTTP_CLIENT_IP']){$onlineip=$_SERVER['HTTP_CLIENT_IP'];}elseif($_SERVER['HTTP_X_FORWARDED_FOR']){}else{}$onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];$onlineip=$_SERVER['REMOTE_ADDR'];那我们直接构造一个固定的HTTP_X_FORWARDED_FOR参数就行了。并且http请求提交登录认证页面,根据返回值进行判断。其实前台是可以直接getshell的,不过不在我们的讨论范围之内。终于完结了。。。如有不足之处,请指点,或留言或联系fobcrackgp@163.com。本文为独行原创文章,首发于某小专题。永久链接:奇博CMS:HMAC+COOkie注入漏洞分析https://www.ifobnn.com/qibocmshmac.html