<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    【技術分享】Jenkins Nested View插件XXE漏洞(CVE-2021-21680)分析

    VSole2021-09-09 18:00:00

    0×1 前言

    逆推這個漏洞本身不難,主要記錄下思路。

    先看下漏洞描述:

    該插件 1.20 及更早版本未配置其 XML 轉換器以防止 XML 外部實體 (XXE) 攻擊。這使攻擊者能夠配置視圖,讓 Jenkins 解析精心設計的視圖 XML 定義,該定義使用外部實體從 Jenkins 控制器或服務器端請求偽造中提取秘密。

    該插件 1.21 禁用了其 XML 轉換器的外部實體解析。

    根據漏洞描述可以提取關鍵信息:

    1. XXE漏洞
    2. 漏洞出現在配置視圖處

    0×2 分析

    Jenkins在github提交了修復代碼,修復后的版本和1.19.1對比如下圖。定位代碼修改處,主要是updateByXml方法添加限制對指外部DTD的訪問來進行修復。

    updateByXml方法在doConfigDotXml中被調用。當請求方法時GET時會將NestedView作為XML數據返回,當請求方法是POST時,執行updateByXml((Source)new StreamSource(req.getReader()))將請求數據作為Source進行XML解析。那么我們只需要請求的時候設置HTTP method為POST,就可以對NestedView進行更新,然后用GET方法來讀取。

    入口具體的api在哪里?在這個鏈接找到了-/user/view/viewname/config.xml。現在我們只要更新config.xml文件就能調用doConfigDotXml方法,那么xml文件的內容就能夠傳入到請求流從而進行解析。

    現在的問題是怎么構造xml文件?既然能通過GET獲取XML數據,我們可以在頁面創建一個nested view,通過查看歷史創建的nested view的config.xml文件就能夠來構造我們想要的XML。

    現在只要在nested view的config.xml文件中插入dtd,就可以達到我們的目的:

    ]>
    

    另外需要注意,Jenkins配置了crumb來防御CSRF攻擊,所以請求的時候在url后面加上Jenkins-Crumb,Jenkins-Crumb的值可以通過api/crumbIssuer/api/json獲取。

    0×3 總結

    此次漏洞主要通過補丁對比反推漏洞,漏洞本身不復雜。首先根據描述提取關鍵信息比如什么漏洞類型、大致的漏洞位置,根據補丁修復代碼,反推出漏洞。該漏洞是一個典型XXE漏洞,通過TransformerFactory使用了默認的解析方法,沒有對dtd禁止。

    StreamSource source = new StreamSource(req.getReader());Transformer t = TransformerFactory.newInstance().newTransformer();t.transform(source, new StreamResult(out));
    

    下面是TransformerFactory解析xml防御XXE漏洞的典型方法,禁止外部DTD。

    factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
    

    除了TransformerFactory,在Java中還有許多XML解析工具,如果需要防御XXE漏洞,基本都是通過禁用DTD及外部實體來解決的。

    DocumentBuilderXMLStreamReaderSAXBuilderSAXParserSAXReaderXMLReaderSAXSourceSAXTransformerFactory......
    
    jenkinsxml語言
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    企業安全規劃建設過程中,往往會涉及到開發的代碼安全,而更多可以實現落地的是源代碼安全審計中,使用自動化工具代替人工漏洞挖掘,并且可以交付給研發人員直接進行安全自查,同時也更符合SDL的原則,此外可以顯著提高審計工作的效率。
    探索全球互聯網的資產信息,進行資產及漏洞影響范圍分析、應用分布統計、應用流行度態勢感知等。相對于shodan來說fofa的優點就是更加本土化,擁有更多的域名數據,建立了全球最大的資產規則集,而且現在已經更新了識別蜜罐的功能。fofa的功能這么強大,那我們要怎么利用好提供的功能來挖洞呢?不過在這之前一定要注意,遵守法律法規,不要作出破壞性的行為,不要做未授權的測試。
    二. Apifox 做的改進1. Apifox的整體功能定位Apifox 是 API 文檔、API 調試、API Mock、API 自動化測試一體化協作平臺。支持 Markdown 所見即所得地編寫非 API 文檔的普通文檔。API 文檔支持密碼保護和生效時間,可生成多份不同內容和權限的文檔。支持綁定接口,接口發生變化時,自動更新測試用例。支持執行循環次數和用例之間設置時間間隔。
    反序列化漏洞匯總
    2022-01-07 22:17:34
    漏洞出現在WLS Security組件,允許遠程攻擊者執行任意命令。攻擊者通過向TCP端口7001發送T3協議流量,其中包含精心構造的序列化Java對象利用此漏洞。然后將其序列化,提交給未做安全檢測的Java應用。Java應用在進行反序列化操作時,則會觸發TransformedMap的變換函數,執行預設的命令。
    用戶名:加密密碼:密碼最后一次修改日期:兩次密碼的修改時間間隔:密碼有效期:密碼修改到期到的警告天數:密碼過期之后的寬限天數:賬號失效時間:保留。查看下pid所對應的進程文件路徑,
    ?上整理的?試問題?全,有些 HW ?試的題,已經收集好了,提供給?家。
    后滲透2
    2021-10-11 06:55:16
    禁用AV/EDR產品在實踐中絕不是一個好主意,最好的辦法是繞過它。所有這些命令都需要本地管理權限。 # Disable realtime monitoring altogether Set-MpPreference -DisableRealtimeMonitoring $true
    2021年11月16日,360漏洞云團隊監測到Jenkins發布安全公告,修復了6個存在于插件中的高危漏洞。
    逆推這個漏洞本身不難,主要記錄下思路。
    這篇文章主要收集一些常見的未授權訪問漏洞。未授權訪問漏洞可以理解為需要安全配置或權限認證的地址、授權頁面存在缺陷導致其他用戶可以直接訪問從而引發重要權限可被操作、數據庫或網站目錄等敏感信息泄露。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类