安全研究 | Jenkins 任意文件讀取漏洞分析

歡迎你們前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~java

本文由雲鼎實驗室 發表於雲+社區專欄web

1、漏洞背景安全

漏洞編號:CVE-2018-1999002服務器

漏洞等級:高危微信

Jenkins 7 月 18 日的安全通告修復了多個漏洞,其中 SECURITY-914 是由 Orange (博客連接:blog.orange.tw/)挖出的 Jenkins 未受權任意文件讀取漏洞。框架

**騰訊安全雲鼎實驗室安全研究人員對該漏洞進行分析發現,**利用這個漏洞,攻擊者能夠讀取 Windows 服務器上的任意文件,對於 Linux,在特定條件下也能夠進行文件讀取。利用文件讀取漏洞,攻擊者能夠獲取到 Jenkins 的憑證信息,從而形成敏感信息泄露。另外,在不少時候,Jenkins 的部分憑證和其內用戶的賬號密碼相同,獲取到憑證信息後也能夠直接登陸 Jenkins 進行命令執行操做等。eclipse

2、漏洞分析網站

Jenkins 在處理請求的時候是經過 Stapler 進行處理的,Stapler 是一個 Java Web 框架。查看 web.xml 可知,Stapler 攔截了全部請求:ui

img

單步跟入 hudson.util.PluginServletFilter,最後會跟到 jenkins\core\src\main\java\hudson\Plugin.java 的 doDynamic 方法:3d

img

能夠發現,Jenkins 在 serve /plugin/SHORTNAME 這個 URL 的時候,調用的是 StaplerResponse 的 serveLocalizedFile 方法處理靜態文件的,繼續跟入這個方法:

img

其中 request.getLocale() 是 jetty-server-9.4.5.v20170502-sources.jar!\org\eclipse\jetty\server\Request.java 內的,其實現爲:

img

很是明顯,Jetty 在獲取 Locale 的時候直接從 HTTP Headers 裏取出 Accept-Language 頭,用 - 分割後返回了一個 Locale 對象。也就是我傳入Accept-Language: ../../../aaaa-bbbbbb 時,那麼我將會獲得一個 Locale("../../../aaaa", "BBBBBB")對象。

最後到跟入 stapler-1.254-sources.jar!\org\kohsuke\stapler\Stapler.java:

img

咱們能夠發現,Stapler 首先將後綴名單獨取出,接着將 Jenkins 目錄和傳入的 locale 的 language 以及後綴名拼接,而後打開這個路徑。那麼攻擊者只須要構造出以下 HTTP 請求便可形成文件讀取:

img

最後 URL 拼接的現場爲:

img

在 Windows 下,不存在的目錄能夠經過 ../ 遍歷過去的,而對於 Linux 則不行。那麼這個漏洞在 Windows 下是能夠任意文件讀取的,而在 Linux 下則須要在 Jenkins plugins 目錄下存在一個名字中存在 _ 的目錄才能夠。

img

3、利用方式

通常來講,文件讀取漏洞很難轉化爲命令執行,對於 Jenkins 也是如此。不過 Jenkins 有一個 Credentials 模塊,這個模塊儲存了 Jenkins 的一些憑證信息,不少時候,其憑證的賬號密碼是和 Jenkins 的賬號密碼相同的。不管如何,在成功利用文件讀取漏洞後,都要將憑證信息讀取並解密,以收集更多的信息。

若是咱們想獲取 Jenkins 的憑證信息的話,須要如下幾個文件:

· credentials.xml

· secrets/hudson.util.Secret

· secrets/master.key

很幸運的是這幾個文件咱們均可以利用文件讀取漏洞讀取出來。在 Shodan 上嘗試獲取國外 real world 的 Jenkins 的賬號密碼:

img

固然,獲取到的賬號密碼是不能直接登陸的,可是稍微修改一下用戶名就能夠成功的登陸進去了:

img

4、修復方案

雖然這個漏洞危害較大,可是沒必要太過擔憂,由於默認安裝 Jenkins 的時候匿名用戶是沒有可讀權限的。而且此漏洞在 Linux 上被利用的可能性較小。如下爲推薦的修復方案:

➢針對此高危漏洞利用,騰訊雲網站管家 WAF AI 引擎可檢測並攔截,若是須要,可在騰訊雲官網進一步瞭解

➢在全局安全配置中將匿名用戶的可讀權限去掉

img

➢升級到最新版本的 Jenkins(2.121.2)

➢使用 Linux

問答

GitLab和Jenkins集成?

相關閱讀

安全報告 | 2018上半年互聯網惡意爬蟲分析:從全景視角看爬蟲與反爬蟲

安全報告 | SSH 暴力破解趨勢:從雲平臺向物聯網設備遷移

給你的CVM安裝一個面板吧!

此文已由做者受權騰訊雲+社區發佈,原文連接:https://cloud.tencent.com/developer/article/1165414?fromSource=waitui

歡迎你們前往騰訊雲+社區或關注雲加社區微信公衆號(QcloudCommunity),第一時間獲取更多海量技術實踐乾貨哦~

海量技術實踐經驗,盡在雲加社區

相關文章
相關標籤/搜索