CMSmap: Enumerating WordPress, Joomla, and Drupal Like a Pro

When you’re testing a Content Management System (CMS) like WordPress, Joomla, or Drupal, your recon needs to go deeper than default credentials and login forms. This is where CMSmap comes in. It’s a Python-based scanner designed specifically for enumerating and testing known vulnerabilities in popular CMS platforms — and it can operate entirely offline.

This post covers what CMSmap does, when to use it, and how to make the most of it, especially during engagements where API access or internet connectivity isn’t guaranteed.

CMSmap is a CMS-focused vulnerability scanner written in Python. It supports:

  • WordPress
  • Joomla
  • Drupal

It can enumerate:

  • Users
  • Plugins
  • Themes
  • Known CVEs from its local database

It’s not as thorough as WPScan in terms of fingerprinting, but it’s fast, simple to use, and doesn’t require any API tokens. It’s especially useful during air-gapped assessments, offline labs, or certification exams where internet access is limited.

CMSmap isn’t built into Kali by default. To install it:

git clone https://github.com/Dionach/CMSmap.git
cd CMSmap
pip3 install -r requirements.txt

You can run it directly:

python3 cmsmap.py -h

Optional: Move it to your path to run it globally.

chmod +x cmsmap.py
sudo mv cmsmap.py /usr/local/bin/cmsmap
python3 cmsmap.py http://target.com -f W

-f W specifies WordPress as the target CMS.

python3 cmsmap.py http://target.com -f W --noedb

Useful when you’re working offline or want a fast scan without pulling data from Exploit-DB.

python3 cmsmap.py http://target.com -f W -u usernames.txt -p passwords.txt
python3 cmsmap.py http://target.com -f W -u users.txt -p pass.txt -F --noedb

-F enables a full scan, including known paths and brute-force attempts.

CMSmap uses a local file to enumerate plugins. You’ll find it here:

CMSmap/data/wordpress_plugins.txt

You can modify this file to add specific plugin names you want to check. Each line should correspond to a plugin directory, like:

akismet
wordfence
revslider

CMSmap attempts to detect these using typical plugin paths like:

/wp-content/plugins/plugin-name/

This is handy if you want to add plugins based on manual page source inspection.

  • CMSmap is noisy. It sends a lot of requests and is not suited for stealth assessments.
  • It doesn’t implement WAF evasion or rate-limiting techniques.
  • Plugin detection is based on brute-forcing plugin paths, not passive fingerprinting.
  • Joomla and Drupal support is more limited compared to WordPress.
  • It won’t always detect deeply hidden or obfuscated plugins.

CMSmap is a good fit when:

  • You’re working offline (e.g., CTFs, exams, isolated labs)
  • WPScan fails to find plugins or is blocked
  • You want a fast brute-force utility for CMS logins
  • You need a plugin scanner that doesn’t rely on external APIs

CMSmap is a lightweight but effective tool for CMS reconnaissance, especially for WordPress targets. While not a replacement for WPScan in all cases, its ability to function offline and its simplicity make it a reliable tool to have in your CMS enumeration workflow.

If you want to create a cheat sheet or a CMSmap vs. WPScan comparison guide, let me know and I’ll put it together.

Scroll to Top