Mysql的提權原理就是讓Mysql能夠執行系統的命令
一、Mysql提權的必備條件
- 服務器安裝Mysql數據庫
利用Mysql提權的前提就是服務器安裝了Mysql服務器,且Mysql的服務沒有降權,Mysql安裝默認是以系統的權限繼承來的,並且需要獲取Mysql root帳號 密碼
- 判斷Mysql服務運行權限
Mysql服務的權限決定着是否能夠順利的進行提權操作,所以這步也是至關重要的,對於Mysql數據庫服務運行權限的查看有很多方法,這裏主要說兩種:
- 通過查看當前系統帳號,即使用‘net user’命令查看系統當前帳號,如果出現了mysql這類用戶,那麼可能系統對Mysql數據庫進行了降權
- 查看端口可否外聯,一般情況下是不允許root等賬號外聯,外部直接連接意味着賬號可能被截取和嗅探,通過本地客戶端直接連接對方服務器,直接查看和操作Mysql數據庫,可以通過掃描3306端口來判斷是否提供對外連接。
二、Mysql密碼獲取
1.獲取網站數據庫帳號和密碼
對於CMS系統,一定會有一個文件定義了數據庫連接的用戶和密碼。例如以下代碼:
- dedecms數據庫安裝的信息就是寫在data/common.inc.php,Discuz的數據庫信息就在config/config_global_default.php、config /config_ucenter.php、config.inc.php。一般數據庫配置文件都會位於config、application、conn、db等目錄,配置文件名稱一般會是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具備的條件:
- 知道站點物理路徑,網站物理途徑可以通過phpinfo函數、登錄後臺查看系統屬性、文件出錯信息、查看網站源代碼以及路徑猜測等方法獲取。
- 有足夠大的權限,最好是root帳號權限或者具備root權限的其他帳號,可以用select user,password from mysql.user進行測試。
- 直接導出webshell,執行下面的語句
也可以通過創建表來直接完成,其中d:/www/exehack.php爲webshell的名稱和路徑:
四、Mysql滲透有用的技巧總結
- 常見的有助於滲透到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 <表名>