首頁 後端開發 php教程 PHP弱類型:WordPress Cookie偽造

PHP弱類型:WordPress Cookie偽造

Aug 10, 2016 am 08:48 AM
cookie curl hash hmac wordpress

1 PHP弱型別

  PHP是弱型別語言,所以變數會因為使用場景的不同自動進行型別轉換。 PHP中用 == 以及 ! = 進行相等判斷時,會自動進行型別轉換,用 === 以及 ! == 進行判斷時不會自動轉換類型。

<span>1</span> <?<span>php
</span><span>2</span><span>$a</span> = 3<span>;
</span><span>3</span><span>$b</span> = '3vic'<span>;
</span><span>4</span><span>var_dump</span>(<span>$a</span> == <span>$b</span>);<span>//</span><span>true</span><span>5</span><span>var_dump</span>(<span>$a</span> != <span>$b</span>);<span>//</span><span>false</span><span>6</span><span>var_dump</span>(<span>$a</span> === <span>$b</span>);<span>//</span><span>true</span><span>7</span><span>var_dump</span>(<span>$a</span> !== <span>$b</span>);<span>//</span><span>false</span><span>8</span> ?>
登入後複製

 說明:在PHP中字串轉換成整數時,如果是數字開頭就會轉換成前面的數字('3vic' -> 3),如果不是數字開頭,那麼就會轉換成0( 'vic' -> 0)

2 WordPress程式碼

  • WordPress 3.8.1 WordPress 3.8.2🜎 Cookie 組成

  客戶端後台只驗證其中的一條Cookie,如下圖

    <span>1</span> <?<span>php
    </span><span>2</span><span>//</span><span> WordPress 3.8.1</span><span>3</span><span>if</span> (<span>$hmac</span> != <span>$hash</span><span>) {}
    </span><span>4</span><span>//</span><span> WordPress 3.8.2</span><span>5</span><span>if</span> ( hash_hmac('md5', <span>$hmac</span>, <span>$key</span>) !== hash_hmac('md5', <span>$hash</span>, <span>$key</span><span>) )  {}
    </span><span>6</span> ?>
    登入後複製
  •   其中Cookie名稱
  • wordpress_bbfa5b726c6b7a9cf3cda9370be391d md5(

    siteurl

    )  其中

    siteurl為WordPress的網址,此處網址為http://www.test.ichunqiu,md5加密後為c47f4a97d0321c1980bb76fc00d1e78f,其部分也可省。 型別使用者名稱過期時間登入成功伺服器端賦予客戶端的hash值<span>對應變數</span><span>$username</span>

    cookies

    admin1433403595cf50f3b50eed94dd0fdc3d3ea2c7bbbwp-includes/pluggable.php  在程式碼所使用的變數中,透過改變客戶端Cookie 的方式可控制的有$username結合PHP Hash
    <span></span><span></span>cf50f3b50eed94dd0fdc3d3ea2c7bbb   程式碼 第543-549行<span></span>
    wordpress_c47f4a97d0321c1980bb76fc00d1e78f=admin|<span>1433403595</span>|cf50f3b50eed94dd0fdc3d3ea2c7bbb; path=/wp-admin; domain=www.test.ichunqiu; HttpOnly
    登入後複製
    使用者名,$expiration 有效期,又因為其中使用者名稱是固定的,因此只有 $expiration<span></span> ,所以我們可以從改變 $expiration <span></span>的方法來改變 $hash<span></span>。
    比較缺陷
      分析WordPress
      有以下幾種可能使

    $hmac == $hash 或真值,

    $hash

    為以字元開頭的字串; 將客戶端的Cookie中

    $hmac 值改為0,然後在if ( $hmac != $hash ) { var_dump($hmac);die();<span>發現印出來</span>$hmac 的結果是string '0'

      而不是
    • 識別為整數呢,代碼如下:<span></span>
      <span>1</span> <?<span>php
      </span><span>2</span><span>$key</span> = wp_hash(<span>$username</span> . <span>$pass_frag</span> . '|' . <span>$expiration</span>, <span>$scheme</span><span>);
      </span><span>3</span><span>$hash</span> = hash_hmac('md5', <span>$username</span> . '|' . <span>$expiration</span>, <span>$key</span><span>);
      </span><span>4</span><span>if</span> ( <span>$hmac</span> != <span>$hash</span><span> ) {
      </span><span>5</span>     do_action('auth_cookie_bad_hash', <span>$cookie_elements</span><span>);
      </span><span>6</span><span>return</span><span>false</span><span>;
      </span><span>7</span> }
      登入後複製
      其中的

    0e156464513131   其中的0e156464513131 會被識別為0乘以10的156464513131方會被識別為0乘以10的156464513131方,全是數字時就會與$hmac<span></span>的值為'0' 時相等,所以我們可以將客戶端的Cookie設定為類似wordpress_c47f4a97d0321c1980bb76fc00d1e78f4a97d0321c1980bb76fc00d1e78fadmin 33403595的位置)的方法來碰撞伺服器端,一旦$hash 的值為0e開頭後面全是數字即可驗證通過。假設碰撞成功,就修改瀏覽器的Cookie,直接存取後台位址,就可以成功登陸後台。 3 測試腳本<span></span>透過改變客戶端Cookie裡過期時間的值,不斷嘗試登入後台,找出可以進入後台的時間點,從而實現Cookie偽造登入後台。

    <span>1</span> <?<span>php
    </span><span>2</span><span>var_dump</span>('0' == '0e156464513131');<span>//</span><span>true</span>
    登入後複製
    說明

    理論上32位的MD5值以0e開頭的大概

    三億分之一

    ,碰撞到可以利用的幾分率。

    5 修復方案<span></span> 〜== = 分別改為 ===! == 或 將比較的兩個變數使用MD5再加密一次。

    <span></span>

    學習筆記:http://ichunqiu.com/course/167

    以上就介紹了PHP弱型:WordPress Cookie偽造,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    AI Hentai Generator

    AI Hentai Generator

    免費產生 AI 無盡。

    熱門文章

    R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
    1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳圖形設置
    1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您聽不到任何人,如何修復音頻
    1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.聊天命令以及如何使用它們
    1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    PHP 與 Flutter 的比較:行動裝置開發的最佳選擇 PHP 與 Flutter 的比較:行動裝置開發的最佳選擇 May 06, 2024 pm 10:45 PM

    PHP和Flutter是行動端開發的流行技術。 Flutter勝在跨平台能力、效能和使用者介面,適合需要高效能、跨平台和自訂UI的應用程式。 PHP則適用於效能較低、不跨平台的伺服器端應用程式。

    wordpress如何修改頁面寬度 wordpress如何修改頁面寬度 Apr 16, 2024 am 01:03 AM

    透過編輯 style.css 文件,您可以輕鬆修改 WordPress 頁面寬度:編輯 style.css 文件,新增 .site-content { max-width: [您的首選寬度]; }。修改 [您的首選寬度] 以設定頁面寬度。儲存變更並清除快取(可選)。

    wordpress文章在哪個資料夾 wordpress文章在哪個資料夾 Apr 16, 2024 am 10:29 AM

    WordPress 文章儲存在 /wp-content/uploads 資料夾中。此資料夾使用子資料夾對不同類型的上傳進行分類,包括按年、月和文章 ID 組織的文章。文章檔案以純文字格式 (.txt) 存儲,檔案名稱通常包含其 ID 和標題。

    wordpress如何做產品頁 wordpress如何做產品頁 Apr 16, 2024 am 12:39 AM

    在WordPress 中建立產品頁面:1. 建立產品(名稱、描述、圖片);2. 自訂頁面範本(新增標題、描述、圖片、按鈕);3. 輸入產品資訊(庫存、尺寸、重量);4 .建立變體(不同顏色、尺寸);5. 設定可見性(公開或隱藏);6. 啟用/停用評論;7.預覽並發布頁面。

    wordpress模板檔案在哪 wordpress模板檔案在哪 Apr 16, 2024 am 11:00 AM

    WordPress 範本檔案位於 /wp-content/themes/[主題名稱]/ 目錄。它們用於決定網站的外觀和功能,包括頁首(header.php)、頁尾(footer.php)、主模板(index.php)、單篇文章(single.php)、頁(page.php)、檔案(archive.php)、類別(category.php)、標籤(tag.php)、搜尋(search.php)和404 錯誤頁面(404.php)。透過編輯和修改這些文件,可以自訂 WordPress 網站的外

    wordpress如何搜尋作者 wordpress如何搜尋作者 Apr 16, 2024 am 01:18 AM

    在 WordPress 中搜尋作者:1. 登入管理面板後,導覽至“文章”或“頁面”,使用搜尋欄輸入作者姓名,在“篩選器”中選擇“作者”。 2. 其他技巧:使用通配符擴大搜尋範圍,使用運算子組合條件,或輸入作者 ID 以搜尋文章。

    wordpress用什麼語言開發 wordpress用什麼語言開發 Apr 16, 2024 am 12:03 AM

    WordPress 採用 PHP 語言開發,作為其核心程式語言,用於處理資料庫互動、表單處理、動態內容產生和使用者請求。 PHP 被選擇的原因包括跨平台相容性、易於學習、活躍社群以及豐富的函式庫和框架。除了 PHP,WordPress 還使用 HTML、CSS、JavaScript、SQL 等語言來增強其功能。

    wordpress哪個版本穩定 wordpress哪個版本穩定 Apr 16, 2024 am 10:54 AM

    最穩定的 WordPress 版本是最新版本,因為它包含最新的安全性修補程式、增強效能並引入新功能和改進。為了更新到最新版本,請登入 WordPress 儀表板,前往「更新」頁面並點擊「立即更新」。

    See all articles