...úgy kezdődik, hogy adott egy fix string, utána legalább 5, de akár több ezer (!) szóköz és a szóközök után pedig még legalább öt, szóköztől eltérő karakter van. Mindez egy sorban.
Számos, főleg Joomla és Wordpress alapú oldal kerül így, vagy úgy feltörésre. Nagyon sok alkalommal látok olyat, hogy a feltörés után meglévő fájlok első sorába beépül egy plusz sor. Ez a sor kezdődik a "<?php"-val, kb. két képernyőszélességnyi szóköz után pedig indul valami csúnya kód, aminek a végén megvan a "?>"
"Szerkesztő" nézetben ez nem is látszik, csak az első sor elején a "<?php". Ha sortöréssel nyitom meg, akkor válik láthatóvá a sor többi része is.
Eljutottam oda, hogy ki tudom listázni azon fájlokat, melyek a felsorolt kiterjesztésű fájlok valamelyikének megfelelnek és van bennük ilyen sztring:
"<?php__________________________________________________________________________________________________________________________"
Ezeket a fájlokat ezzel tudtam kerestetni:
find /root/Virus -iregex ".*\.\(php\|html\|htm\|js\)" -exec bash -c 'grep -q "<?php__________________________________________________________________________________________________________________________"' {} \; -print
Annyi a szépséghibája ennek, hogy nagy ritkán előfordulnak olyan kódok, ami "rendes" kód, a "<?php" után a kedves programozó még odatett akár 40-50 szóköz karaktert, majd nyomott egy entert. Így tehát akad némi "fals pozitív" találat is. De ha a keresés azt is figyelné, hogy a kb. száz szóköz után még ugyanabban a sorban van-e egyéb karakter, mely több, mint egy "?>", akkor az számomra tökéletes lenne.
De fogalmam sincs, hogy kéne ezt leprogramozni. Tudtok ebben segíteni?
Fontos lenne az, hogy egy "exec"-el megfogalmazható legyen. Ugyanis több, egyéb dologra is kerestetnék, azaz a find-del kerestetett fájlokat vizsgálnám, hogy van-e bennünk "valamisztring", VAGY a kérdéses "php sokszóköz és még pár egyéb karakter egy sorban" sor, így:
find /root/Virus -iregex ".*\.\(php\|html\|htm\|js\)" \( -exec grep -q 'valamifeltetel' {} \; -o -exec grep -q "<?php__________________________________________________________________________________________________________________________" {} \; \) -print
A sok "aláhúzás" karakter valójában szóköz, de a fórummotor több egymás utáni szóközt egy szóközre cserél, így nem annyira lenne látható a kód.