| Door: Peter Martin. | Categorie: Algemeen.

Website hack via xmlrpc backdoor script

Crowbar - foto: Richard DudleyBij een routine controle ontdekte ik op woensdagmiddag 19 november dat de website van een klant enkele vreemde nieuwe bestanden bevatte. Na enkele grondige scans werd mijn vrees bevestigd: de website van mijn klant (op Joomla 1.5.26 met veiligheidspatch) was "gehacked" (eigenlijk zou ik liever het woord "gecracked" gebruiken, maar in de volksmond spreekt men over "gehacked").

Nadat ik de hele website had geanalyseerd op veiligheidsproblemen, opgeschoond, klant & hosting provider geinformeerd, kreeg ik een tweede onaangename verrassing: Ook een van mijn eigen Joomla 3.3.6 websites (hier verder genoemd: voorbeeld.nl) was gehacked.

Uit mijn analyse blijkt dat het doel van de hackers was om backlinks te genereren naar een externe website waar farmaceutische medicijnen zoals Viagra & Cialis worden verkocht.

/includes/xmlrpc.php backdoor

Op een nog onbekende manier is iemand er in geslaagd om op 19 oktober 2014 een backdoor script op de server te plaatsen: /includes/xmlrpc.php
De bestandsdatum van 07 september 2014 23:15:01 bleek door de hacker aangepast. Uit analyse van mijn back-ups bleek dat het bestand op 18 oktober 2014 nog niet aanwezig was, maar op 19 oktober 2014 wel. Helaas ontdekte ik de hack 1 dag te laat en was de het webserver access logbestand van 19 oktober niet meer beschikbaar.

Via het /includes/xmlrpc.php backdoor script hebben hackers op 9 november enkele nieuwe bestanden op mijn site geplaatst en enkele bestanden gewijzigd.

/.htaccess aanpassing

Het server configuratie override bestand .htaccess in de root van mijn website zorgt voor mooie website adressen.
Op 09 november 11:45:48 hebben de hackers aan het begin van het bestand enkele regels code toegevoegd:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (google|yahoo|msn|aol|bing|spaumbot) [OR]
RewriteCond %{HTTP_REFERER} (google|yahoo|msn|aol|bing)
RewriteRule ^([^/]*)/$ /main.php?p=$1 [L]

Deze code zorgt ervoor dat al het verkeer dat via zoekmachines op mijn site komt, automatisch wordt doorgestuurd naar een bestand main.php

/main.php

Dit /main.php bestand is op 9 november in de root van mijn website geplaatst, en door hackers gecamoufleerd door het een oudere bestandsdatum (10 juli 2013 11:25:27) te geven. De hackers hebben de inhoud van het script verborgen door het te coderen volgens "base64". Ze hebben het op een vernuftige manier gedaan zodat het bestand niet wordt gevonden als je bestanden scant op "base64_decode". De code bevat:

preg_replace("/.*/e",
"\x65\x76\x61\x6C\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F\x64\x65\x28'

dat eigenlijk gecamoufleerd eval(base64_decode is, waardoor er eigenlijk staat:

preg_replace("/.*/e",
"eval(base64_decode('

Dit main.php bestand laad spam content van externe website en toont het op het eigen domein onder www.voorbeeld.nl/spam-url

/sitemap.xml

Op 9 november 11:50:42 werd er een nieuw bestand in de root van mijn website geplaatst: /sitemap.xml
Door middel van zo'n sitemap.xml bestand kunnen zoekmachines gemakkelijk zien welke pagina's ze moeten indexeren. Mijn nieuwe sitemap bevatte 590 spam links:
983-website-hack-via-xmlrpc-backdoor-script-sitemapxml
en nog 588 andere spam links.

En op 10 november kwam Google langs, werden de 590 spam links opgevraagd en werd de externe spam content op mijn site voorbeeld.nl geindexeerd.

Nog meer verdachte bestanden

Behalve de hierboven beschreven bestanden, werden er nog meer backdoor bestanden op mijn site geplaatst:

  • /libraries/joomla/session/cache.php 19/08/2013 14:45:46 (door hackers aangepaste datum!)
  • /administrator/fs-login.phtml 09/11/2014 11:45:48
  • /language/comnon.phtml 09/11/2014 11:45:48
  • /layouts/fedit.php 09/11/2014 11:45:48
  • /libraries/fedit.php 09/11/2014 11:45:48
  • /logs/comnon.php 09/11/2014 11:45:48
  • /plugins/fs-login.phtml 09/11/2014 11:45:48
  • /tmp/Iicense.php 09/11/2014 11:45:48

Dit zijn (waarschijnlijk reserve) backdoor scripts.

Hoe te controleren?

  1. zoek via google naar:
    site:www.jouwwebsite.nl viagra
    Hopelijk zie je daar geen resultaten...

  2. kijk met FTP op jouw server naar:
    /sitemap.xml -> is dit bestand aanwezig en bevat het spam links?
    /.htaccess -> is jouw eigen .htaccess aangepast?
    /main.php -> bevat het bestand vreemde, onleesbare code?
    /includes/xmlrpc.php -> bevat het bestand vreemde, onleesbare code?

  3. gebruik SSH en scan naar verdachte bestanden met behulp van:
    983-website-hack-via-xmlrpc-backdoor-script-grep

  4. gebruik python scripts als NeoPI om de website te scannen op verdachte bestanden:
    https://github.com/Neohapsis/NeoPI 


Oplossen van de hack

  1. backup van de huidige situatie gemaakt (bestanden + database), bijv mbt Akeeba Backup
  2. de toegevoegde redirect code in .htaccess verwijderd
  3. alle verdachte bestanden verwijderd
  4. nogmaals controle op alle bestanden dmv doorzoeken op vreemde code & mbv NeoPI
  5. eigen XMap sitemap opnieuw bij Google aangemeld

Niet alleen Joomla sites

Na mijn analyse & herstel van de website heb ik meteen contact met mijn hosting provider gehad over de hack. Ik heb mijn analyse met ze gedeeld zodat ze hun server verder kunnen beveiligen. Mijn hosting provider heeft hun servers gescand op het voorkomen van de verdachte /main.php en helaas verschillende gehackte websites aangetroffen: Joomla, WordPress en Drupal websites.

Geschreven door Peter Martin (pe7er).