website gehackt, wat nu?

Status
Niet open voor verdere reacties.

kodro1

Gebruiker
Lid geworden
25 dec 2011
Berichten
79
Hallo,

ik heb vorig jaar een webshop gemaakt met wordpress & woocommerce, blijkt die verdomme gehackt te zijn.
Ik kreeg een melding van Google dat de site een nieuwe eigenaar had en was uiteraard meteen gealarmeerd.
Nu wat zoekwerk zag ik honderden vreemde html bestanden verborgen in een map op FTP, goed weggedoken.
Heb die allemaal verwijderd en het FTP paswoord aangepast, maar dit volstaat wellicht niet zolang ik het lek niet gedicht heb.
Mijn vraag dus: hoe kan ik dit lek detecteren? Wellicht één of andere onbeveiligde plugin? Maar welke? Of bestaat er een (liefst gratis) dienst die dit lek voor mij kan opsporen?
Kan momenteel ook niet op de site omdat de webhost provider (Transip) het domein geblokkeerd heeft. Heb hen wel op de hoogte gebracht van de hacking en gevraagd om de site te deblokkeren, maar weet niet of ze dit snel zullen doen.
Welke stappen moet ik verder ondernemen?

Alvast bedankt voor de hulp!
 
Wellicht één of andere onbeveiligde plugin? Maar welke?
Dat moet je dus uitsluiten door ze allemaal even op non actief te zetten! En kijk eerst eens of je ze allemaal wel nodig hebt en waar ze doen.
Daarna kan je in Wordpress activeren (overigens zit dat ingebakken in de nieuwste versie): Login attemps - Beperkt het aantal inlogpogingen, inclusief bij het gebruik van cookies, voor elk IP adres.

Verder is het noodzaak dat je niet te veel plugins gebruikt, dat veroorzaakt namelijk ook dat je website traag wordt.

Mijn vraag is dus:
noem eens alle plugins op die heb hebt geinstalleerd, dan kijken we samen welke wel of niet nodig zijn en of ik al kan zien welke mss niet veilig is.


TransIP is normaal gesproken een van de betere hostings, maar wel duur (dat vind ik ;) ) Dus die zullen je neem ik aan, wel ondersteunen en de site deactiveren. Maar ik begrijp er nu wel uit dat je zelf weer op de site kan? Dus je kan het een en ander zelf nu doen via het dashboard van WP?

En verder is het natuurlijk zaak dat je een goed wachtwoord neemt! (ooit in een van onze nieuwsbrieven is daar een mooi stuk over geschreven door ondergetekende) Dus niet dat je gebruikersnaam JantjeNL is en dat jij jantje2015 als wachtwoord hebt. Ik noem maar iets.
 
Plugins, template enz kunnen (van minder betrouwbare bron) ook malicious code hebben. Heb onlangs nog een 'image' bestand gezien die netjes alle gegevens van Joomla doorstuurde.
 
Inderdaad, een thema ergens vandaag gedownload (omdat je een mooie betaalde zag maar niet wilde betalen als voorbeeld) kunnen dan codes bevatten.

Hou het dus bij thema's die aangeboden worden via de juiste bronnen en plugins zoals ik al zei, eerst nu even hier neerzetten maar vooral nu uitschakelen op je WP website.
 
bedankt voor de reacties
het gebruikte theme = maya
plugins : zie 3 screenshots in bijlage

nogmaals dankuwel!
voorlopig weinig hulp vanuit transip :-(plugins-1.PNGplugins-2.PNGplugins-3.PNG

o ja, ik raak niet meer op m'n dashboard noch op de site, waardoor ik (voorlopig) geen plugins kan updaten/uitschakelen :-(
 
Laatst bewerkt door een moderator:
Je kan toch via je DirectAdmin alle plugins verwijderen en dan helemaal overnieuw beginnen met plugins.

Plus, heb je geen backup? En heeft TransIp je website geblokkeerd zodat je er niet meer op kan via het dashboard?
 
femke98: backup dateert al van meer dan een maand geleden, vrees trouwens dat de site toen al gehackt was
Loeri: ik raak ondertussen weer op het dashboard, in bijlage de volledige lijst van plugins met hun versie

nogmaals dank voor alle hulp & advies
 

Bijlagen

Zie echt dingen die je niet nodig hebt (naar mijn mening).
Verder: wat is Say What?

Zijn alle plugins weleens geupdate?

Seo van Yoast is een goede, verder heb je niets nodig qua seo.

String Locator?
CodeStyling Localization?

etc. etc.

Kijk eens zelf waarvoor je ze hebt geinstalleerd, heb je ze nodig?
 
alweer bedankt voor de tips

site ziet er redelijk clean uit nu, heb gisteravond sucuri geïnstalleerd en de site wat dicht getimmerd, sindsdien geen vreemde html uploads meer :-)
alle plugins zijn up-to-date en heb er enkele verwijderd zoals je aangaf (dat waren plugins die ik gebruikt had bij de opmaak van de site, nu niet meer nodig)

alleen zit ik met een vervelend probleem: sinds de update van woocommerce en andere plugins (+ upgrade naar laatste WP versie) ziet de site er helemaal niet meer ok uit
Ik heb de themes map van m'n backup op FTP gezet ter vervanging, maar dat lost het probleem niet op :-(

www.eekhoorntjesland.be

layerslider WP moet normaal vlak onder de menubalk staan
de woocommerce producten normaal in drie kolommen (18 per pagina)
de knoppen "filter per kleur" etc. hebben ook de verkeerde lay-out

kortom, veel miserie :-(
 
Ik zelf heb het volgende in mijn htaccess bestand:

Code:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>

<IfModule mod_headers.c>
  <FilesMatch "\.(js|css|xml|gz)$">
    Header append Vary: Accept-Encoding
  </FilesMatch>
</IfModule>

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

<ifModule mod_headers.c>
Header unset ETag
</ifModule>
FileETag None
# END WordPress

en min robots text is:
Code:
User-agent: *   
Disallow: /setup/  
Disallow: /cgi-bin  
Disallow: /images/  
Disallow: /photos/  
Disallow: /dealers/  
Sitemap: http://xxxxxxx.nl/sitemap_index.xml

werkt uitstekend.

Verder is de website inderdaad niet meer lekker qua layout. Misschien toch maar helemaal overnieuw beginnen? Dan kan je het zo maken hoe jij het wilt.

Kijk ook eens hier: http://gtmetrix.com/
http://validator.w3.org/unicorn/
http://website-analyse.pro/tools/css-fouten-checker/
 
Laatst bewerkt:
Ja layout klopt niet meer omdat de meeste css en javascript bestanden geblokkeerd zijn.
http://i.imgur.com/wN8LzpZ.png

M.a.w. je verbied iedereen om die files te laden.
De files staan er nog maar er is geen (lees) toegang tot de files.
 
Laatst bewerkt:
Hai Femke,

Natuurlijk uitstekend omdat deze htaccess voor WordPress is. Echter, er zit niets aan security in. Het bestaat onder andere uiit friendly urls, verloopdatums, encoding en gzip. Als je het laatste stukje iets wijzigt dan heb je daar 1 regel aan security.
Code:
<IfModule mod_headers.c>
Header unset ETag
FileEtag None
# wat security
Header set X-Frame-Options "SAMEORIGIN"
</IfModule>
Ik ben geen voorstander van robots.txt; Dit bestand kan iedereen uitlezen en dan weet iedereen wat op je website interessant kan zijn: je map Setup bijvoorbeeld......

@kodro1
Hierboven bij #12 staan alleen security tips voor elke website bij iedere provider. Als je van je provider niets mag aanpassen in .htaccess dan wordt het tijd om van provider te veranderen.

Suc6 & have fun.
 
ik zou de lay-out graag recupereren uit m'n backup, heb echt geen tijd om helemaal te herbeginnen
welke permissies geef ik op folders en welke op mappen? En kan ik dit automatisch doen?

en ****: ik zie weer vreemde html files opgeladen op ftp, het lek is dus toch niet dicht. :-( :-( :-(

die code voor het .htaccess bestand: voeg ik die toe aan de bestaande code of vervang ik de oude door deze nieuwe? en het gaat om het .htaccess bestand in de www folder of in de wp-content folder?
 
Hai Femke,

Natuurlijk uitstekend omdat deze htaccess voor WordPress is. Echter, er zit niets aan security in. Het bestaat onder andere uiit friendly urls, verloopdatums, encoding en gzip. Als je het laatste stukje iets wijzigt dan heb je daar 1 regel aan security.
Code:
<IfModule mod_headers.c>
Header unset ETag
FileEtag None
# wat security
Header set X-Frame-Options "SAMEORIGIN"
</IfModule>
Ik ben geen voorstander van robots.txt; Dit bestand kan iedereen uitlezen en dan weet iedereen wat op je website interessant kan zijn: je map Setup bijvoorbeeld......

@kodro1
Hierboven bij #12 staan alleen security tips voor elke website bij iedere provider. Als je van je provider niets mag aanpassen in .htaccess dan wordt het tijd om van provider te veranderen.

Suc6 & have fun.

Nee, daar heb je gelijk in, er zit geen safety in mijn htaccess.
Overigens had ik problemen gekregen toen ik een (andere) website zonder robots.txt had. En dus ging ik op zoek op internet en daar vond ik de oplossing dat ik een robots.txt moest maken. Dus daarom gedaan. Weet echter het probleem niet meer hoor, dat is al weer een tijd geleden.
Bij elke website die ik maak, zet ik dus een robots.txt

Verder zal ik je Code onderaan mijn mijn eigen htaccess zetten. Bedankt hiervoor!!

het wordt dus nu zo:
Code:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>

<IfModule mod_headers.c>
  <FilesMatch "\.(js|css|xml|gz)$">
    Header append Vary: Accept-Encoding
  </FilesMatch>
</IfModule>

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

<ifModule mod_headers.c>
Header unset ETag
FileEtag None
# wat security
Header set X-Frame-Options "SAMEORIGIN"
</ifModule>
FileETag None
# END WordPress

Ik neem aan dat het goed is zo?
 
Laatst bewerkt:
Hi Femke,

Yep, de regel heb je er goed tussen gezet.

Op Github vind je een zeer goede .htaccess voor WordPress.
https://gist.github.com/brandonhimpfen/286faa9a4a5bcdf1abf5

(met uitleg op http://www.himpfen.com/htaccess-wordpress/)

Voeg de volgende anti-hacking code hieraan toe; dan is de site goed secure.
Code:
# Maak altijd een Pagina Niet Gevonden bestand.
ErrorDocument 404 http://www.example.nl/404.php

# geen systeem info tonen
ServerSignature Off

# ALS de uri de tekst http: bevat
RewriteCond %{QUERY_STRING} http\: [OR]
# OF ALS de uri het teken [ of ] bevat
RewriteCond %{QUERY_STRING} \[ [OR]
RewriteCond %{QUERY_STRING} \] [OR]
# OF ALS de uri de tekst <script> bevat
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# OF ALS een script probeert een PHP GLOBALS variabele in te stellen
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# OF ALS een script probeert een _REQUEST variabele te wijzigen
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR]
# OF ALS de uri de tekst UNION bevat
RewriteCond %{QUERY_STRING} UNION [OR]
# OF ALS de uri een dubbele slash bevat
RewriteCond %{QUERY_STRING} // [OR]
# OF ALS er een /proc/self/environ request is (LFI hack)
RewriteCond %{QUERY_STRING} proc\/self\/environ [OR]
# OF ALS de uri het asterisk teken bevat
RewriteCond %{QUERY_STRING} \*
# DAN... blokkeer de request met een 403
RewriteRule ^.*$ - [F,L]

# blokkeer perl bots zodat deze geen hack backdoor kunnen achterlaten
SetEnvIfNoCase User-Agent libwww-perl bad_bots
order deny,allow
deny from env=bad_bots
Waarom geen lege robots.txt? Dan geef je de buitenwereld niet teveel info.
Code:
User-agent: * 
Sitemap: http://www.example.nl/sitemap_index.xml
Suc6 en have fun.
 
Laatst bewerkt:
Hallo kodro1

welke permissies geef ik op folders en welke op mappen? En kan ik dit automatisch doen?
Begin met mappen: 755. Bestanden: alles in wp-admin 444, wp-config 444, overige 666. Dit kun je met je FTP programma doen. Als je website stabiel & up & running is dan kun je de bestanden op read-only zetten, begin dan bij 644. Als dit werkt dan 444. In bijvoorbeeld FileZilla kun je aanvinken dat alle onderliggende bestanden ook ingesteld moeten worden. Controleer altijd of het goed is gegaan.

die code voor het .htaccess bestand: voeg ik die toe aan de bestaande code of vervang ik de oude door deze nieuwe?
Zie post hierboven. Het gaat om de .htaccess in de www folder (de root folder).

Over je website...
Ik heb er een copier op losgelaten en ben na 750MB en bijna 800 errors gestopt. Kun je niet terug naar een backup die ouder is dan 2 maanden?

*** edit:
Het waren 403 (Forbidden), 404 (Not Found), 405 (Method Not Allowed), 503 (Service Unavailable) errors. Sommige zijn okee. Die horen afgeschermd te zijn via htaccess. Andere errors zijn vreemd. Ik heb de hele zooi weer van mn pc verwijderd.
 
Laatst bewerkt:
nog heel even offtopic: wordpress heeft zelf al een 404 page hè.

ontopic:
Begin met mappen: 755. Bestanden: alles in wp-admin 444, wp-config 444, overige 666. Dit kun je met je FTP programma doen. Als je website stabiel & up & running is dan kun je de bestanden op read-only zetten, begin dan bij 644. Als dit werkt dan 444. In bijvoorbeeld FileZilla kun je aanvinken dat alle onderliggende bestanden ook ingesteld moeten worden. Controleer altijd of het goed is gegaan.
Bij het updaten van plugins en taalpakketten kan het zijn dat dit niet gaat en dan krijg je de melding dat je geen toestemming hebt. Dan is het zaak om de mappen waar het om gaat, even op 777 te zetten.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan