W dzisiejszych czasach coraz więcej stron internetowych pada ofiarą ataków hakerskich i złośliwego oprogramowania. W szczególności, wiele stron opartych na PHP może zostać zainfekowanych przez szkodliwe skrypty. W artykule przedstawimy listę ważnych wyrażeń regularnych (regex), które pomogą w wykrywaniu zainfekowanych plików na Twojej stronie. Przedstawimy również opis każdej z reguł:
Lista komend regex do zastosowania:
grep -rnwl './' -e 'eval'
– Szukaj wywołań funkcji „eval” we wszystkich plikach w bieżącym katalogu i podkatalogach.grep -rnwl './' -e ']};}'
– Szukaj sekwencji „]};}”, która może być używana w złośliwym kodzie.grep -rnwl './' -e '}["'
– Szukaj sekwencji „}[” we wszystkich plikach w bieżącym katalogu i podkatalogach.grep --include=*\.php -rnwl './' -e '${${'
– Szukaj sekwencji „${${” tylko w plikach PHP.grep -rnwl './' -e '57h'
– Szukaj ciągu „57h” we wszystkich plikach w bieżącym katalogu i podkatalogach.grep -rnwl './' -e '3o'
– Szukaj ciągu „3o” we wszystkich plikach w bieżącym katalogu i podkatalogach.grep -rnwl './' -e '__O'
– Szukaj ciągu „__O” we wszystkich plikach w bieżącym katalogu i podkatalogach.grep -rnwl './' -e '__0'
– Szukaj ciągu „__0” we wszystkich plikach w bieżącym katalogu i podkatalogach.grep -rnw './' -e '057home'
– Szukaj ciągu „057home” we wszystkich plikach w bieżącym katalogu.grep -rlnw './' -e '057home'
– Szukaj ciągu „057home” we wszystkich plikach w bieżącym katalogu, wyświetlając tylko nazwy plików.find -name "*.ico"
– Znajdź wszystkie pliki z rozszerzeniem „.ico”.grep --exclude=\*.scss -rnwl './' -e '@include'
– Szukaj „@include” we wszystkich plikach, z wyjątkiem tych z rozszerzeniem „.scss”.grep --exclude=\*.{scss,css,map,js} -rnwl './' -e '@include'
– Szukaj „@include” we wszystkich plikach, z wyjątkiem tych z rozszerzeniami „.scss”, „.css”, „.map” i „.js”.
grep -rlnw './' -e '057ho'
– Szukaj ciągu „057ho” we wszystkich plikach w bieżącym katalogu, wyświetlając tylko nazwy plików.grep --exclude=\*.{svg,jpg,png,jpeg} -rlnw './' -e '057'
– Szukaj ciągu „057” we wszystkich plikach, z wyjątkiem tych z rozszerzeniami „.svg”, „.jpg”, „.png” i „.jpeg”.grep -rlnw './' -e '057h'
– Szukaj ciągu „057h” we wszystkich plikach w bieżącym katalogu, wyświetlając tylko nazwy plików.grep --include=\*.php -rnwl './' -e '@include'
– Szukaj „@include” tylko w plikach PHP.grep -rlnw './' -e '057hom'
– Szukaj ciągu „057hom” we wszystkich plikach w bieżącym katalogu, wyświetlając tylko nazwy plików.grep -rlnw './' -e '7hom'
– Szukaj ciągu „7hom” we wszystkich plikach w bieżącym katalogu, wyświetlając tylko nazwy plików.grep -rnwl './' -e 'bgeteam'
– Szukaj ciągu „bgeteam” we wszystkich plikach w bieżącym katalogu i podkatalogach.nano grep -rnwl './' -e 'abcd'
– Otwórz edytor tekstu Nano z wynikami wyszukiwania ciągu „abcd” we wszystkich plikach w bieżącym katalogu i podkatalogach.grep -rnwl './' -e 'abcd'
– Szukaj ciągu „abcd” we wszystkich plikach w bieżącym katalogu i podkatalogach.grep -rnwl './' -e '{eval'
– Szukaj sekwencji „{eval” we wszystkich plikach w bieżącym katalogu i podkatalogach.
Ważne jest, aby regularnie skanować swoje strony internetowe w poszukiwaniu zainfekowanych plików i złośliwego oprogramowania. Powyższa lista regex może pomóc w identyfikacji potencjalnych zagrożeń i umożliwić szybką reakcję na problemy związane z bezpieczeństwem. Upewnij się, że wykonujesz te skanowania często, aby chronić swoją stronę i jej użytkowników przed atakami hakerów.
Inne ważne wyrażenia regularne do wykrywania zainfekowanych stron internetowych:
grep -rnwl './' -e 'base64_decode'
– Szukaj wywołań funkcji „base64_decode”, która może być używana do ukrywania złośliwego kodu.grep -rnwl './' -e 'str_rot13'
– Szukaj wywołań funkcji „str_rot13”, która może być stosowana do szyfrowania złośliwych ciągów.grep -rnwl './' -e 'gzinflate'
– Szukaj wywołań funkcji „gzinflate”, która może być używana do dekompresji złośliwego kodu.grep --include=*\.php -rnwl './' -e 'shell_exec'
– Szukaj wywołań funkcji „shell_exec” tylko w plikach PHP, która pozwala na wykonywanie poleceń systemowych.grep --include=*\.php -rnwl './' -e 'system'
– Szukaj wywołań funkcji „system” tylko w plikach PHP, która pozwala na wykonywanie poleceń systemowych.grep -rnwl './' -e 'shell_exec'
– Szukaj wywołań funkcji „shell_exec”, która może być używana do wykonywania poleceń systemowych.grep -rnwl './' -e 'assert'
– Szukaj wywołań funkcji „assert”, która może być używana do wykonywania złośliwego kodu.
Najważniejsze aspekty dbania o bezpieczeństwo:
- Regularne aktualizacje: Upewnij się, że system zarządzania treścią (CMS), wtyczki oraz motywy są zawsze aktualne, aby uniknąć luk bezpieczeństwa.
- Silne hasła: Używaj silnych i unikalnych haseł dla kont administratora oraz bazy danych.
- Ograniczenie dostępu: Ogranicz dostęp do panelu administracyjnego tylko do zaufanych adresów IP.
- Szyfrowanie danych: Używaj certyfikatów SSL/TLS, aby zapewnić bezpieczne połączenie między serwerem a użytkownikami.
- Regularne kopie zapasowe: Wykonuj regularne kopie zapasowe swojej strony internetowej i bazy danych, aby mieć możliwość szybkiego przywrócenia w przypadku infekcji.
- Skanowanie w poszukiwaniu złośliwego oprogramowania: Regularnie skanuj swoją stronę, używając narzędzi do wykrywania złośliwego oprogramowania i monitorowania bezpieczeństwa.
W bazie danych WordPressa zadaj następujące zapytania:
- Zmiana prefiksu tabel: Domyślnie, wszystkie tabele w bazie danych WordPressa mają prefiks „wp_”. Zmiana tego prefiksu może utrudnić atakom SQL Injection.
- Ochrona przed SQL Injection: Regularnie sprawdzaj zapytania SQL wykonywane przez Twoją stronę i upewnij się, że są one bezpieczne oraz korzystają z parametryzacji zapytań lub funkcji
prepare()
dostępnej w WordPress, aby zapobiec atakom SQL Injection. - Ograniczenie uprawnień użytkownika bazy danych: Użytkownik bazy danych WordPressa powinien mieć ograniczone uprawnienia – tylko te, które są niezbędne do prawidłowego działania strony. Unikaj nadawania uprawnień takich jak DROP, ALTER, czy GRANT.
- Monitoring dzienników: Regularnie monitoruj dzienniki serwera i bazy danych, aby wykryć ewentualne podejrzane aktywności, które mogą wskazywać na atak lub próbę włamania.
- Bezpieczne przechowywanie haseł: WordPress używa silnego mechanizmu szyfrowania haseł opartego na soli i wielokrotnym skrócie. Upewnij się, że Twoja strona korzysta z najnowszych funkcji bezpieczeństwa haseł.
- Audyt bezpieczeństwa: Regularnie przeprowadzaj audyt bezpieczeństwa swojej strony, sprawdzając zarówno pliki, jak i bazę danych pod kątem potencjalnych zagrożeń i podejrzanych zmian.
- Ochrona przed atakami typu XSS (Cross-site Scripting): Zabezpiecz swoją stronę przed atakami XSS, stosując odpowiednie funkcje oczyszczania danych wejściowych, takie jak
esc_html()
orazwp_kses()
.
Pamiętaj, że dbanie o bezpieczeństwo swojej strony internetowej to nie tylko kwestia techniczna, ale również odpowiedzialność wobec użytkowników i klientów. Regularne skanowanie plików, monitorowanie bazy danych oraz stosowanie najlepszych praktyk bezpieczeństwa pozwoli Ci utrzymać swoją stronę w jak najlepszym stanie i zminimalizować ryzyko ataków hakerskich.
Wykrywanie infekcji WordPressa poprzez zapytania do bazy danych może pomóc w identyfikacji złośliwych wpisów, które mogą być trudne do wykrycia tylko na podstawie analizy plików. Poniżej przedstawiam kilka zapytań SQL, które można wykonać, aby sprawdzić, czy baza danych WordPressa została zainfekowana:
hljs-operator
- Wyszukiwanie złośliwego kodu w tabeli
wp_posts
:SELECT * FROM wp_posts WHERE post_content LIKE '%base64_decode%' OR post_content LIKE '%eval%' OR post_content LIKE '%gzinflate%';
- Wyszukiwanie złośliwego kodu w tabeli
wp_options
:SELECT * FROM wp_options WHERE option_value LIKE '%base64_decode%' OR option_value LIKE '%eval%' OR option_value LIKE '%gzinflate%';
- Wyszukiwanie nieautoryzowanych administratorów:
SELECT * FROM wp_users WHERE ID NOT IN (SELECT user_id FROM wp_usermeta WHERE meta_key = 'wp_capabilities' AND meta_value NOT LIKE '%administrator%');
- Wyszukiwanie podejrzanych linków w tabeli
wp_posts
:SELECT * FROM wp_posts WHERE post_content LIKE '%<iframe%' OR post_content LIKE '%<script%' OR post_content LIKE '%<noscript%';
- Wyszukiwanie podejrzanych aktywności w tabeli
wp_users
:SELECT * FROM wp_users WHERE user_login LIKE 'admin%' OR user_email LIKE '%.ru' OR display_name LIKE 'admin%';
- Wyszukiwanie podejrzanych danych w tabeli
wp_comments
:SELECT * FROM wp_comments WHERE comment_content LIKE '%<script%' OR comment_content LIKE '%<iframe%';
- Wyszukiwanie podejrzanych adresów URL w tabeli
wp_links
:SELECT * FROM wp_links WHERE link_url LIKE '%.ru' OR link_url LIKE '%.cn';
SELECT * FROM wp_users WHERE user_login REGEXP 'admin'
– Wyszukaj użytkowników z nazwą „admin”, aby zmienić nazwę użytkownika na bardziej bezpieczną.SELECT * FROM wp_posts WHERE post_content REGEXP '<iframe'
– Wyszukaj wpisy zawierające znacznik „<iframe>”, który może być używany do wstrzykiwania złośliwego kodu.
Wyniki tych zapytań mogą zawierać fałszywe pozytywy, więc zawsze dokładnie sprawdzaj wyniki, zanim podejmiesz działania. Niektóre z tych zapytań mogą być mniej lub bardziej przydatne w zależności od konkretnej konfiguracji Twojej strony, więc warto dostosować je do swoich potrzeb. Regularne monitorowanie bazy danych WordPressa w poszukiwaniu potencjalnych zagrożeń może pomóc w utrzymaniu bezpieczeństwa strony.