SECURITY BREACHES, SECURITY NEWS, SECURITY RESEARCH, TUTORIAL |

Attacking and Enumerating Joomla

This guide explore the common vulnerabilities and attack techniques used against Joomla-based websites. By understanding how attackers identify and exploit weaknesses, you can proactively secure your Joomla installation before it becomes a target.

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

close-up image of rack of servers in greyscale

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

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:

Screenshot showing detection of metadata with Joomla core version

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.

Joomla readme example

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.

Identifying Installed Joomla Extensions

Like WordPress plugins, Joomla's functionality is extended through "Extensions", these fall into several categories:

  • Modules
  • Components
  • Templates
  • Plugins
  • Languages

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.

Active scans generate noticeable traffic and may be logged or blocked by defensive systems.
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.

Joomla Template Enumeration

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.

joomla theme enumeration
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.

Joomla User Enumeration

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.

Joomla login form

Privileged User roles Joomla

Joomla defines 3 privileged user groups which have access to the control panel:

  • Managers: content creation and backend system info.
  • Administrators: Elevated access, admin functions excluding global options.
  • Super Users/Administrator: ultimate power. Access all areas.

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.

Credential stuff attacks based on breached data are particularly dangerous when paired with a valid username.

Directory Indexing

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.

Screenshot showing an example of directory indexing

If enabled the browser returns a list of files and subdirectories. These can then be explored further.

Network Service Discovery

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:

  • FTP
  • SSH
  • Webmin
  • HTTP/HTTPS

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

Bypass Sucuri or CloudFlare Web Firewall

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.

Joomla enumeration and vulnerability scanning tools

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.

Note this project has not been updated for a number of years

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

Brute Force Joomla logins

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.

joomla administration panel

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

Exploit Joomla Extensions

One of the most common reasons for Joomla sites being compromised is vulnerable extensions, modules & plugins. These all contain a large amount of PHP code and come from developers of differing levels of skills, abilities, and focus when it comes to writing software that is secure.

Keeping the Joomla extensions, core and templates updated and/or patched needs to be a routine task for the Joomla administrator of the site.

1,450

published exploits
for Joomla and its components.

Joomla Security announcements and Vulnerable extensions list

The Joomla Developer Network has a Security Announcements which provides a feed of recently resolved security issues in Joomla software releases.

As part of the Joomla extension directory, Joomla has a list of Vulnerable extensions .

Exploit Example

An issue was discovered in the Creative Contact Form extension (2019). A directory traversal vulnerability resides in the filename field for uploaded attachments. An attacker could exploit this vulnerability with the "Send me a copy" option to receive any files of the filesystem via email.

Exploit References:
https://packetstormsecurity.com/files/156655/Creative-Contact-Form-4.6.2-Directory-Traversal.html
https://nvd.nist.gov/vuln/detail/CVE-2020-9364#VulnChangeHistorySection

Exploit Joomla Template

While vulnerabilities in templates are not as common as extensions, it is still worth checking the template in use. Check the developers page for security related updates, and if its a custom environment running standard web application testing may discover unpublished vulnerabilities.

In this example of an XSS vulnerability, we see that even the Joomla Core Default template had a vulnerability as recently as 2019.

Exploit References:
https://developer.joomla.org/security-centre/791-20190901-core-xss-in-logo-parameter-of-default-templates.html

Exploiting Joomla Core

Vulnerabilities in Joomla Core are highly valued by an Attacker as it does not depend on a particular extension being installed.

In 2016, 2 critical vulnerabilities allowed privilege escalation by remote users. Attackers were first able to create accounts even if account registration is disabled, and 2nd, increase their privileges on any Joomla site using versions 3.4.4 to 3.6.3. Attackers could then upload a backdoor and ultimately control the site.

Solution was the upgrade to version 3.6.4. Joomla devs released limited information on the the vulnerabilities, however it was enough for groups to figure things out and develop exploits. Exploits in the wild were spotted, some included ones that were automatically uploading backdoors to vulnerable sites.

Exploit References:
CVE-2016-8870
CVE-2016-8869
Joomla! 3.4.4 < 3.6.4 - Account Creation / Privilege Escalation

Sniff and Capture Credentials over non-secure login

HTTP over TLS should be enabled on any public website in 2020. If only HTTP is used, passwords, logins and session cookies are all sent over the network in the clear. Clear text sessions could be monitored on your local network, or on your Internet providers network or anywhere between the client and server.

With the easy access to Free certificates there is really no reason to be not using HTTPS. Check your TLS configuration with tools such as sslyze.

Vulnerable Server Software

Exploitation of the Joomla site could come from other server components - it is not always the Joomla Web Application that will be the exploitation vector. A simple misconfiguration of a network service or a failure to apply server updates could lead to compromise of the server and all hosted applications.

With the results of an Nmap scan, an attacker will review open services for known vulnerabilities. A small sample of these network services includes FTP, SSH, MySQL & Redis - any of these could lead to server compromise if vulnerable or poorly configured.

Compromise Systems Administration Tools

Related to the previous section, here we are identifying server applications that may lead to compromise of the Joomla site.

An example of this type of tool is phpmyadmin running on the web server. A weak database password or vulnerable version of phpmyadmin would lead to compromise of the database and possibly even code execution.

Discovery of the phpmyadmin installation would usually involve a content discovery scan that would include common paths for phpmyadmin in the content discovery scanner list.

Content Discovery

Looking for sensitive information, database credentials, backups, are just a few few items that can be found with content discovery. Content discovery is attempting to find any interesting items contained within a web path of an application. There are a variety of tools our there catering for this purpose. Choose the one or ones that suit your needs. A few example tools are; DIRB, dirbustor, dirsearch or gobuster.

Common locations to check are:

    /robot.txt
    /backup
    /images/
    /bin/
    /uploads/
    /components/
    /administrator/
    /.htaccess.txt
    /index.html
    /index.php
    /templates/exampletemplate
    /administrator/templates/exampletemplate
    /phpmyadmin/
    /phpinfo.php

Found Backups

Using content discovery a commonly found vulnerability is a site backup. This results from a mistake during system administration where a backup of the folder was taken and left in the publicly accessible web root (eg. /backup.tar.gz).

With a backup an attacker has access to all files of the installation including all installed components as well as the configuration file containing the database location and password.

PHP info

Another commonly found item during content discovery is a file with the PHP function phpinfo(). Site administrators will often create a file in the root of the site such as /phpinfo.php, the function in this file allows the administrator to know what modules, PHP version and many other server configurations are available on the webserver. This information is also valuable to an attacker if the file is forgotten and left on the server.