Casus: Joomla-hack en oplossing

Tegenwoordig worden op websites steeds meer standaard Content Management Systemen (CMS) zoals Joomla, WordPress en Drupal gebruikt in plaats van custom-made Content Management Systemen. Het voordeel hiervan is dat er legio plugin’s, thema’s en handleidingen beschikbaar zijn voor deze systemen. Het nadeel hiervan is dat dergelijke systemen ook aantrekkelijk zijn voor kwaadwillende hackers, omdat deze systemen door talloze mensen gebruikt wordt.

Kwaadwillende hackers richten zich vaak op oudere versies van deze systemen, omdat daarvan bijvoorbeeld beveiligingsfouten zijn ontdekt en gepubliceerd. Zo werd ik begin dit jaar door een bekende gevraagd om naar de beveiliging van zijn Joomla-website te kijken. Deze persoon kreeg vaak klachten van klanten dat ze tijdens een bezoek aan de Joomla-website werden doorgestuurd naar vreemde Russische websites, met als gevolg dat de anti-virus & anti-spyware programma’s alarm sloegen. Niet echt positief tegenover je (potentiële) klanten als ze dergelijke zaken meemaken bij het bezoek van je website.

Onderzoek probleem

Bij het horen van de problemen, vermoedde ik al dat de website slachtoffer was geworden van kwaadwillende hackers. Als eerste onderzocht ik welke versie van Joomla werd gebruikt op de website. Dit is simpel te achterhalen door de broncode van de website te bekijken. Bij de meta-tags staat een tag vermeld met als naam ‘generator’ en daarachter de versie, in dit geval Joomla! 1.5. Deze versie is gereleased in januari 2008, maar is tot en met maart 2012 ondersteund met updates [1]. Op dit moment, februari 2013, zijn de meest recente versies: 2.5 (januari 2012) en 3.0 (september 2012).

Vervolgens onderzocht ik welke bestanden als laatste aangepast waren. Al snel ontdekte ik dat de website sinds april 2010 niet meer was bijgewerkt. Des te meer het opviel dat er in oktober 2012 een bestand ‘post.php’ in de map ‘images’ was geplaatst met de volgende regel code:

Opvallend was ook dat pas met Kerst 2012 dit bestand gebruikt (of misbruikt) is om de volgende bestanden te bewerken: CHANGELOG.php, configuration.php, COPYRIGHT.php, CREDITS.php, index.php, index2.phpINSTALL.php, LICENSE.php en LICENSES.php. Aan deze php-bestanden was op de 1e regel van het bestand de volgende code toegevoegd:

Deze code kan tot leesbare code omgezet worden door gebruik te maken van een online Base64 decoder zoals base64converter.com. Dat resulteert in de volgende code:

Uit deze code valt af te leiden wat er gebeurt bij het aanroepen van een van de getroffen php-bestanden. Men wordt alleen doorgestuurd naar http://onotiw.dnset.com/ (inmiddels niet meer bereikbaar), als ze via een zoekmachine zoals Yahoo, Bing of Google de website bezoeken. Dit verklaart ook waarom de werknemers zelf geen last hadden van de hack; zij gingen altijd direct naar de website (zonder gebruik te maken van zoekmachines dus).

Oplossing

De oplossing voor deze Joomla-hack is redelijk eenvoudig. Verwijder het bestand ‘post.php’ in de ‘images’-map. Via dit bestand was het immers mogelijk om overige php-bestanden aan te passen. Wijzig daarna de getroffen bestanden en verwijder de toegevoegde (base64 encoded) code op de 1e regel. Nu zijn de grootste wijzigingen van de hack teruggedraaid, maar het beveiligingsgat is nog niet gedicht. Het is trouwens mogelijk dat een kwaadwillende hacker nog meer bestanden heeft aangepast dan beschreven in dit artikel.

Mijn mening over het beveiligingsgat is dat de hack voorkomen had kunnen worden door het Joomla CMS up-to-date te houden. Een veelgebruikt CMS ruim 2 jaar niet updaten is vragen om problemen, zeker als er verwijzingen naar Joomla 1.5 in de broncode op je website te vinden is. De gevolgen waren bij deze casus nog te overzien, maar het is vervelend als door zo’n simpele hack bijvoorbeeld de gegevens uit je klanten-database op Internet te vinden zijn.

Ook bij het gebruik van open-source Content Management Systemen geldt: voorkomen is beter dan genezen.

Elke maand controleren of uw CMS en bijbehorende plugins en thema’s nog up-to-date zijn is dan ook aan te raden bij het gebruik van open-source content management systemen. Als u ook vermoeden heeft dat uw website gehackt is en u komt er verder niet uit, dan kunt u altijd contact met mij opnemen.

  1. Joomla. (2013). In Wikipedia. Retrieved February 26, 2013, from http://en.wikipedia.org/wiki/Joomla
Deel dit viaShare on LinkedInTweet about this on TwitterShare on FacebookShare on Google+Email this to someone

Nederlandse language-file voor Image CRUD

Voor sommige opdrachtgevers, maar ook bij eigen projecten, voeg ik open-source libraries toe aan applicaties om zo sneller tot een resultaat te komen. Daarnaast is het ook zonde om steeds het wiel opnieuw uit te vinden als dit wiel door de makers ervan (onder voorwaarden) gratis wordt aangeboden. Laatst heb ik bijvoorbeeld de libraries van Grocery CRUD en Image CRUD in combinatie met het CodeIgniter framework toegepast bij een project.

Grocery CRUD is een library waardoor het eenvoudig is om de basisoperaties Create, Read, Update en Delete uit te voeren op een tabel in een database. Image CRUD is een library van dezelfde ontwikkelaar om de basisoperaties ook uit te kunnen voeren met afbeeldingen. Bij beide libraries is het mogelijk om de taal te wijzigen door het gebruik van language-files; bestanden die de vertalingen van de teksten bevatten. Bij Image CRUD was er nog geen Nederlandse language-file aanwezig. Als dank voor het beschikbaar stellen van de libraries heb ik de Nederlandse language-file voor Image CRUD opgesteld. Deze is inmiddels toegevoegd aan de GIT-repository van Image CRUD, dus beschikbaar voor iedereen.

Als u interesse heeft om Grocery CRUD of Image CRUD bij uw projecten te implementeren, dan kunt u altijd contact met mij opnemen.

Deel dit viaShare on LinkedInTweet about this on TwitterShare on FacebookShare on Google+Email this to someone