Tomcat本地提權漏洞分析與防御(CVE-2016-1240)

實驗環境

操作機:Windows XP
目標機:Kali 1.1.0
目標服務器:172.16.12.2

實驗工具

vim編輯器: vim編輯器是Linux和Unix上最基本的文本編輯器,工作在字符模式下。vim是一款十分高效的文本編輯器,本次實驗主要使用該編輯器在Centos6.5下的文本編輯功能。

xshell: Xshell是一個強大的安全終端模擬軟件,它支持SSH1, SSH2, 以及Microsoft Windows 平臺的TELNET 協議。Xshell 通過互聯網到遠程主機的安全連接以及它創新性的設計和特色幫助用戶在復雜的網絡環境中享受他們的工作。本次實驗主要使用了 Xshell 的遠程連接 Kali 目標主機,操作 Kali 目標主機的功能。

實驗目的

1.掌握Tomcat 本地提權的原理
2.掌握Tomcat 本地提權的方法

實驗內容

漏洞危害
Debian系統的Linux上管理員通常利用apt-get進行包管理,CVE-2016-1240這一漏洞其問題出在Tomcat的deb包中,使 deb包安裝的Tomcat程序會自動為管理員安裝一個啟動腳本:/etc/init.d/tocat*利用該腳本,可導致攻擊者通過低權限的Tomcat用戶獲得系統root權限!

影響版本
Tomcat 8 <= 8.0.36-2
Tomcat 7 <= 7.0.70-2
Tomcat 6 <= 6.0.45+dfsg-1~deb8u1

前置知識
提權: 提權顧名思義就是提高自己在服務器中的權限,主要針對網站入侵過程中,當入侵某一網站時,通過各種漏洞提升WEBSHELL權限以奪得該服務器權限。本次實驗主要是通過 Tomcat7 的低權限用戶提權到 root 權限的用戶。
root用戶: ROOT存在于Linux系統、UNIX系統等的操作系統中,它是系統中唯一的超級用戶,相當于Windows系統中的SYSTEM用戶。其具有系統中所有的權限,如啟動或停止一個進程,刪除或增加用戶,增加或者禁用硬件等等。而普通用戶,一般權限較低,不能增刪修改一些敏感文件。
deb包: Debian包是Unixar的標準歸檔,將包文件信息以及包內容,經過gzip和tar打包而成。處理這些包的經典程序是dpkg,經常是通過Debian的apt-get來運作。
符號鏈接:LINUX 下的符號鏈接相當于Windows下的快捷方式。
poc: 根據漏洞,對應的驗證此漏洞存在的腳本即為poc。

實驗步驟

步驟1: 漏洞代碼分析

本步將根據腳本進行漏洞原理分析

Debian系統的Linux上管理員通常利用apt-get進行包管理,CVE-2016-1240這一漏洞其問題出在Tomcat的deb包中,使用deb包安裝的Tomcat程序會自動為管理員安裝一個啟動腳本:/etc/init.d/tomcat<版本號>.sh。利用該腳本,可導致攻擊者通過低權限的Tomcat用戶獲得系統root權限。
現在我們查看文件 /etc/init.d/tomcat7 操作如下:
首先我們使用 Evrething搜索xshell,選中xshell.exe運行xshell,然后連接上目標機的低權限用戶tomcat7,賬號是tomcat7,密碼是:tomcat7。


然后執行命令whoami,可以看到,現在是tomcat7的權限,也就是低權限賬戶
Fig.2
Fig.2

然后執行命令vim /etc/init.d/tomcat7, 然后按Esc鍵,接下來輸入英文狀態下的字符冒號: set number,找到171行。:

小i提示:vim是一個文本編輯器,vim /etc/init.d/tomcat7的意思是編輯/etc/init.d/文件夾下的tomcat7文件。


其造成漏洞核心代碼如下:

# Run the catalina.sh script as a daemon 
set +e 
touch "$CATALINA_PID" "$CATALINA_BASE"/logs/catalina.out
chown $TOMCAT6_USER "$CATALINA_PID" "$CATALINA_BASE"/logs/catalina.out

我們閱讀上面的shell腳本

  • 第一行,set +e,要知道set +e是什么意思,得先清楚set -e的含義:
    使用set更改shell特性時,符號"+"和"-"的作用分別是打開和關閉指定的模式,set -e的意思是若指令傳回值不等于0,則立即退出shell,而set +e的意思反之
  • 第二行,touch是創建文件夾的意思,創建了catalina.out日志文件,前面的兩個字符串定位了PID和BASE,涉及到其他變量這里不做探討
  • 第三行,chown是改變文件夾權限的命令,它將catalina.out日志文件的所述用戶更改為低權限用戶

這個腳本看似是沒有什么問題的。但是從上面的腳本可以得出三點信息:

  1. 這個腳本運行時的權限必然是root權限。因為普通用戶是無法使用chown命令,也就是沒有更高的權限。
  1. 該腳本使用touch命令創建文件,此時存在以下:文件存在、不存在、存在為符號鏈接等情況,當文件為符號鏈接時會默認地對鏈接的文件進行操作。
  1. 腳本運行完畢后Tomcat服務器啟動,此時catalina.out這個log文件的所屬用戶為tomcat,所屬組為root。

綜述上述,這就給漏洞利用創造了可能。

接下來我們來驗證是否可以利用:

當前的用戶為tomcat7。這就是說我們能夠更改所屬用戶為tomcat7的catalina.out這個log文件的內容和屬性。
更改它的屬性,讓他指向/etc/shadow/文件夾下,現在我們創建一個指向 /etc/shadow 的符號鏈接。
使用命令ln -fs /etc/shadow /var/log/tomcat7/catalina.out,這時候就可以在/etc/shadow下創建一個鏈接,就相當于Windows的快捷方式一樣。


此時我們查看文件cataline.out的內容,此時是權限不夠,禁止讀取cataline.out的內容的:
Fig.5
Fig.5

現在我們需要登陸root賬戶重啟tomcat。登陸方法與登陸Tomcat7 用戶相同,賬號為:root, 密碼為:123456 。重啟Tomcat的命令為:

service tomcat7 restart

重啟成功之后我們再次使用低權限用戶讀取cataline.out的內容:使用命令

head /var/log/tomcat6/catalina.out

使用head命令可以輸出文件前十行的內容,而cat命令則是預覽文件的全部內容。


原理:當Tomcat服務重啟時,系統默認重新加載/var/log/tomcat6/catalina.out腳本,由于此時tomcat的日志文件指向了/etc/shadow文件; 而該文件就是我們之前創建的鏈接文件,而鏈接文件屬于Tomcat7這個低權限用戶,因此,我們就可以查看其中內容了

步驟2: 漏洞驗證

本步將使用poc根據Tomcat7漏洞進行提權

我們訪問實驗地址file.ichunqiu.com/p96mg145下載poc文件:
然后執行命令cd /tmp進入目錄,然后編輯文件vim poc.sh。將桌面的poc.sh使用Notepad++打開,將文件內容粘貼進去。然后按鍵盤Esc鍵,再輸入:wq,之后按 Enter 鍵將文件保存。
如果無法寫入文件,使用命令

chmod 755 poc.sh

執行命令后,再次重復上一步即可,chmod的意思是改變文件的權限,775是什么權限呢?第一個數字代表文件所屬者的權限,第二個數字代表文件所屬者所在組的權限,第三個數字代表其它用戶的權限,7=4+2+1

4:執行時設置用戶ID,用于授權給基于文件屬主的進程,而不是給創建此進程的用戶。
2:執行時設置用戶組ID,用于授權給基于文件所在組的進程,而不是基于創建此進程的用戶。
1:設置粘著位。


這時,poc文件就已經構造好了,接下來運行腳本運行命令為:

./poc.sh /var/log/tomcat7/catalina.out

運行之后,會出現卡頓現象,這時候我們切換到root用戶,重新啟動Tomcat7,這時候使用命令whoami查看當前用戶,這時候已經是 root 用戶了,這時候就提權成功了。


可以看到,命令提示符的開頭為tomcat低權限用戶,而我們執行whoami命令的時候,顯示的權限卻是root,這樣就成功的提權了。

步驟3: 漏洞修復

目前,Debian、Ubuntu等相關操作系統廠商已修復并更新受影響的Tomcat安裝包。受影響用戶可采取以下解決方案:
1、更新Tomcat服務器版本:
(1)針對Ubuntu公告鏈接 http://www.ubuntu.com/usn/usn-3081-1/
(2)針對Debian公告鏈接https://lists.debian.org/debian-security-announce/2016/msg00249.htmlhttps://www.debian.org/security/2016/dsa-3669https://www.debian.org/security/2016/dsa-3670
2、加入-h參數防止其他文件所有者被更改,即更改Tomcat的啟動腳本為:

chown -h $TOMCAT6_USER “$CATALINA_PID” “$CATALINA_BASE”/logs/catalina.out

思考

1、針對本次漏洞,請參考試驗中的poc,根據理解,自己動手寫poc
2.、在本次的Tomcat的提權過程中,目標機是kali操作系統。目標機能不能替換為其他的操作系統,可以的話,應該換為什么操作系統?Tomcat的版本能不能替換?可以的話,應該替換為什么版本?

參考資料

http://www.freebuf.com/vuls/115862.html

課后習題

第1題:在本次Tomcat7提權的過程中,能否在Tomcat7用戶下,通過touch創建poc.sh文件,并寫入poc()
A、能
B、不能
第2題:在受影響用戶采取解決方案中,使用chown -h 參數的作用是()
A、更改文件權限
B、更改 歸屬組
C、更改歸屬人
第3題:tomcat7提權成功之后,執行命令,whoami 的執行結果是_________ 。

參考答案:

1、B;2、A;3、root

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,363評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,497評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,305評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,962評論 1 311
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,727評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,193評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,257評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,411評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,945評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,777評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,978評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,519評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,216評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,657評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,960評論 2 373

推薦閱讀更多精彩內容