- 網絡攻防實戰研究:MySQL數據庫安全
- 祝烈煌
- 1193字
- 2020-10-30 15:11:21
2.2 MySQL注入基礎
2.2.1 MySQL系統函數
MySQL有很多系統函數。通過查詢這些函數,攻擊者可以獲取系統參數、數據庫安裝路徑等敏感信息,在root權限下還可以讀取所有數據庫用戶的密碼。一般使用“select 函數名稱;”進行查詢。
· system_user():查詢系統用戶名,執行結果如圖2-2所示。每個查詢語句都要以分號結束,否則執行將會失敗。

圖2-2 查詢系統用戶名
· user():查詢當前用戶名。以root用戶登錄,執行結果是一致的。
· current_user():查詢當前使用的用戶名。
· session_user():查詢連接數據庫的用戶名。
· database():查詢使用的數據庫名。如果沒有使用usedatabasename,則顯示為空。
· version():查詢MySQL數據庫版本。例如,“5.0.90-community-nt”與“select@@GLOBAL.VERSION;select@@version;”的查詢效果相同。
· load_file():讀取本地文件。
· @@datadir:讀取數據庫路徑。
· @@basedir:獲取MySQL的安裝路徑。
· @@version_compile_os:獲取操作系統版本。
完整的命令格式如下。

2.2.2 收集Windows和Linux文件列表
Windows 和 Linux 操作系統常常將某些敏感信息存儲在特定的文件中。如果攻擊者發現網站中存在 SQL 注入漏洞,且能夠利用 2.2.1 節提到的 load_file()函數讀取文件,就能夠通過提前收集的Windows和Linux敏感文件的默認路徑獲取想要的信息。下面列舉部分文件名及默認路徑。
1.Windows文件
· c:\boot.ini:Windows Server 2008以下版本使用。
· c:\windows\php.ini:其中存儲了PHP配置信息。
· c:\windows\my.ini:MySQL配置文件,記錄管理員使用過的MySQL用戶名和密碼。
· c:\winnt\php.ini.
· c:\winnt\my.ini.
· c:\MySQL\data\MySQL\user.MYD:其中存儲了MySQL.user表中的數據庫連接密碼。
· c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini:其中存儲了虛擬主機網站的路徑和密碼。
· c:\Program Files\Serv-U\ServUDaemon.ini.
· c:\windows\system32\inetsrv\MetaBase.xml:IIS配置文件。
· c:\windows\repair\sam:其中存儲了初次安裝Windows操作系統時使用的密碼。
· c:\Program Files\Serv-U\ServUAdmin.exe:其中存儲了Serv-U 6.0以前版本的管理員密碼。
· c:\Program Files\RhinoSoft.com\ServUDaemon.exe.
· c:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif:其中存儲了pcAnywhere的登錄密碼。
· c:\Program Files\Apache Group\Apache\conf\httpd.conf或C:\apache\conf\httpd.conf:Windows操作系統的Apache文件。
· c:\Resin-3.0.14/conf/resin.conf:使用JSP開發的網站的Resin文件。
· c:\Resin\conf\resin.conf.
· d:\APACHE\Apache2\conf\httpd.conf.
· c:\Program Files\MySQL\my.ini.
· c:\windows\system32\inetsrv\MetaBase.xml:IIS的虛擬主機配置文件。
· c:\MySQL\data\MySQL\user.MYD:其中存儲了MySQL的用戶密碼。
2.Linux/UNIX文件
· /usr/local/app/apache2/conf/httpd.conf:Apache2默認配置文件。
· /usr/local/apache2/conf/httpd.conf.
· /usr/local/app/apache2/conf/extra/httpd-vhosts.conf:其中存儲了虛擬網站設置。
· /usr/local/app/php5/lib/php.ini:其中存儲了PHP相關設置。
· /etc/sysconfig/iptables:其中存儲了防火墻規則策略。
· /etc/httpd/conf/httpd.conf:Apache配置文件。
· /etc/rsyncd.conf:同步程序配置文件。
· /etc/my.cnf:MySQL配置文件。
· /etc/redhat-release:其中存儲了系統版本信息。
· /etc/issue.
· /etc/issue.net.
· /usr/local/app/php5/lib/php.ini:其中存儲了PHP的相關設置。
· /etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf:Linux Apache虛擬主機配置文件。
· /usr/local/resin-3.0.22/conf/resin.conf:Resin 3.0.22配置文件。
· /usr/local/resin-pro-3.0.22/conf/resin.conf:同上。
· /etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf:Linux Apache虛擬主機配置文件。
2.2.3 常見的MySQL注入攻擊方法
1.手工注入
在MySQL手工注入中,攻擊者主要利用MySQL自帶的information_schema數據庫獲取和利用相關信息。information_schema數據庫保存了MySQL服務器上所有數據庫的相關信息,例如數據庫名、數據庫中的表、表列的數據類型與訪問權限等。簡單地說,在一臺 MySQL 服務器上,到底有哪些數據庫、各個數據庫中有哪些表、每張表的字段類型是什么、各個數據庫要有什么權限才能訪問等信息,都保存在information_schema數據庫里面。
在進行手工注入時,攻擊者會通過構造SQL查詢語句獲取想要的信息,進行查詢、寫入文件、讀取文件、執行命令等操作。
2.工具注入
工具注入是指將手工注入自動化,通過編程實現數據庫信息獲取、數據表內容獲取等。攻擊者利用工具注入可以大幅提高效率,快速獲取需要的信息。
防止工具注入在網站安全維護工作中是非常重要的。
- Wireshark 2 Quick Start Guide
- 電子支付的規制結構配置研究
- 代碼審計:企業級Web代碼安全架構
- Kali Linux Wireless Penetration Testing Cookbook
- 諸神之眼:Nmap網絡安全審計技術揭秘
- 數字化轉型浪潮下的數據安全最佳實踐指南
- 黑客攻防與網絡安全從新手到高手(絕招篇)
- Kerberos域網絡安全從入門到精通
- 數據安全與流通:技術、架構與實踐
- Learning Pentesting for Android Devices
- CTF特訓營:技術詳解、解題方法與競賽技巧
- VMware vCloud Security
- 白話零信任
- 計算機網絡安全實驗指導
- 黑客攻防從入門到精通:絕招版(第2版)