mysql malloc lib_CVE-2016-6662-MySQL ‘malloc_lib’变量重写命令执行分析 | CN-SEC 中文网...
摘要
今天有個關于MySQL的漏洞被披露出來,編號CVE-2016-6662。該漏洞主要涉及到 mysqld_safe 腳本中在加速/處理內存時會采用 “malloc_lib”變量作為辨別標記選擇性加載(preload方式)比如tcmalloc之類的malloc庫。不幸的的是這個變量可以被my.cnf所控制,導致my.cnf一旦被攻擊者在mysql客戶端篡改的話可以直接導致mysqld_safe所調用的mysqld進程執行權被控制。
前言
今天有個關于MySQL的漏洞被披露出來,編號CVE-2016-6662。該漏洞主要涉及到 mysqld_safe 腳本中在加速/處理內存時會采用 “malloc_lib”變量作為辨別標記選擇性加載(preload方式)比如tcmalloc之類的malloc庫。不幸的的是這個變量可以被my.cnf所控制,導致my.cnf一旦被攻擊者在mysql客戶端篡改的話可以直接導致mysqld_safe所調用的mysqld進程執行權被控制。
技術分析
具體的攻擊思路前言部分基本已經表述出來,這里不再重述。筆者來看看漏洞作者在【1】中做了3種攻擊方式。作者的思路基本是圍繞著如何用這幾種技巧寫入 my.cnf 被mysqld_safe調用執行這個中心攻防點來進行。
我們先看看最簡單的第1種方法
1)采用 set global general_log 來繞過已存在文件(即my.cnf)
a)設置 my.cnf 為 mysql 用戶所在權限的基礎上
# ll /etc/my.cnf
-rw-r--r-- 1 mysql mysql 380 Sep 12 23:18 /etc/my.cnf
注:默認權限是root,但是不排除mysql集群使用時每個my.cnf是mysql組可讀寫;
b)開始攻擊,各位直接看圖吧
注: 這里使用root登錄,普通用戶默認是沒更改全局變量general_log_file 的權限
1
2
mysql>??set?global?general_log_file?=?'/etc/my.cnf';
ERROR?1227?(42000):?Access?denied;?you?need?the?SUPER?privilege?for?this?operation
攻擊成功后的my.cnf
2)使用隱藏的/var/lib/mysql/.my.cnf 和 /var/lib/mysql/my.cnf
這部分講起來其實意義不大,就是歷史原因造成這部分mysql數據目錄下的my.cnf和.my.cnf。最糟糕的是這部分還是mysql用戶組可以讀寫的目錄。所以我們又能控制到my.cnf了。
寫入的方法有兩種,一種還是方法一的變量,另一個是常見 INTO OUTFILE 文件注入技巧。
3)作者考慮下了上面2種方式都是需要
作者在假設攻擊者還有文件權限的情況下使用寫入觸發器文件的方式來“
CREATE?DEFINER=`root`@`localhost`?TRIGGER?appendToConf
AFTER?INSERT
ON?`active_table`?FOR?EACH?ROW
BEGIN
DECLARE?void?varchar(550);
set?global?general_log_file='/var/lib/mysql/my.cnf';
set?global?general_log?=?on;
select?"
[mysqld]
malloc_lib='/var/lib/mysql/
"?INTO?void;
set?global?general_log?=?off;
END;
接下來就等這個這個觸發器在表被flushed的時候被觸發了(說真的,筆者沒實踐這個步驟),比如:
1
INSERT?INTO?`active_table`?VALUES('xyz');
這樣我們就可以
最后,關于PoC或相關的信息您可以直接訪問【1】獲得。作者其實在后面的so也提供一個很好的回寫技巧,由于preload可以優先mysqld進程加載my.cnf,所以它就能修復my.cnf里的內容。J
最后
這個漏洞的危害建立在一個你至少需要普通用戶的基礎上,危害程度得因人而異,不注意安全的可能使用的mysql是一大堆弱口令的root用戶;注意安全的基本都是普通mysql用戶;集群上啟動MySQL進程的用戶也是個需要考慮的;至于web注入點使用這個功能個人覺得可能就比較窄了。
MySQL的修復【2】選擇的是對malloc_lib的路徑進行限制 /usr/lib, /usr/lib64, /usr/lib/i386-linux-gnu, or /usr/lib/x86_64-linux-gnu;
最后,筆者認為My
參考
本文由 安全客 原創發布,如需轉載請注明來源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/3026.html
總結
以上是生活随笔為你收集整理的mysql malloc lib_CVE-2016-6662-MySQL ‘malloc_lib’变量重写命令执行分析 | CN-SEC 中文网...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛客网SQL篇刷题篇(3-10)
- 下一篇: linux未知设备驱动程序,未知Andr