這篇文章主要介紹了Jenkins任意文件讀取漏洞的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁(yè)設(shè)計(jì)師等,應(yīng)用各種網(wǎng)絡(luò)程序開發(fā)技術(shù)和網(wǎng)頁(yè)設(shè)計(jì)技術(shù)配合操作的協(xié)同工作。創(chuàng)新互聯(lián)專業(yè)提供做網(wǎng)站、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站制作(企業(yè)站、自適應(yīng)網(wǎng)站建設(shè)、電商門戶網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗(yàn)的提升,我們力求做到極致!
漏洞編號(hào):CVE-2018-1999002
漏洞等級(jí):高危
Jenkins 7 月 18 日的安全通告修復(fù)了多個(gè)漏洞,其中 SECURITY-914 是由 Orange 挖出的 Jenkins 未授權(quán)任意文件讀取漏洞。
騰訊安全云鼎實(shí)驗(yàn)室安全研究人員對(duì)該漏洞進(jìn)行分析發(fā)現(xiàn),利用這個(gè)漏洞,攻擊者可以讀取 Windows 服務(wù)器上的任意文件,對(duì)于 Linux,在特定條件下也可以進(jìn)行文件讀取。利用文件讀取漏洞,攻擊者可以獲取到 Jenkins 的憑證信息,從而造成敏感信息泄露。另外,在很多時(shí)候,Jenkins 的部分憑證和其內(nèi)用戶的帳號(hào)密碼相同,獲取到憑證信息后也可以直接登錄 Jenkins 進(jìn)行命令執(zhí)行操作等。
Jenkins 在處理請(qǐng)求的時(shí)候是通過(guò) Stapler 進(jìn)行處理的,Stapler 是一個(gè) Java Web 框架。查看 web.xml 可知,Stapler 攔截了所有請(qǐng)求:
單步跟入 hudson.util.PluginServletFilter,最后會(huì)跟到 jenkins\core\src\main\java\hudson\Plugin.java 的 doDynamic 方法:
可以發(fā)現(xiàn),Jenkins 在 serve /plugin/SHORTNAME 這個(gè) URL 的時(shí)候,調(diào)用的是 StaplerResponse 的 serveLocalizedFile 方法處理靜態(tài)文件的,繼續(xù)跟入這個(gè)方法:
其中 request.getLocale() 是 jetty-server-9.4.5.v20170502-sources.jar!\org\eclipse\jetty\server\Request.java 內(nèi)的,其實(shí)現(xiàn)為:
非常明顯,Jetty 在獲取 Locale 的時(shí)候直接從 HTTP Headers 里取出 Accept-Language 頭,用 - 分割后返回了一個(gè) Locale 對(duì)象。也就是我傳入Accept-Language: ../../../aaaa-bbbbbb 時(shí),那么我將會(huì)得到一個(gè) Locale("../../../aaaa", "BBBBBB")對(duì)象。
最后到跟入stapler-1.254-sources.jar!\org\kohsuke\stapler\Stapler.java:
我們可以發(fā)現(xiàn),Stapler 首先將后綴名單獨(dú)取出,接著將 Jenkins 目錄和傳入的 locale 的 language 以及后綴名拼接,然后打開這個(gè)路徑。那么攻擊者只需要構(gòu)造出如下 HTTP 請(qǐng)求即可造成文件讀?。?nbsp;
最后 URL 拼接的現(xiàn)場(chǎng)為:
在 Windows 下,不存在的目錄可以通過(guò) ../ 遍歷過(guò)去的,而對(duì)于 Linux 則不行。那么這個(gè)漏洞在 Windows 下是可以任意文件讀取的,而在 Linux 下則需要在 Jenkins plugins 目錄下存在一個(gè)名字中存在 _ 的目錄才可以。
一般來(lái)說(shuō),文件讀取漏洞很難轉(zhuǎn)化為命令執(zhí)行,對(duì)于 Jenkins 也是如此。不過(guò) Jenkins 有一個(gè) Credentials 模塊,這個(gè)模塊儲(chǔ)存了 Jenkins 的一些憑證信息,很多時(shí)候,其憑證的帳號(hào)密碼是和 Jenkins 的帳號(hào)密碼相同的。無(wú)論如何,在成功利用文件讀取漏洞后,都要將憑證信息讀取并解密,以收集更多的信息。
如果我們想獲取 Jenkins 的憑證信息的話,需要以下幾個(gè)文件:
· credentials.xml
· secrets/hudson.util.Secret
· secrets/master.key
很幸運(yùn)的是這幾個(gè)文件我們都可以利用文件讀取漏洞讀取出來(lái)。在 Shodan 上嘗試獲取國(guó)外 real world 的 Jenkins 的帳號(hào)密碼:
當(dāng)然,獲取到的帳號(hào)密碼是不能直接登錄的,但是稍微修改一下用戶名就可以成功的登錄進(jìn)去了:
雖然這個(gè)漏洞危害較大,但是不必太過(guò)擔(dān)心,因?yàn)槟J(rèn)安裝 Jenkins 的時(shí)候匿名用戶是沒(méi)有可讀權(quán)限的。并且此漏洞在 Linux 上被利用的可能性較小。以下為推薦的修復(fù)方案:
?針對(duì)此高危漏洞利用,騰訊云網(wǎng)站管家 WAF AI 引擎可檢測(cè)并攔截,如果需要,可在騰訊云官網(wǎng)進(jìn)一步了解
?在全局安全配置中將匿名用戶的可讀權(quán)限去掉
?升級(jí)到最新版本的 Jenkins(2.121.2)
?使用 Linux
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Jenkins任意文件讀取漏洞的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
當(dāng)前題目:Jenkins任意文件讀取漏洞的示例分析
網(wǎng)站路徑:http://aaarwkj.com/article46/gjighg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、動(dòng)態(tài)網(wǎng)站、網(wǎng)站排名、用戶體驗(yàn)、網(wǎng)站收錄、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)