Mysql提權前奏

Mysql的提權原理就是讓Mysql能夠執行系統的命令

一、Mysql提權的必備條件

  1. 服務器安裝Mysql數據庫

利用Mysql提權的前提就是服務器安裝了Mysql服務器,且Mysql的服務沒有降權,Mysql安裝默認是以系統的權限繼承來的,並且需要獲取Mysql root帳號 密碼

  1. 判斷Mysql服務運行權限

Mysql服務的權限決定着是否能夠順利的進行提權操作,所以這步也是至關重要的,對於Mysql數據庫服務運行權限的查看有很多方法,這裏主要說兩種:

  • 通過查看當前系統帳號,即使用‘net user’命令查看系統當前帳號,如果出現了mysql這類用戶,那麼可能系統對Mysql數據庫進行了降權
    在這裏插入圖片描述
  • 查看端口可否外聯,一般情況下是不允許root等賬號外聯,外部直接連接意味着賬號可能被截取和嗅探,通過本地客戶端直接連接對方服務器,直接查看和操作Mysql數據庫,可以通過掃描3306端口來判斷是否提供對外連接。

二、Mysql密碼獲取
1.獲取網站數據庫帳號和密碼

對於CMS系統,一定會有一個文件定義了數據庫連接的用戶和密碼。例如以下代碼:

在這裏插入圖片描述

  • dedecms數據庫安裝的信息就是寫在data/common.inc.php,Discuz的數據庫信息就在config/config_global_default.phpconfig /config_ucenter.phpconfig.inc.php。一般數據庫配置文件都會位於configapplicationconndb等目錄,配置文件名稱一般會是conn.asp/php/aspx/jsp等。總之通過查看源代碼,進行層層分析,終究會發現數據庫配置文件。

對於Linux操作系統,除了上述方法獲取root賬號密碼外,還可以通過查看./root/.mysql_history、./root/.bash_history文件查看mysql操作涉及的密碼。當然對於Mysql5.6以下版本,由於設計Mysql程序時對於安全性的重視度非常低,用戶密碼是明文傳輸。MySQL對於binary log中和用戶密碼相關的操作是不加密的。如果你向MySQL發送了例如create user,grant user … identified by這樣的攜帶初始明文密碼的指令,那麼會在binary log中原原本本的被還原出來,執行“mysqlbinlog binlog.000001”命令即可獲取。

三、Mysql獲取webshell
Mysql root帳號網站獲取webshell具備的條件:

  1. 知道站點物理路徑,網站物理途徑可以通過phpinfo函數、登錄後臺查看系統屬性、文件出錯信息、查看網站源代碼以及路徑猜測等方法獲取。
  2. 有足夠大的權限,最好是root帳號權限或者具備root權限的其他帳號,可以用select user,password from mysql.user進行測試。
  3. 直接導出webshell,執行下面的語句

在這裏插入圖片描述
也可以通過創建表來直接完成,其中d:/www/exehack.php爲webshell的名稱和路徑:
在這裏插入圖片描述

四、Mysql滲透有用的技巧總結

  1. 常見的有助於滲透到mysql函數

在對MySQL數據庫架構的滲透中,MySQL內置的函數DATABASE()USER()SYSTEM_USER()SESSION_USER()CURRENT_USER() 可以用來獲取一些系統的信息,而==load_file()==作用是讀入文件,並將文件內容作爲一個字符串返回,這在滲透中尤其有用,例如發現一個php的SQL注入點,則可以通過構造 “ -1 union select 1,1,1,1,load_file(‘c:/boot.ini’)” 來獲取boot.ini文件的內容。

一些常見的系統配置文件

在這裏插入圖片描述
linux/unix下

在這裏插入圖片描述
2. 直接讀取配置文件

在這裏插入圖片描述
3. Linux下通過load_file函數讀出來的數據庫有可能是hex編碼,要正常查看需要使用NotePad將將以上代碼全部選中,然後選擇插件“Converter”-“HEX-ASCII”進行轉換。

4.有用的一些小技巧

  • 3389端口命令行下獲取總結
    在這裏插入圖片描述

  • Windows 2008Server命令行開啓3389
    在這裏插入圖片描述

  • 在phpinfo中查找SCRIPT_FILENAME關鍵字獲取真實路徑

  • Linux終端提示符下查看mysql有關信息,ps -ef|grep mysql

  • Linux下啓動mysql服務: service mysqld start

  • Linux下查看mysqld是否啓動:ps -el | grep mysqld

  • 查看mysql在哪裏:whereis mysql

  • 查詢運行文件所在路徑 which mysql

5.一些常見的Mysql命令

  • 連接到mysql 服務器
mysql -h 192.168.0.1 -u root -proot
  • 查看所有數據庫
show databases; 
  • 使用某個數據庫
use testdatabase; 
  • 查看數據庫中的所有表
show tables; 
  • 在test數據庫下創建一個新的表
create table a (cmd text); 
  • 導出數據到系統某個目錄下
select * from a into outfile "c:\\docume~1\\alluse~1\\「開始」菜單\\程序\\啓動\\a.vbs"; 
  • 查詢數據庫數據路徑
select @@datadir; 
  • 查看所有dir路徑
show variables where variable_name like "%dir" 
  • 查看插件路徑
show variables like '%plugins%' ; 
  • 查詢MYSQL安裝路徑
select @@basedir 
  • 常用內置函數
select system_user() 查看系統用戶 
select current_user() 查詢當前用戶 
select user(); 查詢用戶 
SELECT version() 查詢數據庫版本 
SELECT database() 查詢當前連接的數據庫 
select @@version_compile_os 查詢當前操作系統 
select now(); 顯示當前時間 
  • 獲取表結構
desc 表名 或者show columns from 表名 
  • 刪除表
drop table <表名>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章