Honlap hackelést felderítő script


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.

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.

Kapcsolódó bejegyzések:
  • Kijött az új wordpress, érdemes frissíteni rá aki ezt a blogmotort használja, mert van benne pár biztonsági frissítés is illetve bugfix. A hivatalos upgrade leír …

  • Biztos nem tudja mindenki, hogy a wordpress-ben már nem kell az oldal lapozáshoz plugint telepíteni, tudja a rendszer alapértelmezetten is. Számomra rejtélyes ok …

  • Ez egy apró kis leírás lesz, de talán másnak időt spórolok meg vele. A wordpress nyelvesítésről van szó, de nem az alap rendszeréről hanem a theme fordítás részé …

  • Felmerült ma délután egy kérdés és mivel hirtelen én sem tudtam rá a pontos választ, utánanéztem. A kérdés az alábbi volt: hogy lehet a böngészőt letöltési ablak …

  • Az All in One SEO Pack az egyik legjobb SEO plugin amit manapság WordPress-hez lehet találni. Ami viszont nem tetszik benne, az …az, hogy a kategória o …

A cikket beküldte: Harder (http://blog.harder.hu)

9 hozzászólás

  1. Judit says:

    Köszönjük Nektek! Szerintem, mindenki ellenőrizze a weblapját!

  2. SeSam says:

    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.

  3. Harder says:

    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. :)

  4. mad says:

    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 :-).

  5. Gr3g says:

    @mad
    De ha webroot fölött van a script és cronból hívkálod már jó is lehetsz :)

  6. Buffalo Jerky says:

    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?

  7. Harder says:

    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.

  8. Buffalo Jerky says:

    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.)

  9. Gabor says:

    É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.

Szólj hozzá
a Honlap hackelést felderítő script c. bejegyzéshez

- Engedélyezett HTML elemek: <a> <em> <strong> <ul> <ol> <li>
- Forráskód beküldéséhez tedd a kódot ezek közé: <pre lang="php" line="1">Kódrészlet helye itt</pre>