id: symfony-fragment

info:
  name: Symfony _fragment - Detect
  author: Palanichamy_perumal,TechbrunchFR
  severity: unknown
  description: |
    Symfony servers support a "/_fragment" command that allows clients to provide custom PHP commands and return the HTML output.
  reference: |
    - https://portswigger.net/daily-swig/symfony-based-websites-open-to-rce-attack-research-finds
    - https://medium.com/@m4cddr/how-i-got-rce-in-10-websites-26dd87441f22
    - https://al1z4deh.medium.com/how-i-hacked-28-sites-at-once-rce-5458211048d5
    - https://github.com/ambionics/symfony-exploits
  metadata:
    verified: true
    max-request: 1
    shodan-query: http.html:"symfony Profiler"
  tags: config,exposure,symfony,misconfig

http:
  - method: GET
    path:
      - '{{BaseURL}}/_fragment'

    matchers-condition: and
    matchers:
      - type: dsl
        dsl:
          - "status_code == 403"
          - "contains(body, 'Symfony') || contains(body, '403 Forbidden')"
          - "(\"8b2f83102bc96e5068d36df80301a64d\" == md5(body)) || (\"4df206fbc337c398c3b669172934c8cb\" == md5(body))"
        condition: and

# digest: 490a0046304402202aae05b954b4e09d833cb11b5a201d4e5ecd6580bb6d79385fc3affcd8fae7fd022046c21c2cf4d84f67373859c47a19d36990e10c35abf35b91232125584d1591cd:922c64590222798bb761d5b6d8e72950
