Additionally, penetration testers or red teams needing to exploit Joomla targets will also find practical hints in this guide.

Contents
Introduction to Joomla Security
In 2025, Joomla continues to be a widely-used open-source content management system (CMS), though this has declined over the last decade. Today, Joomla sits around 2.5% of all CMS-powered websites which represents around 2 million websites globally.
Joomla's ease of use, free licensing, and flexible architecture, enhanced through 'extensions' much like WordPress plugins, make it a highly capable CMS. This popularity also makes Joomla a frequent target for attackers seeking to exploit vulnerable websites for malicious purposes. Many security issues stem from poor security hygiene, outdated installations, weak or reused passwords, insecure or poorly maintained extensions.
Understanding these risks are the first step in securing your Joomla site.
Enumeration and Reconnaissance
The first step in assessing a Joomla-powered site is technical reconnaissance, ie gather as much technical information as possible about how the site is configured. This information forms the foundation for identifying vulnerabilities and working out potential attack vectors.
Now is the time to put yourself in the hacker's mindset. Whether performed passively or actively, reconnaissance helps defenders understand what a real-world attacker might see. This may involve:
- Passive inspection: use standard HTTP requests to gather metadata and configuration details.
- Aggressive probing: techniques such as directory brute-forcing could uncover and identify exposed components, extensions or misconfigurations.
- Joomla Identification & Version
- Identifying Installed Joomla Extensions
- Modules
- Components
- Templates
- Plugins
- Languages
- Joomla Template Enumeration
- Joomla User Enumeration
- Managers: content creation and backend system info.
- Administrators: Elevated access, admin functions excluding global options.
- Super Users/Administrator: ultimate power. Access all areas.
- Directory Indexing
- Network Service Discovery
FTP
SSH
Webmin
HTTP/HTTPS
- Bypass Sucuri or CloudFlare Web Firewall
- Joomla enumeration and vulnerability scanning tools
- Brute Force Joomla logins
- Exploit Joomla Extensions
To determine if the site is running Joomla, and identify the Joomla Core version, several straightforward methods can be used.
1. Meta Generator
One of the simplest ways to detect Joomla is inspecting the page's HTML source code. Look for the meta generator
tag in the HEAD
section.
<meta name="generator" content="Joomla! - Open Source Content Management" />
This example is taken from the source of a default Joomla install however, some site admins remove or modify this for security reasons.
2. joomla.xml
To identify the version in use, check the joomla.xml
file located within the directory /administrator/manifests/files/
https://www.joomla.org/administrator/manifests/files/joomla.xml
This file typically contains version metadata such as:

If this is accessible, this will give an accurate core version, but security admins often block access to this path.
3. Language File Disclosure
Another, sometimes overlooked source is the language
XML file.
https://example.site/language/en-GB/en-GB.xml
Example entry:
<version> 3.6.5 </version>
This method can be effective even if other version indicators are hidden.
4. Version in README.txt
Check for the presence of /README.txt
from the web root of the install. While it may not include the full version number, it will, usually, reveal the major release e.g. 4.x at the top of the ReadMe file which helps narrow down the attack surface.

5. Automated Joomla Detection Tools
In addition to the manual checks listed above, automated fingerprinting tools can be used to quickly identify whether a site is running Joomla and show other technologies. Using the passive options with Whatweb and Wappalyser, these tools analyse HTTP headers, file paths, and HTML signatures to detect CMS platforms and components.
Risks of an outdated Joomla installation
These version discovery techniques are commonly used by attackers. Regularly auditing your Joomla installation for explosed metadata and unprotected files is essential in reducing your security footprint.
If an attacker discovers a site running an outdated Joomla core, it may be vulnerable to known security exploit. These publicly documented exploits can often be used directly, especially if the site hasn't applied patches.
Outdated core versions can be indicative of a poorly maintained site, which can extend to other components, such as extensions, templates, and backup files. These may also be unpatched or misconfigured, which increases the likelihood of a successful attack. An unmaintained Joomla site presents a significantly expanded attack surface.
Like WordPress plugins, Joomla's functionality is extended through "Extensions", these fall into several categories:
Each can introduce vulnerabilities when poorly coded or outdated. An common example unauthenticated users having access to the same features as logged-in (authenticated) users.
The goal of extension Enumeration is attempting to identify as many installed extensions as possible, including disabled or inactive ones. This information is valuable for discovering known vulnerabilities by checking versions against public exploit databases.
Limitations
Visibility of all installed extensions typically requires administrator access. Without this access, attackers or those testing the site can only rely on other methods, both passive and active, to enumerate extensions.
If you're looking for all extensions in a Joomla installation, you need to check multiple directories since different extension types are stored in different locations.
Passive
Hints to extensions present in a site may be found in the HTML source of the page. For example, information may appear in Javascript files, CSS files or comments on the page source. Once an extension is identified, additional details, such as version info, author, files, database tables, and installation instructions, can sometimes be gathered from the manifest file /components/com_example/manifest.xml .
Active
Some extensions do not leave traces in the HTML source. To discover installed extensions you may have to be more aggressive. Several tools can brute force Joomla paths using known extension/component names. There is no one size fits all when it comes to Joomla. Using a combination of available tools will get the best results.
One example is the Metasploit Joomla Plugin Scanner. This metasploit
auxiliary module uses a wordlist
to locate valid paths scanning for extensions and identify known vulnerabilities.
Vulnerability reference
Joomla maintains a live resource called - The Joomla Vulnerable Extensions List (VEL). This list tracks vulnerable extensions for which no patch is known to exist. It is strongly recommended to uninstall these extension from you site. A separate list 'Resolved Vel' includes extensions that have a patch available. Check this list and patch / update as necessary.
Extension Version Enumeration
You have compiled a list of extensions of the site, now for the version. The design of Joomla means this information isn't forthcoming or comprehensive, especially when attempting to find it passively.
It is possible version numbers can be found in an extensions manifest file or other within such as the addon's stylesheets
or javascript
. While inconsistent, these areas may provide enough information to help with recon.
With a valid version you can compare what has been found against known exploits or the Jooma VEL List. This comparison will attest if the site is likely vulnerable, before throwing any exploits.
As with extensions, Joomla Templates can contain vulnerabilities that may expose the site to compromise. Templates are simply collections of PHP, HTML, CSS and JavaScript resources to define a site's design but more Complex templates have additional components and code, increasing the likelihood of security vulnerabilities.
Template Enumeration is similar to extension detection. Inspect the HTML and locate the template. Alternatively, run a passive scan on Hacker Target's Joomla Security Scan and scroll through results to find the Joomla Template.

Detecting inactive but accessible templates
One important point when testing is that Joomla Templates and components may still be installed even if they are not active. And if accessible, and vulnerable, can still be exploited. For this reason, brute-force enumeration of known template paths during an assessment is a possible additional step when assessing an unknown Joomla installation.
Gaining access to Joomla's administrator panel can result in the full compromise of the site. Including database access and remote code execution (RCE) via PHP. Attackers will attempt to enumerate usernames before deploying a password guessing attack.
Administrator Login Page
A quick tip is first see if the Administrator login page is publicly exposed.
https://exampledomain.com/administrator
or run a basic curl command to check if admin panel is publicly accessible:
curl -I https://exampledomain.com/administrator/
if response is
HTTP/1.1 200 OK
Then login page is exposed and publicly available. However, hardened Joomla set ups will return a 403
or redirect to main site to hide the admin panel. If accessible, this page becomes a target for brute-force or credential-stuffing attacks.
User enumeration challenges in Joomla
Unlike WordPress, where simple techniques like WordPress User Enumeration can expose valid usernames, Joomla doesn't make is as easy. There are no default endpoints for listing users, and login forms do not reveal whether a username or password is incorrect.
However, most Joomla installs create a Super Administrator account with the default name of admin
. As part of the install, Joomla requests a password for this account and encourages changing the name of the account from 'admin' to something more difficult to guess, but many users leave it unchanged. This makes admin
a good starting point for username guessing.

Privileged User roles Joomla
Joomla defines 3 privileged user groups which have access to the control panel:
From version 3.2 onwards two-factor authentication (2FA) is available and can be enabled from the User Manager in the Control Panel. By enabling this, it increases login security and reduces the effectiveness of brute-force attacks.
Password Re-use and Breach Datasets
A common technique used in targeted attacks is mining public or breached datasets for credentials associated with the target. Its not uncommon for users to reuse passwords across platforms and sites. If a Joomla username is guessed or leaked, previously breached passwords can be tested. However, Joomla doesn't easily expose user lists or login info.
Directory listing occurs when a a misconfigured server allows public browsing of the folder contents of a directory in a web browser. Instead of doing a redirect or returning a 403 Forbidden, the responds with a 200 OK and shows a list of files with the directory.
Viewing the contents of the directory allows an attacker to gather sensitive information not intended for public viewing about the existence and contents of the files. Such as hidden files, backup files, config files, plugins, and templates, without the need to brute force the paths.
How to check for directory listing
Start by browsing to Joomla-related folders and see if list of files / folders in the browser.

If enabled the browser returns a list of files and subdirectories. These can then be explored further.
Beyond the web app itself, assessing the wider attack surface is important. The most common method to discover what services are running is port scanning.
A scan with a tool like Nmap can reveal open ports and services listening on the server such as:
Working from these results, an attacker can identify server applications, version numbers and look for exploitation opportunities.
While Nmap and other tools similar are effective for discovery they are active and therefore noisy and can be detected by firewalls, IDS and server logs. Even when using stealth modes such as -sS
and -T1
, scans still generate network traffic.
Consider starting with passive recon tools such as Shodan.
https://www.shodan.io/search?query=joomla
When a Joomla site is protected by a Web application Firewall (WAF) such as Sucuri or CloudFlare, some exploits or reconnaissance techniques may be blocked.
However, knowing the site's real IP address, it may be possible to bypass the WAF simply by directing traffic straight to the origin server, which avoids the sites DNS that would otherwise send us via the Web Firewall.
Bypass via /etc/hosts
An attacker can modify their local /etc/hosts file to resolve the domain name directly to the IP:
204.0.123.23 example.com
Discovering the real IP Address
A few methods that may expose the original IP address tied to a joomla server.
Historical DNS Records
A common method is using historical DNS records to identify the real IP address. Historical DNS records may show the original IP address before the firewall service was implemented. Tools such as DNSDumpster can reveal previous A records before the WAF was deployed.
MX Records
If site hosts email on the same server as the website, records might also reveal IP addresses.
Certificate Transparency Datasets
TLS/SSL searches against Certificate Transparency Datasets may also find real hostnames associated with the sites actual IP address if they can matched.
There are various tools for assessing and scanning Joomla installations. From passive to aggressive. Below is a breakdown of a few recon and vulnerability discovery tools.
Joomla Security Scan - Hacker Target
Hacker Target hosts a free and simple to use passive Joomla scan. Discover vulnerabilities, web server details, configuration errors, identify template, and test for directory indexing and others.
The freely available tools perform analysis from a simple page grab. Through the examination of the HTML
source code, javascript
, and a few other open publicly accessible pages, it is possible to gain an insight into the state of security on the target site. Because it performs no aggressive probing its safe to use for initial assessments.
Nuclei - Project Discovery
While not Joomla-specific, Nuclei is a fast and customisable vulnerability scanner powered by templates. In the community repo there are templates that cover Joomla version disclosure, known component vulnerabilities, admin login detection.
Here is a snippett of the joomla-detect.yaml
template taken from the github repository:
nuclei-templates/http/technologies/joomla-detect.yaml
http: - method: GET path: - "{{BaseURL}}/administrator/manifests/files/joomla.xml" # >= 1.6.0 - "{{BaseURL}}/language/en-GB/en-GB.xml" # >= 1.5.0 and <= 1.5.26 - "{{BaseURL}}/README.txt" - "{{BaseURL}}/modules/custom.xml" # < 1.5.0 - "{{BaseURL}}" # >= 1.5.0 and <= 1.5.26 stop-at-first-match: true host-redirects: true max-redirects: 2 ...
JoomScan
JoomScan is the OWASP Joomla! Vulnerability Scanner. An open source project written in Perl. Ties some of these enumeration techniques together such as the Joomla version, vulnerabilities and the admin login page.
JoomlaVS
Github repostitory archived Oct 2020.
JoomlaVS is an Open source Ruby application. Scan for vulnerabilities in components, modules and templates and basic fingerprinting.
CMSMap
As the name implies, CMSMap covers the most popular of the CMS's. An open source project written in Python, this tool has support for Joomla, WordPress and Drupal. Useful for automating a scan for low-hanging fruit.
Download the latest version of CMSMap github: git clone https://github.com/Dionach/CMSmap
Attacking and Exploitation
2013 Joomla 3.2 stable release bought 2FA as part of the core install which adds another challenge to brute-forcing an account. But it isn't enabled by default.
Popping Weak Passwords
Detecting weak passwords for Joomla comes in a variety of ways. There are many ways to to brute force a login page, here are a few.

Nmap NSE Scripts for Joomla
NMAP is most known for network discovery, however, NSE scripts extend the functionality of the popular NMAP port scanner. An Nmap NSE script is particularly helpful for performing a brute-force password play against a Joomla install.
$ nmap -p80 http-joomla-brute example-site
Burpsuite
If there is a login form on the site or you have found the administrator interface, then burp suite can be used to try to brute force the password.
There are other tools around such as JoomBrute, and others such as Hydra and Ncrack, though the latter two are most suited for other protocols.
Metasploit
Rapid7's Metasploit provides a few modules for brute forcing CMS and Joomla for various Joomla versions. One is the Joomla Bruteforce login utility
msf > use auxiliary/scanner/http/joomla_bruteforce_login
Keeping the Joomla extensions, core and templates updated and/or patched needs to be a routine task for the Joomla administrator of the site.