CMSmap
CMSmap is a python open source CMS scanner that automates the process of detecting security flaws of the most popular CMSs.
Top Related Projects
WPScan WordPress security scanner. Written for security professionals and blog maintainers to test the security of their WordPress websites. Contact us via contact@wpscan.com
A plugin-based scanner that aids security researchers in identifying issues with several CMSs, mainly Drupal & Silverstripe.
CMS Detection and Exploitation suite - Scan WordPress, Joomla, Drupal and over 180 other CMSs
OWASP Joomla Vulnerability Scanner Project https://www.secologist.com/
Nikto web server scanner
CORS Misconfiguration Scanner
Quick Overview
CMSmap is an open-source Python tool designed for scanning WordPress, Joomla, and Drupal Content Management Systems (CMS) for security vulnerabilities. It automates the process of detecting security issues, misconfigurations, and version information in these popular CMS platforms, making it a valuable asset for penetration testers and security researchers.
Pros
- Supports multiple CMS platforms (WordPress, Joomla, Drupal)
- Automated scanning for common vulnerabilities and misconfigurations
- Regularly updated to include new vulnerability checks
- User-friendly command-line interface
Cons
- May produce false positives in some cases
- Requires careful use to avoid unintended impact on target systems
- Limited to specific CMS platforms, not a general-purpose web vulnerability scanner
- Depends on the accuracy and timeliness of its vulnerability database
Code Examples
# Example 1: Basic scan of a WordPress site
python cmsmap.py https://example.com -f W
# Example 2: Drupal scan with increased verbosity
python cmsmap.py https://example.com -f D -v
# Example 3: Joomla scan with custom user agent
python cmsmap.py https://example.com -f J -a "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
# Example 4: WordPress scan with brute force attack
python cmsmap.py https://example.com -f W -b
Getting Started
-
Clone the repository:
git clone https://github.com/dionach/CMSmap.git
-
Install dependencies:
cd CMSmap pip install -r requirements.txt
-
Run a basic scan:
python cmsmap.py https://target-website.com
-
For more options, use the help command:
python cmsmap.py -h
Note: Always ensure you have permission to scan the target website and use this tool responsibly and ethically.
Competitor Comparisons
WPScan WordPress security scanner. Written for security professionals and blog maintainers to test the security of their WordPress websites. Contact us via contact@wpscan.com
Pros of WPScan
- More comprehensive WordPress-specific scanning capabilities
- Larger and more active community, resulting in frequent updates
- Extensive database of WordPress vulnerabilities
Cons of WPScan
- Limited to WordPress sites only
- Requires Ruby installation, which may be less convenient for some users
Code Comparison
WPScan (Ruby):
def scan_headers
puts 'Scanning headers...'
# Header scanning logic
end
CMSmap (Python):
def scan_headers():
print("Scanning headers...")
# Header scanning logic
Key Differences
- CMSmap supports multiple CMS platforms (WordPress, Joomla, Drupal), while WPScan focuses solely on WordPress
- WPScan offers more in-depth WordPress vulnerability scanning
- CMSmap is written in Python, making it potentially easier to integrate with other Python-based tools
- WPScan has a larger user base and more frequent updates
Use Cases
- Choose WPScan for dedicated WordPress security assessments
- Opt for CMSmap when dealing with multiple CMS platforms or prefer Python-based tools
Both tools are valuable for web application security testing, with WPScan excelling in WordPress-specific scenarios and CMSmap offering broader CMS coverage.
A plugin-based scanner that aids security researchers in identifying issues with several CMSs, mainly Drupal & Silverstripe.
Pros of droopescan
- Focuses specifically on Drupal, offering more targeted and in-depth scanning capabilities for this CMS
- Provides a plugin system, allowing for easy extension and customization of scanning functionality
- Offers a more user-friendly command-line interface with clear options and output
Cons of droopescan
- Limited to Drupal, while CMSmap supports multiple CMS platforms (WordPress, Joomla, Drupal)
- Less actively maintained, with fewer recent updates compared to CMSmap
- Smaller community and fewer contributors, potentially leading to slower bug fixes and feature additions
Code Comparison
droopescan:
def enumerate_plugins(self):
plugins = self.plugins_get()
for plugin in plugins:
self.check_plugin(plugin)
CMSmap:
def scanPlugins(self):
for plugin in self.plugins:
self.verbose('[+] Checking plugin: ' + plugin)
self.checkPlugin(plugin)
Both projects use similar approaches for plugin enumeration, but droopescan's code appears more concise and focused on Drupal-specific functionality, while CMSmap's code is designed to work across multiple CMS platforms.
CMS Detection and Exploitation suite - Scan WordPress, Joomla, Drupal and over 180 other CMSs
Pros of CMSeeK
- Supports a wider range of CMS detection (over 180 CMSs)
- More actively maintained with frequent updates
- Includes additional features like theme and plugin detection
Cons of CMSeeK
- Slower scanning speed compared to CMSmap
- May produce more false positives due to its extensive detection methods
- Requires more dependencies and setup
Code Comparison
CMSeeK:
def detect_cms(self):
for cms in self.cms_list:
if cms.detect(self.url):
return cms
return None
CMSmap:
def fingerprint(self):
for cms in self.cms_list:
if cms.check(self.url):
return cms
return None
Both tools use similar approaches for CMS detection, iterating through a list of supported CMSs and checking for matches. However, CMSeeK's implementation is more extensive, with a larger variety of detection methods and a more comprehensive CMS database.
CMSeeK offers broader CMS coverage and additional features, making it suitable for thorough scans. CMSmap, on the other hand, provides faster scanning with potentially fewer false positives, making it ideal for quick assessments. The choice between the two depends on the specific requirements of the user and the scanning context.
OWASP Joomla Vulnerability Scanner Project https://www.secologist.com/
Pros of joomscan
- Specifically designed for Joomla, offering more targeted and in-depth scanning
- Regularly updated with the latest Joomla vulnerabilities
- Supports both command-line and interactive modes for flexibility
Cons of joomscan
- Limited to Joomla CMS, while CMSmap supports multiple CMS platforms
- Less comprehensive in terms of general web application security testing
- May require more manual configuration for advanced scans
Code Comparison
CMSmap (Python):
def fingerprint(self):
self.fingerprint_from_headers()
self.fingerprint_from_source()
self.fingerprint_from_robots()
self.fingerprint_from_readme()
joomscan (Perl):
sub main {
my $target = $ARGV[0];
my $method = $ARGV[1];
my $update = $ARGV[2];
if($target){
&update if($update);
&start;
}
}
Both tools use different programming languages and approaches. CMSmap focuses on multiple fingerprinting methods, while joomscan's main function handles command-line arguments and initiates the scanning process. CMSmap offers a more generalized approach, whereas joomscan is tailored specifically for Joomla vulnerabilities.
Nikto web server scanner
Pros of Nikto
- More comprehensive scanning capabilities, covering a wider range of web vulnerabilities
- Actively maintained with regular updates and a large user community
- Extensive plugin system for customization and extended functionality
Cons of Nikto
- Slower scanning speed compared to CMSmap
- May generate more false positives, requiring manual verification
- Less focused on CMS-specific vulnerabilities
Code Comparison
Nikto (Perl):
sub nikto_headers {
my ($mark) = @_;
my %headers;
foreach my $header (split(/\n/, $mark->{'headers'})) {
my ($key, $value) = split(/:\s*/, $header, 2);
$headers{lc($key)} = $value if defined $key && defined $value;
}
return %headers;
}
CMSmap (Python):
def get_headers(self):
headers = {}
for header in self.headers.split('\n'):
if ':' in header:
key, value = header.split(':', 1)
headers[key.strip().lower()] = value.strip()
return headers
Both code snippets handle HTTP headers, but Nikto uses Perl while CMSmap uses Python. Nikto's implementation is slightly more concise, while CMSmap's is more explicit in its string manipulation.
CORS Misconfiguration Scanner
Pros of Corsy
- Focuses specifically on CORS misconfigurations, providing more in-depth analysis
- Offers a wider range of CORS-related checks and vulnerability detection
- Includes features like automatic payload generation and reporting
Cons of Corsy
- Limited to CORS-related issues, while CMSmap covers a broader range of CMS vulnerabilities
- May require more manual interpretation of results compared to CMSmap's straightforward output
- Less actively maintained, with fewer recent updates
Code Comparison
CMSmap example:
def genericDetect(self):
response = self.httpRequest(self.url)
if response:
for cms in self.cmss:
if cms.lower() in response.content.lower():
return cms
return None
Corsy example:
def cors(url, headers, get, post):
response = requester(url, headers, get, post)
methods = response.headers.get('Access-Control-Allow-Methods')
if methods:
print('%s Access-Control-Allow-Methods: %s' % (good, methods))
else:
print('%s Access-Control-Allow-Methods header not present' % bad)
Both repositories provide security testing tools, but with different focuses. CMSmap is designed for detecting and exploiting vulnerabilities in content management systems, while Corsy specializes in identifying CORS misconfigurations. The code examples highlight their distinct approaches, with CMSmap performing generic CMS detection and Corsy analyzing CORS-specific headers.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
CMSmap
CMSmap is a python open source CMS scanner that automates the process of detecting security flaws of the most popular CMSs. The main purpose of CMSmap is to integrate common vulnerabilities for different types of CMSs in a single tool.
At the moment, CMSs supported by CMSmap are WordPress, Joomla, Drupal and Moodle.
Please note that this project is an early state. As such, you might find bugs, flaws or mulfunctions. Use it at your own risk!
Preview
Installation
You can download the latest version of CMSmap by cloning the GitHub repository:
git clone https://github.com/Dionach/CMSmap
Then you need to configure the edbtype
and edbpath
settings in the cmsmap.conf
. Use GIT
if you have a local Git repository of Exploit-db :
[exploitdb]
edbtype = GIT
edbpath = /opt/exploitdb/
Alternatively, use APT
if you have installed the debian
exploitdb package. For Kali, use the following settings :
[exploitdb]
edbtype = APT
edbpath = /usr/share/exploitdb/
If you would like to run cmsmap
from anywhere in your system you can install it with pip3
:
cd CMSmap
pip3 install .
To uninstall it :
pip3 uninstall cmsmap -y
Usage
usage: cmsmap [-f W/J/D] [-F] [-t] [-a] [-H] [-i] [-o] [-E] [-d] [-u] [-p]
[-x] [-k] [-w] [-v] [-h] [-D] [-U W/J/D]
[target]
CMSmap tool v1.0 - Simple CMS Scanner
Author: Mike Manzotti
Scan:
target target URL (e.g. 'https://example.com:8080/')
-f W/J/D, --force W/J/D
force scan (W)ordpress, (J)oomla or (D)rupal
-F, --fullscan full scan using large plugin lists. False positives and slow!
-t , --threads number of threads (Default 5)
-a , --agent set custom user-agent
-H , --header add custom header (e.g. 'Authorization: Basic ABCD...')
-i , --input scan multiple targets listed in a given file
-o , --output save output in a file
-E, --noedb enumerate plugins without searching exploits
-c, --nocleanurls disable clean urls for Drupal only
-s, --nosslcheck don't validate the server's certificate
-d, --dictattack run low intense dictionary attack during scanning (5 attempts per user)
Brute-Force:
-u , --usr username or username file
-p , --psw password or password file
-x, --noxmlrpc brute forcing WordPress without XML-RPC
Post Exploitation:
-k , --crack password hashes file (Require hashcat installed. For WordPress and Joomla only)
-w , --wordlist wordlist file
Others:
-v, --verbose verbose mode (Default false)
-h, --help show this help message and exit
-D, --default rum CMSmap with default options
-U, --update use (C)MSmap, (P)lugins or (PC) for both
Examples:
cmsmap.py https://example.com
cmsmap.py https://example.com -f W -F --noedb -d
cmsmap.py https://example.com -i targets.txt -o output.txt
cmsmap.py https://example.com -u admin -p passwords.txt
cmsmap.py -k hashes.txt -w passwords.txt
Contribution guidelines
If you want to contribute to CMSmap, be sure to review the contribution guidelines.
Disclaimer
Usage of CMSmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume NO liability and are NOT responsible for any misuse or damage caused by this program.
Top Related Projects
WPScan WordPress security scanner. Written for security professionals and blog maintainers to test the security of their WordPress websites. Contact us via contact@wpscan.com
A plugin-based scanner that aids security researchers in identifying issues with several CMSs, mainly Drupal & Silverstripe.
CMS Detection and Exploitation suite - Scan WordPress, Joomla, Drupal and over 180 other CMSs
OWASP Joomla Vulnerability Scanner Project https://www.secologist.com/
Nikto web server scanner
CORS Misconfiguration Scanner
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot