.user.ini檔案構成的PHP後門

巴扎黑
發布: 2016-11-11 14:05:27
原創
1898 人瀏覽過

0x00 背景 
這個估計很多同學看了不屑,認為是爛大街的東西了: 

.htaccess文件構成的PHP後門 

那麼我來個新的吧:.user.ini。它比.htaccess用的更廣,不管是nginx/apache/IIS,只要是以fastcgi運行的php都可以用這個方法。我的nginx伺服器全部是fpm/fastcgi,我的IIS php5.3以上的全部用的fastcgi/cgi,我win下的apache上也用的fcgi,可謂很廣,不像.htaccess有局限性。 

0x01 .user.ini 
那麼什麼是.user.ini? 

這得從php.ini說起了。 php.ini是php預設的設定文件,其中包含了許多php的配置,這些配置中,又分為幾種:PHP_INI_SYSTEM、PHP_INI_PERDIR、PHP_INI_ALL、PHP_INI_USER。 在這裡可以查看:http://php.net/manual/zh/ini.list.php 這幾種模式有什麼不同?看看官方的解釋: 


enter image description here 

其中就提到了,模式為PHP_INI_USER的配置項,可以在ini_set()函數中設定、註冊表中設置,再就是.user.ini中設定。 這裡就提到了.user.ini,那麼這是個什麼設定檔?那麼官方文件在這裡又解釋了: 

除了主php.ini 之外,PHP 還會在每個目錄下掃描INI 文件,從被執行的PHP 文件所在目錄開始一直上升到web 根目錄($_SERVER[ 'DOCUMENT_ROOT'] 所指定的)。如果被執行的 PHP 檔案在 web 根目錄之外,則只掃描該目錄。 

在 .user.ini 風格的 INI 檔案中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 設定可被辨識。 

這裡就很清楚了,.user.ini其實就是一個可以由使用者「自訂」的php.ini,我們能夠自訂的設定是模式為「PHP_INI_PERDIR 、 PHP_INI_USER」的設定。 (上面表格中沒有提到的PHP_INI_PERDIR也可以在.user.ini中設定) 

實際上,除了PHP_INI_SYSTEM以外的模式(包括PHP_INI_ALL)都是可以透過.user.ini來設定的。 

而且,和php.ini不同的是,.user.ini是一個能被動態載入的ini檔案。也就是說我修改了.user.ini後,不需要重新啟動伺服器中間件,只需要等待user_ini.cache_ttl所設定的時間(預設為300秒),即可重新載入。 

然後我們看到php.ini中的配置項,可惜我沮喪地發現,只要稍微敏感的配置項,都是PHP_INI_SYSTEM模式的(甚至是php.ini only的),包括disable_functions、extension_dir、enable_dl等。 不過,我們可以很容易地借助.user.ini檔案來建構一個「後門」。在
指定一個文件,自動包含在要執行的文件前,類似於在文件前呼叫了require()函數。而auto_append_file類似,只是在文件後麵包含。 使用方法很簡單,直接寫在.user.ini: 

auto_prepend_file=01.gif 
01.gif是要包含的檔案。 

所以,我們可以藉助.user.ini輕鬆讓所有php文件都「自動」包含某個文件,而這個文件可以是一個正常php文件,也可以是一個包含一句話的webshel​​l。 

測試一下,我分別在IIS6.0+Fastcgi+PHP5.3和nginx+fpm+php5.3上測試。 目錄下有.user.ini,和包含webshel​​l的01.gif,和正常php檔案echo.php: 

enter image description here 

enter image description here 

存取enter image description here 

Nginx下也一樣: 

enter image description here 

enter image description here 

那麼,我們可以猥褻姿勢想一下,在哪些情況下可以用這個瑣事? 例如,某網站限制不允許上傳.php文件,你便可以上傳一個.user.ini,再上傳一個圖片馬,包含起來進行getshell。不過前提是含有.user.ini的資料夾下需要有正常的php文件,否則也不能包含了。 再例如,你只是想隱藏個後門,這個方式是最方便的。 

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!