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:
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:
Och 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:
Och sist men inte minst så använder vi WPscan för att göra en analys:
Denna 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.