Cum să verific dacă am eliminat complet un hack WordPress?
Blogul meu WordPress pentru distracție de la http://fakeplasticrock.com (rulează WordPress 3.1.1) a fost hackuit - afișa un <iframe>
pe fiecare pagină astfel:
<iframe src="http://evilsite.com/go/1"></iframe>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
Am făcut următoarele:
- Am actualizat la versiunea 3.1.3 prin sistemul integrat de actualizare WordPress
- Am instalat Exploit Scanner (multe avertismente critice despre fișiere neobișnuite) și AntiVirus (acesta a arătat totul verde și curat, așa că l-am dezinstalat după rulare)
- Am schimbat parola MySQL
- Am schimbat toate parolele utilizatorilor WordPress
- M-am conectat prin FTP și am descărcat întregul sistem de fișiere (nu este mare, acesta este un host Linux partajat doar pentru WordPress)
- Am comparat sistemul de fișiere cu un ZIP oficial de WordPress 3.1.3 și am eliminat sau suprascris orice nu se potrivea
Sunt destul de sigur că:
- toate fișierele de pe disc sunt fișiere oficiale WordPress 3.1.3
- nu există fișiere "extra" pe disc în afară de tema mea
/theme
, pluginul Exploit Scanner (pe care tocmai l-am descărcat), folderul/uploads
și câteva alte fișiere așteptate. Celălalt plugin, wp-recaptcha, se potrivește cu versiunea oficială descărcată - Am verificat și fișierul
.htaccess
și nu pare să fie nimic greșit acolo
Nu am atins baza de date, dar mă întreb cum ar putea fi ceva din baza de date rău intenționat fără cod PHP special care să-l facă să funcționeze?
Blogul meu WordPress pare acum OK și fără hack (cred), dar mai sunt alte lucruri pe care ar trebui să le verific?

Ai identificat vectorul de exploitare? Dacă nu, este posibil să te expui la viitoare exploatări.
Alte aspecte de luat în considerare:
- Schimbă parolele utilizatorilor de administrare WordPress - finalizat
- Schimbă parola contului de hosting
- Schimbă parolele FTP
- Schimbă parola utilizatorului MySQL - finalizat
Schimbă prefixul tabelelor din baza de date- Actualizează nonces/salt din wp-config
- Verifică permisiunile fișierelor/directoarelor
- Blochează accesul la navigarea în directoare, prin
.htaccess
- Parcurge tot conținutul din articolul Codex Întărirea WordPress
- Parcurge tot conținutul din articolul Codex FAQ Site-ul meu a fost hackuit

scuze, am uitat să menționez -- am schimbat parolele WordPress desigur. Am actualizat postarea și am bifat pe listă aici! Nu-mi pot imagina niciun mod prin care ar putea avea parola de hosting sau parola FTP, doar intrând în WordPress; această informație nu se află nicăieri în sistemul de fișiere sau în baza de date.

Ai invers vectorul probabil de exploatare; nu este probabil WordPress -> cont de hosting, ci mai degrabă cont de hosting (prin server sau FTP) -> WordPress.

Aș adăuga "schimbă numele de utilizator admin". Ar trebui să fie obligatoriu!

@chip cum așa? parolele de hosting și FTP nu le-am folosit efectiv de 12 luni (evident, le-am folosit astăzi), și sunt ultra-aleatorii, așa cum au fost atribuite de host.

Faptul că este un hosting partajat (potențial) nu te expune la probleme?

@Jeff unele exploit-uri la nivel de server nu le poți controla (în afară de a găsi un host mai bun). Dar doar pentru că tu nu ai folosit credentialele de hosting/FTP nu înseamnă că cineva nu le-a furat, obținând acces la contul tău de hosting.

Există un exploit foarte comun care circulă în prezent, prin care un malware infectează stația de lucru (sau stația de lucru a unui contractor), caută parolele salvate în programul FTP preferat (sau un program cu suport FTP) și le trimite atacatorului, care apoi compromite site-ul și îl folosește pentru a răspândi același malware către alți webmasteri. Aceasta este o modalitate comună prin care parola FTP este furată. Ceea ce este deosebit de insidios este faptul că se răspândește prin site-uri normale precum al tău, nu prin cele dubioase unde ai fi mai atent.

Cred că ai uitat să menționezi scanarea temelor și pluginurilor. Unii oameni le descarcă de pe site-uri dubioase, iar multe dintre ele au deja cod rău intenționat - inclusiv injecții SQL în baza de date (nu va ajuta dacă le dezactivezi sau ștergi pur și simplu).

Pentru informare, dacă ai acces la linia de comandă, WP-CLI are o comandă verify checksums care va verifica fiecare fișier față de versiunea de pe wordpress.org

Analizând mesajul "safe browsing" din Google Chrome, apare hack-ul ".cc iFrame" care circulă intens în ultima vreme. Cred că versiunea 3.1.3 va rezolva problema, dar verifică fișierul index.php din directorul principal al site-ului tău, acolo am avut probleme până când am actualizat TOT și am schimbat toate parolele.
Există unele metode FOARTE viclene prin care utilizatorii pot injecta cod în postări și comentarii. Poți rula următoarele interogări în baza de date pentru a le identifica. Am descris restul metodologiei mele de "urmărire" aici.
SELECT * FROM wp_posts WHERE post_content LIKE '%<iframe%'
UNION
SELECT * FROM wp_posts WHERE post_content LIKE '%<noscript%'
UNION
SELECT * FROM wp_posts WHERE post_content LIKE '%display:%'
UNION
SELECT * FROM wp_posts WHERE post_content LIKE '%<?%'
UNION
SELECT * FROM wp_posts WHERE post_content LIKE '%<?php%'
SELECT * FROM wp_comments WHERE comment_content LIKE '%<iframe%'
UNION
SELECT * FROM wp_comments WHERE comment_content LIKE '%<noscript%'
UNION
SELECT * FROM wp_comments WHERE comment_content LIKE '%display:%'
UNION
SELECT * FROM wp_comments WHERE comment_content LIKE '%<?%'
UNION
SELECT * FROM wp_comments WHERE comment_content LIKE '%<?php%'
Sper că aceste informații te ajută!

Aș adăuga SELECT * FROM wp_* WHERE comment_content LIKE '%<?%'
și SELECT * FROM wp_* WHERE comment_content LIKE '%<?php%'
doar pentru a fi sigur...

Oh, o ultimă observație. Presupun că ai Google Webmaster Tools conectat la acest domeniu. După ce rezolvi problemele, poți trimite o cerere din contul tău Webmaster Tools pentru ca Google să rescaneze site-ul și să elimine mesajul de avertizare. De obicei procesează cererile din Webmaster Tools în decurs de o zi. Altfel, rămâi pe "lista neagră" pentru vreo 90 de zile.

Baza de date poate conține și cod rău intenționat: conturi de utilizator ascunse sau valori care sunt afișate fără a fi escapan undeva. De asemenea, verifică directorul de încărcare pentru fișiere care nu ar trebui să fie acolo.
Și încercați să înțelegeți cum a găsit atacatorul calea spre site-ul vostru. Pe conturile partajate, adesea întregul server este afectat. Verifică celelalte site-uri de pe server pentru bloguri sau alte pagini compromisate. Citește jurnalul FTP. Dacă nu știi cum s-a întâmplat, nu poți preveni următoarea încălcare.

@Jeff Atwood nu m-aș baza pe asta. Tabela ta de utilizatori nu este atât de mare. Poți să o citești ușor fără niciun plugin.

am verificat tabelul wp_users
și doar 2 rânduri, ambele așteptate.. nimic neobișnuit în folderul /upload
(doar gif-uri, png-uri și jpeg-uri)

@Jeff Atwood Ai verificat fișierele sau doar extensiile? Toate acele fișiere sunt listate în biblioteca media?

Fișierele de imagine sunt o metodă destul de comună de livrare a sarcinii utile. Vezi aici, iar Echipa de Revizuire a Temelor a întâlnit și Teme care folosesc o exploatare similară TIFF.) Deci, da: aș verifica fiecare, pentru a mă asigura că face parte din Biblioteca Media. (Scanare simplă la nivel înalt: verifică imaginile care nu au dimensiuni de thumbnail definite.)

Îmi pare rău că ai fost hack-uit - dar se pare că ai făcut o treabă bună la recuperare!
Sistemul tău de fișiere pare să fie în regulă, nu aș putea spune că mai este ceva de făcut aici.
Cred că Exploit Scanner ar arunca o avertizare dacă ar găsi scripturi, iframe-uri, PHP (deși periculos doar dacă este eval-uit) sau alte coduri neobișnuite în baza ta de date.
Nu sunt sigur dacă verifică tabelele în afară de postări și comentarii, ar putea fi util să verifici /wp-admin/options.php
pentru o privire rapidă și să vezi dacă observi ceva neobișnuit.
Aș verifica și tabelul de utilizatori într-un client MySQL (utilizatorii pot fi în baza de date dar nu vizibili în admin).

Verifică instrumentele Google Webmaster pentru două aspecte:
- confirmă că site-ul tău nu a fost marcat ca compromis și solicită reconsiderare dacă este cazul
- verifică site-ul tău ca Googlebot și asigură-te că nu există spam introdus care este vizibil doar pentru Googlebot - un exemplu în acest sens este hack-ul WP Pharma
De asemenea, aș reimplementa tema sau aș verifica-o extrem de atent. Câteva linii de PHP pot redefini funcțiile de bază ale PHP astfel încât să extragă cod rău intenționat din baza de date, în special din tabelele wp_options cheie / valoare

Caută în baza de date prin phpmyadmin după „iframe” sau exportă baza de date și caută în text.
Și verifică utilizatori invizibili în tabela de utilizatori; am văzut utilizatori în tabele care nu apăreau în WP Admin>>Utilizatori.
Clean Options « WordPress Plugins va arăta ce rămășițe de la plugin-uri vechi și posibil vulnerabile au rămas în baza de date.
Tema ta lipsește și tag-ul <head>
, așa că aș verifica asta în caz că ai editat tema pentru a elimina link-uri rele.
Și ca de obicei: Cum să găsești o backdoor într-un WordPress hack-uit și Hardening WordPress « WordPress Codex

Mi s-a întâmplat și mie odată, din cauza unei scurgeri de date pe mediatemple. A trebuit să scriu un plugin pentru a verifica baza de date în căutare de link-uri injectate. Îl poți descărca aici sub formă de gist pe GitHub.
Este destul de ușor de utilizat, are mai mulți pași care oferă feedback și verifică din nou baza de date după ce ai terminat.
Mult succes!

Am avut un hack foarte asemănător pe care a trebuit să-l repar pe unul dintre site-urile clienților mei.
Existau scripturi malicioase în sistemul de fișiere (coduri php base64_decode). Totuși, tabelele 'posts' și 'comments' din baza de date au fost compromise, iar codul iframe era împrăștiat și prin acele date.
Aș face cel puțin câteva căutări în baza de date, doar ca să fiu sigur. :)

Verificați-vă pluginurile! Până acum, în acest an, au fost lansate 60 de exploatări pentru pluginuri de pe .org. Bănuiesc că numărul real este mult mai mare, deoarece nimeni nu face acest lucru cu dedicare deplină.
Ai menționat că ai doar un plugin, dar acesta avea o vulnerabilitate de securitate (nu știu cât timp a fost expusă și poate nu a fost vectorul).
wp-recaptcha-plugin
Exploatarea a fost lansată: 2011-03-18
Versiunea afectată: 2.9.8
Autorul a declarat că a rescris pluginul în versiunea 3.0, dar nu există nicio mențiune despre patch-ul de securitate.
http://www.wpsecure.net/2011/03/wp-recaptcha-plugin/
Jurnalul modificărilor: http://wordpress.org/extend/plugins/wp-recaptcha/changelog/

Folosesc un server în cloud și am numere de port SSH aleatorii și nu am deloc FTP. Parolele sunt extrem de greu de spart. Toate accesurile root sunt complet interzise. Sunt de acord că WordPress nu va fi vinovatul. Un alt lucru de verificat sunt sesiunile FTP care nu se închid, virusul de pe computerul personal (rețineți că puteți încărca un fișier pe site-ul dvs. și cine încarcă acel fișier poate primi același virus), de asemenea, nu păstrați parolele pe site-uri publice sau private, scrieți-le întotdeauna pe hârtie, niciodată într-un document Word sau Notepad.
În cele din urmă, întrebați-vă gazda dacă a avut recent o încălcare a securității, deoarece ar trebui să aibă un firewall configurat.

Verifică data fișierelor tale. Niciun fișier nu ar trebui să aibă o dată de modificare mai recentă decât ultima ta editare/instalare!
Dar și acest lucru poate fi falsificat. Singura modalitate de a fi sigur ar fi să compari (de exemplu, prin comparare hash) toate fișierele cu cele din instalarea originală.
