cmseek

Framework de détection et d'exploitation de CMS. Identifie WordPress, Joomla, Drupal et 170+ autres CMS, puis réalise détection de version, énumération d'utilisateurs et vérification de vulnérabilités. CMS detection and exploitation framework. Identifies WordPress, Joomla, Drupal, and 170+ other CMSs, then performs version detection, user enumeration, and vulnerability checking.

↗ https://github.com/Tuhinshubhra/CMSeeK

Overview

CMSeeK detects the CMS (Content Management System) powering a website and performs targeted enumeration. For WordPress it finds plugins, themes, users, and known vulnerabilities. For Joomla and Drupal it enumerates components and modules. Covers 170+ CMS platforms.

Installation

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

Basic Usage

Detect and enumerate a single site

python3 cmseek.py -u https://example.com

Batch scan from file

python3 cmseek.py -l targets.txt

Force specific CMS detection (skip auto-detect)

python3 cmseek.py -u https://example.com --cms wp

Random user agent

python3 cmseek.py -u https://example.com --random-agent

Follow redirects

python3 cmseek.py -u https://example.com --follow-redirect

WordPress Detection

Full WordPress scan

python3 cmseek.py -u https://wordpress-site.com --cms wp
# What it finds for WordPress:
# - Version (from generator meta, readme.html, feed)
# - Installed plugins (from /wp-content/plugins/)
# - Installed themes (from /wp-content/themes/)
# - Users (from /wp-json/wp/v2/users, author enumeration)
# - Known vulnerabilities (WPScan integration)
# - Admin panel location (/wp-admin/)
# - XML-RPC status (/xmlrpc.php)
# - User registration status

CMS-Specific Modules

WordPress

python3 cmseek.py -u https://site.com --cms wp

Joomla

python3 cmseek.py -u https://site.com --cms joomla

Drupal

python3 cmseek.py -u https://site.com --cms drupal

Magento (e-commerce)

python3 cmseek.py -u https://site.com --cms magento

Auto-detect (default)

python3 cmseek.py -u https://site.com

Results

# Results are saved to:
# CMSeeK/Result/<domain>/cms.json

View results

cat CMSeeK/Result/example.com/cms.json | python3 -m json.tool
# Sample output:
{
  "cms_id": "wordpress",
  "cms_version": "6.3.1",
  "users": ["admin", "editor", "john"],
  "plugins": {
    "contact-form-7": {"version": "5.7.7"},
    "woocommerce": {"version": "7.9.0", "vuln": true}
  }
}

Follow-Up Actions

After CMSeeK finds WordPress: 1. Deeper scan with wpscan

wpscan --url https://example.com --enumerate p,t,u --api-token YOUR_TOKEN
  1. Test XML-RPC for brute-force (if /xmlrpc.php is accessible)
wpscan --url https://example.com --passwords rockyou.txt --usernames admin
  1. Check vulnerable plugins with searchsploit
searchsploit "contact form 7 5.7"

Tips

  • CMSeeK is a good quick first-pass; wpscan is deeper for WordPress-specific work
  • Check readme.html and CHANGELOG.txt manually — they often reveal exact versions
  • WordPress user enumeration via /wp-json/wp/v2/users gives valid login names
  • XML-RPC enabled = brute-force target with no lockout on some configurations
Help / Man page
cmseek.py [options]

-u URL          Target URL
-l FILE         List of URLs to scan
--cms CMS       Force CMS: wp, joomla, drupal, magento, etc.
--follow-redirect  Follow HTTP redirects
--random-agent  Use random user agent
--no-redirect   Don't follow redirects
--light         Light scan (detection only, no deep enum)

Vue d’ensemble

CMSeeK détecte le CMS (Content Management System) derrière un site web et effectue une énumération ciblée. Pour WordPress, il trouve plugins, thèmes, utilisateurs et vulnérabilités connues. Pour Joomla et Drupal, il énumère composants et modules. Couvre 170+ plateformes CMS.

Installation

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

Utilisation de base

# Détecter et énumérer un seul site
python3 cmseek.py -u https://example.com

# Scan par lot depuis un fichier
python3 cmseek.py -l targets.txt

# Forcer la détection d'un CMS précis (sauter l'auto-détection)
python3 cmseek.py -u https://example.com --cms wp

# User agent aléatoire
python3 cmseek.py -u https://example.com --random-agent

# Suivre les redirections
python3 cmseek.py -u https://example.com --follow-redirect

Détection de WordPress

# Scan WordPress complet
python3 cmseek.py -u https://wordpress-site.com --cms wp
# Ce qu'il trouve pour WordPress :
# - Version (depuis la meta generator, readme.html, le feed)
# - Plugins installés (depuis /wp-content/plugins/)
# - Thèmes installés (depuis /wp-content/themes/)
# - Utilisateurs (depuis /wp-json/wp/v2/users, énumération d'auteurs)
# - Vulnérabilités connues (intégration WPScan)
# - Emplacement du panneau d'admin (/wp-admin/)
# - État de XML-RPC (/xmlrpc.php)
# - État de l'inscription des utilisateurs

Modules par CMS

# WordPress
python3 cmseek.py -u https://site.com --cms wp

# Joomla
python3 cmseek.py -u https://site.com --cms joomla

# Drupal
python3 cmseek.py -u https://site.com --cms drupal

# Magento (e-commerce)
python3 cmseek.py -u https://site.com --cms magento

# Auto-détection (par défaut)
python3 cmseek.py -u https://site.com

Résultats

# Les résultats sont sauvegardés dans :
# CMSeeK/Result/<domain>/cms.json
# Voir les résultats
cat CMSeeK/Result/example.com/cms.json | python3 -m json.tool
# Exemple de sortie :
{
  "cms_id": "wordpress",
  "cms_version": "6.3.1",
  "users": ["admin", "editor", "john"],
  "plugins": {
    "contact-form-7": {"version": "5.7.7"},
    "woocommerce": {"version": "7.9.0", "vuln": true}
  }
}

Actions de suivi

# Après que CMSeeK a trouvé WordPress :
# 1. Scan plus poussé avec wpscan
wpscan --url https://example.com --enumerate p,t,u --api-token YOUR_TOKEN

# 2. Tester XML-RPC pour du brute-force (si /xmlrpc.php est accessible)
wpscan --url https://example.com --passwords rockyou.txt --usernames admin

# 3. Vérifier les plugins vulnérables avec searchsploit
searchsploit "contact form 7 5.7"

Conseils

  • CMSeeK est un bon premier passage rapide ; wpscan est plus poussé pour le travail spécifique à WordPress
  • Vérifiez readme.html et CHANGELOG.txt manuellement : ils révèlent souvent les versions exactes
  • L’énumération d’utilisateurs WordPress via /wp-json/wp/v2/users donne des noms de connexion valides
  • XML-RPC activé = cible de brute-force sans verrouillage sur certaines configurations
Aide / Page de manuel
cmseek.py [options]

-u URL          Target URL
-l FILE         List of URLs to scan
--cms CMS       Force CMS: wp, joomla, drupal, magento, etc.
--follow-redirect  Follow HTTP redirects
--random-agent  Use random user agent
--no-redirect   Don't follow redirects
--light         Light scan (detection only, no deep enum)