I haven't come into contact with Joomla for a while, but I had the opportunity recently in a penetration test of a web site that was running the popular Content Management System (CMS). In this blog post I mention some of the tools I used to check the security of a particular Joomla installation and comment upon their effectiveness.
Depending on your source, Joomla is within the top five contenders for the most popular CMS. Alternatives include WordPress, Drupal and others. CMS frameworks have matured in recent years as their popularity increases. It’s easy to see why. A relative new-comer to web development can get a basic web site up and running with minimal technical skills. If you want your site to do more intermediate functionality such as e-commerce or blogging, there’s an extension to suit everyone. Because the solutions are open-source, they are also easily customizable.
Given the ease with which users can use a CMS to get their site up-and-running on the Internet, it should come as no surprise that it opens such systems up for possible exploitation. Vulnerabilities can exist in various forms. Inexperienced web designers or developers may just want to get their site functioning quickly without thinking too much about security.
Installing insecure extensions without understanding their code or functionality could also lead to potential issues. The ‘Install and try’ method that is common throughout the Joomla community means there are many sites with old code or extensions sitting on their site with potential security issues.
So what steps can you take to evaluate the security of your newly developed Joomla site? I wanted to see what was available and to see how useful the results were with regard to securing the site.
There are several Joomla-specific testing tools out there at the moment available for free. I’ll quickly list some of those below and comment on their effectiveness with a modern installation (in this case the target was running Joomla 2.5.14):
CMS –Explorer checks for themes and plugins installed on Joomla and other well-known CMSs. It won’t find the vulnerabilities for you, just tell you what default templates and plugins are running. Using this information you can go and research to your heart’s content to find exploits relating to what it found. Yes, it did give a list of what default themes and default plugins were running, but it didn’t really help in telling me what was vulnerable.
The OWASP Joomscan does perform some security checks such as file inclusion, SQL injection and command execution. Running it against my target, in the 51 checks performed against my target site, only one reported a vulnerability (the Administrator login was accessible). So it didn’t really progress my testing. It would most likely be useful in older versions of Joomla.
So it seemed the Joomla-specific security tools didn’t provide much assistance with my test.
A general automated scanner (nikto) reported 6,544 vulnerabilities, the majority of them false positives. Many hosting providers return a default page that will provide a 200 OK code which resulted in these false positives.
I was coming to the conclusion that there wasn't one tool that in my view helped me (or a developer) to check for vulnerabilities on a Joomla site remotely. The only reliable results that were useful involved performing manual application testing against the site using tried-and-tested techniques.
Firstly, spider crawl the site to check for all links and GET parameters to test manually. The reconnaissance should also include directory brute-forcing (using tools such as dirbuster). Once the site has been mapped, manual parameter testing using local proxies (e.g. Burp proxy) proved more successful checking for common issues such as XSS and SQL Injection.
If you are the Administrator of a Joomla site you can take steps to improve your chances of not getting hacked by performing some local administrative tasks. Joomla publishes a list of vulnerable extensions at http://vel.joomla.org/index.php/live-vel . At the time of writing this was last updated in September 2013. Simply search for your list of installed extensions to find if any of your extensions have known vulnerabilities. It also lists the latest vulnerabilities associated with your core version. Again this is up-to-date, the publish date being November 2013 at the time of writing. It’s advisable to sign up to these updates and keep your system up-to-date.
There are tools you can install locally that will also help. For example, the JAMSS tool can be used to look for possible malware on your site using regex patterns. Extensions also exist to provide additional security (http://extensions.joomla.org/extensions/access-a-security/site-security) . Examples include extensions that inform you when someone logs into your site as Administrator, anti-spam software, AV software and Joomla-specific web application firewall software, all of which will help secure your site.
In the end, my view was that Joomla security had improved a lot since the earlier years. However there is no easy solution to securing your site. There is no one tool that will test the security of your site. Any new site developed with Joomla should have a manual penetration test performed on it to find the vulnerabilities associated with the site, just like any other web technology. This manual test would involve using a variety of tools to go through the site looking for common web application vulnerabilities.
Doing this and ensuring your site is also kept up-to-date with the latest software will give you the best chance of keeping the bad guys away.