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-2026-18937 — Proof-of-concept exploit and lab reproduction pack for CVE-2026-18937, an unauthenticated RCE in the Broken Link Checker WordPress plugin before 2.4.12. | Kitploit
Tools/GitHubGitHub/abraxas/cve-2026-18937
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingLearning & EducationRemote Access Tool
GitHubabraxas/cve-2026-18937

CVE-2026-18937

Proof-of-concept exploit and lab reproduction pack for CVE-2026-18937, an unauthenticated RCE in the Broken Link Checker WordPress plugin before 2.4.12.

View Repository
8h 10m 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

Abraxas Labs — CVE-2026-18937

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  CVE-2026-18937

CVE-2026-18937

Broken Link Checker 2.4.11 — Unknown

The Broken Link Checker WordPress plugin before 2.4.12 does not limit which query variables it accepts from user input on sites using plain permalinks, allowing unauthenticated users to overwrite arbitrary PHP global variables, and to execute arbitrary code on the server when a classic (non-block) is active.

CVECVE-2026-18937 · CVE.org
CWECWE-94
CVSSCritical: 9.0 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H
ProductBroken Link Checker
Affectedall versions through 2.4.11 (inclusive)
Patched2.4.12 and later
Authnone (see source map)
LicenseGNU Affero GPL v3.0
Lab127.0.0.1 only · vendor/client disclosure pack, not a scanner

Advisory (from the source map)

Query variable injection is Webhook::parse_request merging $_GET, not an ajax action=. HTTP is GET / with extra query keys.


Entry

  • Method: GET
  • Path: /?page_id=4&shortcode_tags[blcpoc]=poc_witness_18937
  • Router: Plain permalinks. Webhook::parse_request merges sanitize_array($_GET) into $wp->query_vars. WP::register_globals copies those keys into $GLOBALS, replacing $shortcode_tags. Front page the_content('[blcpoc]') then call_user_func(poc_witness_18937). Sidebar widgets cannot be used: wp_get_sidebars_widgets() reloads from options on the front. Lab canary, not a shell.
  • Notes: CVE-2026-18937 CWE-94: Broken Link Checker 2.4.11. 2.4.12 removes the $_GET merge. Requires empty permalink_structure and a classic theme that calls dynamic_sidebar. Witness is POCWitness18937 in the HTTP body.

Call chain

  • GET /?page_id=<front page id>&shortcode_tags[blcpoc]=poc_witness_18937
  • Webhook::parse_request (plain permalinks) → $wp->query_vars += $_GET
  • WP::register_globals → $GLOBALS['shortcode_tags']['blcpoc']=poc_witness_18937
  • the_content('[blcpoc]') → poc_witness_18937() → POCWitness18937

Lab preconditions

  • Broken Link Checker 2.4.11 active
  • permalink_structure empty (plain permalinks)
  • Classic theme Twenty Twenty-One (sidebar-1 / dynamic_sidebar)
  • mu-plugin function poc_witness_18937 (lab canary, not a gadget chain)

Witness

HTTP body contains POCWitness18937. Generic home HTML without that string is not it.

Not success

  • generic 200 hello world / block theme home HTML
  • pretty permalinks (merge skipped)
  • 403/404 without the witness
  • reverse shell or outbound connect
  • system()/exec() PHP payload

Patch / remediation

Do this first: Update Broken Link Checker to 2.4.12 or newer.

Verify after upgrade

  • Re-run CVE-2026-18937-Abraxas-Labs.py against the patched build: the mapped witness must not appear.
  • Confirm the vendor advisory / changeset in the deployed tree (see references).
  • A WAF signature is delay, not a patch.

If you cannot update immediately

  • Disable or isolate the affected component.
  • Hunt for the witness condition on production (new privileged users, unexpected files, injected rows — whatever this CVE's map names).

Reproduction (authorized lab)

Target only http://127.0.0.1:8088 (or the loopback you bound). Do not point this script at the internet.

root@kitploit:~
python3 CVE-2026-18937-Abraxas-Labs.py

Success is the witness above in the response body. Generic 200 HTML is not it.


Lab images

Loopback stack used to reproduce. Official images unless a Dockerfile in this folder builds from source.

  • lab/docker-compose.yml
  • lab/docker-compose.override.yml
  • lab/Dockerfile
root@kitploit:~
cd lab
docker compose up --force-recreate

Bind the vulnerable product tree next to Compose if the YAML mounts a local directory (plugin zip / source tag from the version table). Publish nothing except 127.0.0.1.


References

  • CVE-2026-18937 · NVD

  • CVE-2026-18937 · CVE.org

  • wpscan.com/vulnerability/a23b76eb-107d-4e02-8eae-c3c5fa5b003d/

  • github.com/advisories/GHSA-c2xc-88v3-37g2

  • nvd.nist.gov/vuln/detail/CVE-2026-18937

  • wpscan.com/vulnerability/a23b76eb-107d-4e02-8eae-c3c5fa5b003d

  • Plugin directory: broken-link-checker

  • Trac browser: plugins.trac.wordpress.org/broken-link-checker

  • SVN tags: plugins.svn.wordpress.org/broken-link-checker

  • Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null


Records (structured)

root@kitploit:~
# CVE-2026-18937  (structured records)

- input: `https://nvd.nist.gov/vuln/detail/CVE-2026-18937`
- CWE: CWE-94
- published: 2026-08-19T06:17:38.847

## NVD description

The Broken Link Checker WordPress plugin before 2.4.12 does not limit which query variables it accepts from user input on sites using plain permalinks, allowing unauthenticated users to overwrite arbitrary PHP global variables, and to execute arbitrary code on the server when a classic (non-block)  is active.

## MITRE description

The Broken Link Checker WordPress plugin before 2.4.12 does not limit which query variables it accepts from user input on sites using plain permalinks, allowing unauthenticated users to overwrite arbitrary PHP global variables, and to execute arbitrary code on the server when a classic (non-block)  is active.

## Affected

- Unknown Broken Link Checker 0 affected

## References (JSON sources only)

- https://wpscan.com/vulnerability/a23b76eb-107d-4e02-8eae-c3c5fa5b003d/
- https://github.com/advisories/GHSA-c2xc-88v3-37g2
- https://nvd.nist.gov/vuln/detail/CVE-2026-18937
- https://wpscan.com/vulnerability/a23b76eb-107d-4e02-8eae-c3c5fa5b003d

## GitHub advisory

The Broken Link Checker WordPress plugin before 2.4.12 does not limit which query variables it...

The Broken Link Checker WordPress plugin before 2.4.12 does not limit which query variables it accepts from user input on sites using plain permalinks, allowing unauthenticated users to overwrite arbitrary PHP global variables, and to execute arbitrary code on the server when a classic (non-block)  is active.

License

This disclosure pack is licensed under the GNU Affero General Public License v3.0. See LICENSE.


Disclaimer

This pack is for the vendor, the site owner, and licensed labs. The script talks to 127.0.0.1. Using it against systems you do not own is not authorized by Abraxas Labs. No warranty.

abraxaslabs.tech · github.com/abraxas · @abraxas_null

Download Tool