A minap Merras írt egy hasznos és tanulságos bejegyzést a blogjára Életveszélyes WordPress SEO spamek, amik kinyírhatják a helyezéseidet címmel, ami szóbakerült egy chat-en mint wordpress, wordpress feltörés, hackelés stb…
E beszélgetés vége az lett, hogy TLoF írt egy nagyon hasznos PHP scriptet (WordPress Hack Detector), mely segít felderíteni, hogy
- feltörték-e a lapot (módosultak-e fájlok)
- és ha igen, mely fájlok módosultak
Ezúton is köszönjük neki! :)
A program egyszerű és mindössze egyetlen fájlból áll, melyet fel kell tölteni a tárhelyre (pl. a wordpress root könyvtárába). Persze nem csak WordPress blog kapcsán hasznos, bármilyen más rendszerhez is jó. Emiatt a fájlneve kicsit megtévesztő lehet de most már marad e. :)
A program alapértelmezetten a PHP, INC, TPL, JS és HTML kiterjesztésű fájlokat vizsgálja, ellenőrzi.
A basedir-től számítva a script futtatásakor az összes alkönyvtárat feltérképezi, a bennük található fájlokról pedig fejlegyzést készít az alábbi adatokkal:
- utolsó módosítás dátuma
- a fájl md5 összege
A script futtatásakor (amikor meghívod böngészőből) a fájlokról tárolt régebbi adatokat hasonlítja össze az újakkal, jelzi az új fájlokat és azokat, melyek megváltoztak.
A törölt fájlokkal nem foglalkozik, hiszen ha azok eddig sem hiányoztak, biztonsági kockázatot biztos nem jelentenek.
Tartalomjegyzék
A script futtatása
Első ugye mindenképp le kell legalább 1x futtatni a scriptet, hogy az a szükséges adatokat el tudja menteni.
Utána jöhetnek a frissítő – ellenőrző futtatások, amikor már tényleges csekkolja, hogy történt-e vmi gubanc a fájlokkal.
A kódban van egy ilyen részlet:
$password = ''; |
Itt tetszőleges jelszó adható meg. A példa kedvéért most legyen a jelszó a „tutorialponthu”, szóval ez esetben a scriptet majd így kellene meghívni:
1 | wphackdetector.php?write=on&password=tutorialponthu |
Miután megadtad az új jelszót, azt értelemszerűen a link végére, az egyenlőségjel után be kell írnod amikor futtatod a scriptet a böngésződben.
Az adatokat gyűjti egy fájlba amit maga mellett hoz létre rkh.data néven.
Ehhez a file-t üresen létre kell hozni, és ideiglenesen irás jogot adni a file-ra a webszervernek. Egy átlagos WordPress honlapnál kb 100-200 kbyte körüli fájl jön létre.
Önellenőrző rész
Mvel készülni kell arra, hogy a progi adatbázisát is megpiszkálhatják, ezért erről is készül egy ellenörző md5 összeg.
Ezt az értéket mindig kiírja a rendszer az éppen aktuális file alapján, illetve amikor frissülnek az adatok a file-ban az új érték is megjelenik a képernyőn. Ezt ajánlott elmenteni valahova, és a következő futáskor megnézni, hogy változott-e.
A script eredménye
A script futtatásakor 2 fajta eredményt lehet kapni.
Amikor minden rendben
Ha minden rendben van, akkor képernyőn kb ennyi információ fog megjelenni:
1 2 3 4 | RKH MD5 226671f4f5d4e374za2csi94b7c3621e New files: Changed files: |
Tehát nincs új fájl és nem is módosult semmi.
Amikor valami változott
1 2 3 4 5 6 7 | RKH MD5 226671f4f5d4e374za2cfc94b7c3621e RKH DATA UPDATED NEW MD5 HASH: 69a5a8c7b43dad40cf90391b37cdebab New files: Changed files: ./olvasdel.html :: 2011-02-24 10:04:35 |
Mint látható, egyből látszódik, hogy módosult (+ hogy mikor) az olvasdel.html fájlom.
Letöltés
A WordPress Hack Detector php script itt tölthető le: wphackdetectorv2.zip
A ZIP-ben 1db PHP fájl van.
Kérdés, kérés, javaslat szívesen látott dolog.
Köszönjük Nektek! Szerintem, mindenki ellenőrizze a weblapját!
Köszi a scriptet, igen hasznos. :]
Találtam viszont pár bugot:
– A bejegyzésben rhk.data a kért filenév, viszont a script rkh.data nevű filet vár. (Érdekesség, hogy a kódban konzisztensen function rhk(); van, de ettől még működik, valamint az egyik szöveg is „RHK DATA UPDATED”. Minden más esetben rkh.)
– Ha nem adsz meg jelszót, akkor sohasem menti el a filet. Ez azért van, mert a fileba mentés függvénye ellenőrzi a jelszó egyenlőségét, viszont előtte a kód az üres jelszót kicseréli egy véletlenszerű md5-re.
Köszi a visszajelzést! Ahol tudtam, módosítottam most az rkh vs rhk-t illetve tettem default jelszót is a scriptbe, majd módosítottam a cikk szövegét. :)
Azért ha már fájlokat módosítanak, akkor azt is igazán megtehetik, hogy egyszerűen átírják a scriptet (önellenőrzést kiszedik, bármi). De szerintem ahol ilyen előfordul, ott már régen nagyobb bajok vannak :-).
@mad
De ha webroot fölött van a script és cronból hívkálod már jó is lehetsz :)
No és ez csak WP-hez működik, más honlapokhoz nem használható?
Ebből a kérdésből is látszik, hogy nem tudom, hogy működik, de ha nem tároljuk a tárhelyen sem magát a scriptet, sem a korábbi ellenőrzés eredményét, akkor gondolom nincs esély arra, hogy egy esetleges támadás esetleg felülírja. Vagy nem lehet ezeket csak úgy egyszerűen visszamásolgatni?
Mint ahogy azt a cikk is tartalmazza: „Persze nem csak WordPress blog kapcsán hasznos, bármilyen más rendszerhez is jó.” :P
Ha lemented magadnak azt a fájl, ami az eredményeket tárolja és a köv. ellenőrzés előtt visszamásolod, akkor tökmindegy, hogy a támadás során felülírták-e vagy sem.
No igen, gondoltam, hogy ez a második így lesz (a visszamásolgatós módszerrel kapcs.), az első kérdésemre pedig köszi a választ és bocsi, tényleg nem olvastam el figyelmesen a posztot! (Igazából csak átfutottam, mert én nem WP-t használok.)
Én joomlás oldalt néztem meg vele, és tökéletesen működött! Köszönet a fejlesztőnek! Meg is találtam a módosított php állományt. Lehet hogy még hasznos lenne egy olyan változata amivel egy adott időintervallumot vizsgál a script. Mert ha tudom a betörés időpontját akkor csak azt szeretném tudni hogy mely állományok változtak akkor. Nekem speciel egy áttelepítés miatt az összes, hónapokkal korábbi állományt is kilistázta.