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

    CVE-2022-34265 Django Extract & Trunc SQL注入漏洞

    VSole2022-07-13 06:37:22

    這段時間 Java 卷的太狠,換一下口味。

    漏洞信息

    Django 數據庫函數 `Trunc` 和 `Extract` 主要用于進行日期操作,定義如下:

    `Extract` 用于提取日期,比如我們可以提取日期字段中的年、月、日等信息, `Trunc` 則用于截取,比如 `2000-01-01 11:11:11` ,可以根據需求獲取到日期 `2000-01-01` 。如果將未過濾的數據傳遞給 `kind` 或 `lookup_name` 時,將會出現 SQL 注入漏洞。影響版本:

    •  Django 3.2.x prior to 3.2.14
    •  Django 4.0.x prior to 4.0.6

    補丁對比

    在 Django 新版本 `operations.py` 的 `BaseDatabaseOperations` 類中新增了 `extract_trunc_lookup_pattern` 正則表達式:

    然后在 `datetime.py` 的 `Extract` 和 `Trunc` 類中 `as_sql` 函數分別加入了對 `self.lookup_name` 和 `self.kind` 參數的正則表達式檢查:

    環境搭建

    為了深入分析漏洞原理,建議采用源碼方式完成環境搭建:

    參考 Django 官方提供的 `database-functions` 以及補丁中的測試例子,構造如下數據庫實體類:

    對應 MySQL 數據庫定義:

    在 `views.py` 中添加測試 API 接口定義:

    在 `urls.py` 中配置路由規則:

    漏洞分析

    以 `Extract` 為例,構造請求 `/extract_test/?lookup_name=year` ,順利進入 API 函數入口:

    在 Django 框架自帶的 ORM 模型中,當進行 SQL 查詢操作時,將調用 `\django\db\models\query.py` 的 `QuerySet` 類中對應方法進行處理。比如 `Demo` 中的查詢將調用 `QuerySet#exists` 函數:

    經過多次傳遞后,進入 `SQLCompiler#compile` :

    最終到達此次存在漏洞的 `Extract` 類中函數 `as_sql` :

    因為 `demo` 中選擇的字段 `start_datetime` 屬于 `DateTimeField` 類型,所以將進入第 `58` 行的 `datetime_extract_sql` 函數:

    跟進 `date_extract_sql` :

    `date_extract_sql` 函數將根據輸入的 `lookup_type` 取值生成不同的 SQL 語句,比如 `demo` 中設置為 `year` ,最終返回如下 :

    對來自 GET 請求的 `lookup_name` 參數只是完成大寫轉換,但沒有進行任何檢查,直接拼接到 SQL 查詢語句中,存在注入漏洞:

    報錯回顯測試:

    修復方式

    前面補丁對比已經提到,新版本中對傳入參數新增了正則表達式檢查規則。

    djangotrunc
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    Django 數據庫函數 Trunc 和 Extract 主要用于進行日期操作,如果將未過濾的數據傳遞給 kind 或 lookup_name 時,將會產生 SQL 注入漏洞 CVE-2022-34265。
    漏洞評級:高危影響版本:Django 3.2、Django 3.1安全版本:Django >= 3.2.5、Django >= 3.1.13漏洞分析2.1 order_by()order_by是QuerySet下的一種查詢方法,作用是將查詢的結果根據某個字段進行排序,在字段前面加一個符號,結果會倒序輸出。
    0x01、漏洞狀態漏洞細節漏洞POC漏洞EXP在野利用否未知未知未知0x02、漏洞描述DjangoDjango基金會的一套基于Python語言的開源Web應用框架。2022年4月11日,Django發布安全公告,修復了兩個存在于Django中的高危漏洞。
    在上周早些時候,來自巴西的安全研究人員Fábio Castro通過推特發出警告稱,配置錯誤的Django應用程序會暴露諸如API密鑰、數據庫密碼或AWS訪問密鑰之類的敏感信息。 Castro表示,這種暴露的主要原因來自于服務器管理員沒有關閉Django應用程序的調試模式,而并非來自于Django應用程序本身,這是一種屬于由“人為原因”導致的數據泄露問題。 Django是一個非常強大且可自定
    2022年1月5日,360漏洞云團隊監測到Django發布安全公告,修復了多個存在于Django中的漏洞。 其中,1個中危漏洞,2個低危漏洞。
    Jumpserver 概述Jumpserver 是一款使用 Python, Django 開發的開源跳板機系統, 為互聯網企業提供了認證,授權,審計,自動化運維等功能。(LDAP 是輕量目錄訪問協議,英文全稱是 Lightweight Directory Access Protocol,一般都簡稱為 LDAP。它是基于 X.500 標準的,但是簡單多了并且可以根據需要定制。與 X.500 不同,LDAP 支持 TCP/IP,這對訪問 Internet 是必須的。LDAP 的核心規范在 RFC 中都有定義,所有與 LDAP 相關的 RFC 都可以在 LDAPman RFC 網頁中找到。
    漏洞復現利用腳本檢測是否存在漏洞并生成相對應的 cookie訪問主頁抓取數據包將生成的 session 替換原本的 session成功登錄接下來就是想辦法 getshell 網絡上的文章上是通過后臺數據庫執行語句來獲取權限。漏洞分析感覺這個漏洞有點像前段時間爆出來的 nacos 身份認證繞過漏洞 存在默認的密鑰SECRET_KEYS?
    2021年12月29日,360漏洞云團隊在互聯網上監測到一則關于Gerapy 0.9.8之前版本存在操作系統命令注入漏洞的信息。漏洞編號:CVE-2021-43857,漏洞威脅等級:嚴重。
    2021年11月26日,360漏洞云團隊在網上監測到一則關于Gerapy 0.9.6和之前的版本中存在注入漏洞的消息。360本地安全大腦,充分結合360漏洞云情報和客戶安全現狀,即將推出下一代安全解決方案。
    LangSrcCurise資產監控系統是一套通過網絡搜索引擎監控其下指定域名,并且能進行持續性信息收集整理的自動化資產監控管理系統,基于Django開發。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类