CMSeeK is a free, open source content management systems (cms) project written in Python and released under GPL-3.0. It has 2,594 GitHub stars, 515 forks and 36 open issues, and was last pushed 4 months ago. On this registry it ranks #31 of 70 tracked projects in Content Management Systems (CMS), with 5 head-to-head comparisons available. It gained 16 stars over the last 30 tracked days.

What is CMSeeK?

CMSeeK is a Python 3 command-line CMS detection and exploitation suite, licensed GPL-3.0, that fingerprints WordPress, Joomla, Drupal and more than 180 other content management systems and then probes the ones it finds for exposed versions, users, plugins, themes, backup files and known core vulnerabilities; it is built for penetration testers, security researchers and bug bounty hunters working on Unix-like systems.

What it is

CMSeeK is an open-source detection and exploitation framework written in Python 3 and published under the GPL-3.0 licence. It carries 2,578 stars and 521 forks with 36 open issues, and its topic list reads cms-detect, cms-detection, cms-bruteforce, drupal-bruteforce, joomla-bruteforce, exploitation-framework and content-management-system. The project lives in the CMS security tooling ecosystem and keeps its fingerprint database in cmseekdb, with every supported system stored in the cmss.py file as a dictionary entry holding a name, an official URL, a version detection flag and a deep scan flag.

The concrete problem it solves is the manual reconnaissance work that surrounds an unfamiliar CMS-driven site. Instead of reading HTTP headers, hunting for the generator meta tag, grepping page source, checking robots.txt and testing for exposed directories by hand, one run performs those five checks together and reports the CMS. Once the system is identified, CMSeeK replaces the separate version checker, user enumerator, plugin and theme lister, backup finder, admin page finder and config leak checker that an operator would otherwise assemble from unrelated scripts. A modular bruteforce system then handles credential testing through pre-made modules or modules written by the user and integrated into the tool.

Key capabilities

  • Detects over 180 CMS across five methods: HTTP headers, the generator meta tag, page source code, robots.txt and directory checks.
  • Stores fingerprints in cmseekdb/cmss.py as cmsID entries with name, url, vd (version detection, 0 or 1) and deeps (deep scan, 0 or 1), so the database is extendable by editing one file.
  • Runs advanced WordPress scans covering version detection, user enumeration through three detection methods, plugin enumeration, theme enumeration and lookups for version vulnerabilities.
  • Runs advanced Joomla scans covering version detection, a backup files finder, an admin page finder, core vulnerability detection, a directory listing check and config leak detection.
  • Performs Drupal version detection as a named capability.
  • Offers a modular bruteforce system that accepts pre-made modules or user-created ones.
  • Supports multi-site scanning through the -l/--list option, reading a file of targets either comma separated or one per line, with --batch to skip the enter prompt after each site and --skip-scanned to skip already-detected targets.
  • Controls request identity and routing with -r/--random-agent, --googlebot, --user-agent, --follow-redirect and --no-redirect, and suppresses noise with -i/--ignore--cms or --strict-cms.

Who uses it and how

  • Penetration testers and bug bounty hunters checking a single host run python3 cmseek.py -u example.com, or use python3 cmseek.py with no arguments for the guided scanning menu.
  • Assessment teams working through an estate keep targets in a file and run python3 cmseek.py -l /home/user/target.txt, adding --batch so no keypress is needed between sites and --skip-scanned to avoid re-testing hosts already fingerprinted.
  • Testers fighting false positives pin the CMS under test with --strict-cms or exclude known noise with -i/--ignore--cms, both accepting comma-separated CMS IDs.
  • Operators who need their traffic to look like ordinary browsing use --random-agent or --googlebot instead of the default user agent.
  • The tool targets Unix-like systems; the README states that Windows support will be added later, so Windows-based assessors run it through a compatible environment rather than natively.

Getting started

Install by cloning the repository with git clone https://github.com/Tuhinshubhra/CMSeeK, changing into the CMSeeK directory and running pip or pip3 install -r requirements.txt, then start with python3 cmseek.py for guided scanning or python3 cmseek.py -u with a target URL. Python 3 and git are required, and git is needed both for cloning and for the --update auto-update.

How it compares

The facts provided name no paid products this project replaces, and they name no comparable detection tools either, so CMSeeK stands alone in this registry. Anyone evaluating it should treat that absence as a gap in the surrounding directory rather than as evidence that no similar tools exist elsewhere.

When to use it — and when not to

Use it when the target is on a Unix-like host, Python 3 and git are available, and the engagement permits active scanning that includes bruteforce modules and exploitation-oriented checks; running those modules against systems without written authorisation is illegal. Do not pick it for Windows-native workflows, since support is listed as future work, and do not expect a maintained release train: the release history stops at version 1.1.3 dated 25-07-2020 even though the repository records a push on 2026-07-17. The documentation is also inconsistent about coverage, describing over 180 CMS in one place and 170+ in another, so the exact count should be verified against cmss.py rather than quoted from the README.

project readme (upstream, from github) — read inline

Logo
version Python Version GitHub stars GitHub license Twitter

What is a CMS?

A content management system (CMS) manages the creation and modification of digital content. It typically supports multiple users in a collaborative environment. Some noteable examples are: WordPress, Joomla, Drupal etc.

Release History

- Version 1.1.3 [25-07-2020]
- Version 1.1.2 [19-05-2019]
- Version 1.1.1 [01-02-2019]
- Version 1.1.0 [28-08-2018]
- Version 1.0.9 [21-08-2018]
- Version 1.0.8 [14-08-2018]
- Version 1.0.7 [07-08-2018]
...

Changelog File

Functions Of CMSeek:

  • Basic CMS Detection of over 180 CMS
  • Drupal version detection
  • Advanced Wordpress Scans
    • Detects Version
    • User Enumeration
    • Plugins Enumeration
    • Theme Enumeration
    • Detects Users (3 Detection Methods)
    • Looks for Version Vulnerabilities and much more!
  • Advanced Joomla Scans
    • Version detection
    • Backup files finder
    • Admin page finder
    • Core vulnerability detection
    • Directory listing check
    • Config leak detection
    • Various other checks
  • Modular bruteforce system
    • Use pre made bruteforce modules or create your own and integrate with it

Requirements and Compatibility:

CMSeeK is built using python3, you will need python3 to run this tool and is compitable with unix based systems as of now. Windows support will be added later. CMSeeK relies on git for auto-update so make sure git is installed.

Installation and Usage:

It is fairly easy to use CMSeeK, just make sure you have python3 and git (just for cloning the repo) installed and use the following commands:

  • git clone https://github.com/Tuhinshubhra/CMSeeK
  • cd CMSeeK
  • pip/pip3 install -r requirements.txt

For guided scanning:

  • python3 cmseek.py

Else:

  • python3 cmseek.py -u [...]

Help menu from the program:

USAGE:
       python3 cmseek.py (for guided scanning) OR
       python3 cmseek.py [OPTIONS] <Target Specification>

SPECIFING TARGET:
      -u URL, --url URL            Target Url
      -l LIST, --list LIST         Path of the file containing list of sites
                                   for multi-site scan (comma separated or one-per-line)

MANIPULATING SCAN:
      -i cms, --ignore--cms cms    Specify which CMS IDs to skip in order to
                                   avoid flase positive. separated by comma ","

      --strict-cms cms             Checks target against a list of provided
                                   CMS IDs. separated by comma ","

      --skip-scanned               Skips target if it's CMS was previously detected.

RE-DIRECT:
      --follow-redirect            Follows all/any redirect(s)
      --no-redirect                Skips all redirects and tests the input target(s)

USER AGENT:
      -r, --random-agent           Use a random user agent
      --googlebot                  Use Google bot user agent
      --user-agent USER_AGENT      Specify a custom user agent

OUTPUT:
      -v, --verbose                Increase output verbosity

VERSION & UPDATING:
      --update                     Update CMSeeK (Requires git)
      --version                    Show CMSeeK version and exit

HELP & MISCELLANEOUS:
      -h, --help                   Show this help message and exit
      --clear-result               Delete all the scan result
      --batch                      Never ask you to press enter after every site in a list is scanned

EXAMPLE USAGE:
      python3 cmseek.py -u example.com                           # Scan example.com
      python3 cmseek.py -l /home/user/target.txt                 # Scan the sites specified in target.txt (comma separated)
      python3 cmseek.py -u example.com --user-agent Mozilla 5.0  # Scan example.com using custom user-Agent Mozilla is 5.0 used here
      python3 cmseek.py -u example.com --random-agent            # Scan example.com using a random user-Agent
      python3 cmseek.py -v -u example.com                        # enabling verbose output while scanning example.com

Checking For Update:

You can check for update either from the main menu or use python3 cmseek.py --update to check for update and apply auto update.

P.S: Please make sure you have git installed, CMSeeK uses git to apply auto update.

Detection Methods:

CMSeek detects CMS via the following:

  • HTTP Headers
  • Generator meta tag
  • Page source code
  • robots.txt
  • Directory check

Supported CMSs:

CMSeeK currently can detect 170+ CMS. Check the list here: cmss.py file which is present in the cmseekdb directory. All the cmss are stored in the following way:

 cmsID = {
   'name':'Name Of CMS',
   'url':'Official URL of the CMS',
   'vd':'Version Detection (0 for no, 1 for yes)',
   'deeps':'Deep Scan (0 for no 1 for yes)'
 }

Scan Result:

All of your scan results are stored in a json file named cms.json, you can find the logs inside the Result\ directory, and as of the bruteforce results they're stored in a txt file under the site's result directory as well.

Here is an example of the json report log:

Json Log

Bruteforce Modules:

CMSeek has a modular bruteforce system meaning you can add your custom made bruteforce modules to work with cmseek. A proper documentation for creating modules will be created shortly but in case you already figured out how to (pretty easy once you analyze the pre-made modules) all you need to do is this:

  1. Add a comment exactly like this # Bruteforce module. This will help CMSeeK to know the name of the CMS using regex

  2. Add another comment ### cmseekbruteforcemodule, this will help CMSeeK to know it is a module

  3. Copy and paste the module in the brutecms directory under CMSeeK's directory

  4. Open CMSeeK and Rebuild Cache using R as the input in the first menu.

  5. If everything is done right you'll see something like this (refer to screenshot below) and your module will be listed in bruteforce menu the next time you open CMSeeK.

Cache Rebuild Screenshot

Need More Reasons To Use CMSeeK?

If not anything you can always enjoy exiting CMSeeK (please don't), it will bid you goodbye in a random goodbye message in various languages.

Also you can try reading comments in the code those are pretty random and weird!!!

Screenshots:

Main Menu
Main Menu
Scan Result
Scan Result
WordPress Scan Result
WordPress Scan Result

Guidelines for opening an issue:

Please make sure you have the following info attached when opening a new issue:

  • Target
  • Exact copy of error or screenshot of error
  • Your operating system and python version

Issues without these informations might not be answered!

Disclaimer:

Usage of CMSeeK for testing or exploiting websites without prior mutual consistency can be considered as an illegal activity. It is the final user's responsibility to obey all applicable local, state and federal laws. Authors assume no liability and are not responsible for any misuse or damage caused by this program.

License:

CMSeeK is licensed under GNU General Public License v3.0

Follow Me @r3dhax0r:

Twitter

Frequently asked questions

Is CMSeeK free to use?

CMSeeK is open source under the GPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does CMSeeK do?

CMS Detection and Exploitation suite - Scan WordPress, Joomla, Drupal and over 180 other CMSs

What is CMSeeK written in?

CMSeeK is primarily written in Python. Its source is publicly available at https://github.com/Tuhinshubhra/CMSeeK, and it has 2,594 GitHub stars.