Etikettarkiv: Secunia

Så testar du säkerheten i WordPress

Denna guide visar hur du kan genomföra ett penetrationstest av Er WordPress-installation. Fokus ligger på WordPress men det finns så klart andra delar att testa som också är relevanta såsom att testa såsom svaga SFT/FTP-lösenord men det är utanför denna guide.

Informationsinsamling

Först och främst så genomför vi informationsinsamling eller OSINT som det också kan kallas. Vi försöker kartlägga vilka användare som återfinnes samt eventuella plugins. Det går att göra genom att titta på källkoden på sidan och söka efter referenser till sökvägen /wp-content/plugins exempelvis.

Annars finns det ett plugin (script) till verktyget Nmap som kan lista användare:

 $ nmap -p 80,443 -v -sV --script http-wordpress-enum --script-args limit=25 utvbloggen.se

Och då erhåller du efter några minuter aktuella användarnamn, i mitt fall:

Username found: admin

Att det går att hitta användarnamn beror på att WordPress gladeligen berättar detta om en förfrågan genomföres till exempelvis URL:en //utvbloggen.se/?author=1 och 2 för andra användaren osv.

Även så avslöjar WordPress login-funktion om ett användarnamn är giltigt eller ej, se skillnaden mellan dessa två meddelanden:

WordPress felaktigt lösenord WordPress felaktigt användarnamn

Efter detta så testar vi att söka efter dom 500 vanligaste WordPress-plugintyperna som finnes:

$ nmap -p80,443 -v -sV --script=http-wordpress-plugins --script-args http-wordpress-plugins.search=500 utvbloggen.se

Och efter ett tag så finner vi att följande plugins används:

| search amongst the 500 most popular plugins
| akismet
| contact-form-7
| all-in-one-seo-pack
| google-sitemap-generator
| jetpack
| w3-total-cache
| worker
| only-tweet-like-share-and-google-1
| timthumb-vulnerability-scanner
| wordpress-23-related-posts-plugin
|_ syntaxhighlighter

Eftersom vi är intresserad av säkerheten så kontrollerar vi sedan om dessa innehåller några sårbarheter som uppdagats. Secunia erbjuder bl.a. en sådan tjänst här.

Även så kan det vara intressant att hitta övriga plugins som används som kanske inte är lika vanliga och ladda hem dessa samt söka efter sårbarheter. Och med detta menar jag att genomföra kodgranskning.

Forcering av lösenord

Nu när vi vet att det finns ett konto med användarnamnet ’admin’ så är det dags att testa några vanliga lösenord. Det finns hur många lösenordlistor som helst med vanliga lösenord så det är inte helt lätt att hitta en bra lista.

Jag skulle rekommendera att bygga en egen lösenordlista med ord som förekommer på den blogg som vi vill testa och sedan köra den genom John the Rippers filter för att lägga till 01 osv på slutet på orden.

Först och främst så skapar vi filen users.txt dit vi lägger användarnamnet som vi hittade från föregående steg för att hitta användarnamn. Ett användarnamn per rad.

Sedan kör vi igång Nmap igen med modulen som heter http-wordpress-brute:

nmap -p 80,443 --script http-wordpress-brute --script-args 'userdb=users.txt,passdb=500-worst-passwords.txt' utvbloggen.se

Här använder jag lösenordsfilen 500-worst-passwords.txt men det går även bra att använda swedish.txt.

Så här kan det se ut då du hittar rätt lösenord som i detta fall är sexy123fox på denna blogg:

WordPress bruteforce passwordOch ovan statistik visar även på att det tog 107 sekunder att testa 1002 lösenord. Om vi vill få upp hastigheten i lösenordstesterna så kan vi använda ett annat verktyg som heter Hydra (även så fungerar Burp Suite eller WPscan.rb).

Här kan vi se när Hydra hittar rätt lösenord med en annan lösenordslista som innehåller 370 lösenord som Twitter förbjuder som även hittar rätt lösenord sexy123fox:

WordPress hydra passwordOch sist men inte minst så  använder vi WPscan för att göra en analys:

WPscan wordpressDenna analys visar förutom det vi ser ovan 6 st plugins som identifierades samt eventuella sårbarheter som dessa innehåller.

WordPress version 3.9.1 är senaste versionen vilket är bra.

Övrigt att kontrollera

Finns många andra viktiga saker att testa samt kontrollera. Några har jag nämnt tidigare såsom att även testa lösenord på SFTP/FTP. Men även viktigt är att kontrollera säkerheten på webbservern i övrigt och då titta i exempelvis robots.txt, sitemaps eller dylikt.

Söka efter phpmyadmin samt andra liknande script som finnes installerade men även databasdumpar som kan ha namn såsom http://utvbloggen.se/utvbloggen.sql exempelvis.

Mitt företag Triop erbjuder även denna typ av IT-säkerhetstest, läs mer här.

Uppdatering: Nu finns det en del två av denna guide som du kan läsa här.

Har din WordPress-blogg hackats? Läs det här

Fler och fler WordPress-bloggar hackas och en stor faktor är den sårbarhet som identifierades i TimThumb. TimThumb var inbakad i mängder plugins och teman som inte uppdateras.

Första tecknet på att din blogg hackats kan vara något av följande:

  • Din blogg försvinner från Googles-index. Dvs söker du efter din blogg så dyker den inte upp
  • Någon kontaktar dig gällande viagra eller liknande som din blogg länkar till
  • Du hittar nya filer eller så försvinner filer från din WordPress-installation

Det du måste göra när din blogg hackats är att börja om från början och försöka lista ut hur angriparna tog sig in. Så först och främst måste du se till att du har en backup av både filsystemet och databasen.

Om du har kontroll över underliggande operativsystem så bör du även installera om det då angriparna kan ha tagit sig in i operativsystemet. Att installera om och konfigurera operativsystemet är oftast krävande och tar lång tid.

Ominstallation av WordPress

Börja med att göra en ny installation av WordPress och läs sedan tillbaka databasen, ändra lösenord och titta så att inga nya konton dykt upp i WordPress. Innan du börjar med din nya installation av WordPress måste du se till att det är helt tomt på ditt konto, inga .htaccess-filer som kan vara dolda exempelvis då det finns exempel då angripare placerat bakdörrar i dessa. Om du känner dig osäker gällande dessa steg så bör du anlita eller fråga någon som kan WordPress bra.

Installera alla plugins som du behöver och gå manuellt igenom samtliga och undersök huruvida det har identifierats några sårbarheter i dem på sistone. Secunia har en söktjänst där du kan söka på pluginnamn.

Om du har ett egenutvecklat tema (theme) och vill återställa detta från din backup så bör du gå igenom samtliga .PHP-filer för att säkerställa att ingen bakdörr har tagit sig in.

Det finns även exempel då bloggar hackats genom delade miljöer på webbhotell, då hjälper det inte så mycket att du gör en nyinstallation om inte webbhotellet vidtar åtgärder. Överväg även möjligheterna att angriparen tagit sig in med ditt FTP-konto eller dylikt genom att testa vanliga lösenord eller läckta lösenord från exempelvis BloggToppen.

För att säkerställa att det just inte var TimThumb som används för intrång mot din blogg så kan du installera ett plugin som söker igenom efter den kod som TimTumb använder sig av. Här kan du ladda hem TimThumb vulnerability scanner:

Vidare läsning

Du bör även läsa WordPress FAQ gällande hackade WordPress-bloggar.

Detta blogginlägg kommer att uppdateras löpande med nya tips. Om du är intresserad av WordPress och säkerhet så bör du även läsa mitt inlägg om hur säkert WordPress är.

Nikke Lindqvist skrev även om hur viagra-spammare tar sig in i bloggar mer och mer här.