MySQL設計缺陷,竊取文件易如反掌
近期美國某些大型商務網站和政府網站被黑客通過Adminer數據庫入侵,根本原因是 MySQL服務器的協議缺陷。
具體來說,客戶端主機和MySQL服務器之間的文件傳輸交互存在一個開源關系數據庫管理系統(tǒng)(RDBMS)設計缺陷,允許運行惡意MySQL服務器的攻擊者訪問所連接的客戶端具有讀取訪問權限的任何數據。
若被惡意利用此漏洞,攻擊者可以從配置不當的Web服務器(允許連接到不受信任的服務器)或數據庫管理應用程序中檢索敏感信息。
MySQL
MySQL是一個開放源碼的小型關聯式數據庫管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。目前MySQL被廣泛地應用在中小型網站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站數據庫。
MySQL的特性:
- 使用C和C++編寫,并使用了多種編譯器進行測試,保證源代碼的可移植性;
- 支持AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、OS/2 Wrap、Solaris、SunOS、Windows等多種操作系統(tǒng);
- 為多種編程語言提供了API。這些編程語言包括C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等;
- 支持多線程,充分利用CPU資源,支持多用戶;
- 優(yōu)化的SQL查詢算法,有效地提高查詢速度;
- 既能夠作為一個單獨的應用程序應用在客戶端服務器網絡環(huán)境中,也能夠作為一個庫而嵌入到其他的軟件中;
- 提供多語言支持,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數據表名和數據列名;
- 提供TCP/IP、ODBC和JDBC等多種數據庫連接途徑;
- 提供用于管理、檢查、優(yōu)化數據庫操作的管理工具;
- 可以處理擁有上千萬條記錄的大型數據庫。
安全隱患顯而易見
此次出現的問題在于LOCAL修飾符使用的LOAD DATA(加載數據)語句,在MySQL文檔中被認為具有安全風險。
開發(fā)人員進一步解釋了它的運行方式,客戶端根據其在LOAD DATA語句中提供的信息從MySQL服務器接收文件傳輸請求。LOAD DATA語句可以加載位于服務器上的文件,如果請求中使用了LOCAL關鍵字,則可以加載客戶端主機上的文件。因此,惡意服務器也可以通過使用LOADDATA LOCAL(加載本地數據)語句進行響應,并要求獲取客戶端具有讀取權限的任何文件。
“理論上來說,構建一個補丁MySQL服務器,回復任何語句的文件傳輸請求,而不僅僅是LOAD DATALOCAL語句,這樣的服務器可以訪問客戶端用戶具有讀訪問權限的客戶端主機上的任何文件,因此更基本的問題是客戶端不應該連接到任何不受信任的服務器,” MySQL文檔中寫道。
這同樣適用于Web服務器,它在連接到MySQL服務器時能夠充當客戶端。在這種情況下,攻擊者可以使用該漏洞竊取包含用戶帳戶記錄在內的“/ etc / passwd”文件。
只有在服務器知道文件完整路徑的情況下,才能以這種方式獲取文件。但是,可以通過請求“/ proc / self /environ”文件,提供正在運行的進程的環(huán)境變量,從而暴露主目錄和有關內部文件夾結構的詳細信息。
隨時可用的無管理系統(tǒng)MySQL服務器
安全研究員Willem deGroot(Twitter:@gwillem)在Reddit上,討論了用戶受惡意MySQL服務器影響可能出現的隱患。其中盜取SSH密鑰和訪問加密貨幣錢包的詳細信息首當其沖。
根據de Groot的說法,2018年10月的Magecart攻擊正是利用MySQL漏洞向購物網站注入了惡意代碼,以便在用戶付款時竊取支付卡詳細信息。
早在五年前,GitHub上就已經開始提供無管理系統(tǒng)MySQL服務器的惡意代碼,因此如果網絡犯罪分子在攻擊中使用它,并不會讓人感到意外。de Groot推測無管理系統(tǒng)MySQL服務器的修改版本很有可能已經在暗網上出售。
在上周的一篇博客文章中,de Groot 解釋了攻擊者是如何利用這個漏洞在Adminer(一個管理PostgreSQL和MySQL數據庫的工具)的幫助下提取敏感細節(jié)信息的。
攻擊者的目的似乎是竊取Magento商業(yè)平臺存儲其數據庫密碼的文件('local.xml')。
這在運行易受攻擊版本Adminer(修訂版4.3.1至4.6.2被發(fā)現受此漏洞的影響)的網站上是極有可能實現的。因此,管理員應更換或升級為更安全的版本,至少是4.6.3版本。除此之外,還可以通過設置二級密碼和IP過濾器來保護數據庫信息。