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:

  1. grep -rnwl './' -e 'eval' – Szukaj wywołań funkcji „eval” we wszystkich plikach w bieżącym katalogu i podkatalogach.
  2. grep -rnwl './' -e ']};}' – Szukaj sekwencji „]};}”, która może być używana w złośliwym kodzie.
  3. grep -rnwl './' -e '}["' – Szukaj sekwencji „}[” we wszystkich plikach w bieżącym katalogu i podkatalogach.
  4. grep --include=*\.php -rnwl './' -e '${${' – Szukaj sekwencji „${${” tylko w plikach PHP.
  5. grep -rnwl './' -e '57h' – Szukaj ciągu „57h” we wszystkich plikach w bieżącym katalogu i podkatalogach.
  6. grep -rnwl './' -e '3o' – Szukaj ciągu „3o” we wszystkich plikach w bieżącym katalogu i podkatalogach.
  7. grep -rnwl './' -e '__O' – Szukaj ciągu „__O” we wszystkich plikach w bieżącym katalogu i podkatalogach.
  8. grep -rnwl './' -e '__0' – Szukaj ciągu „__0” we wszystkich plikach w bieżącym katalogu i podkatalogach.
  9. grep -rnw './' -e '057home' – Szukaj ciągu „057home” we wszystkich plikach w bieżącym katalogu.
  10. grep -rlnw './' -e '057home' – Szukaj ciągu „057home” we wszystkich plikach w bieżącym katalogu, wyświetlając tylko nazwy plików.
  11. find -name "*.ico" – Znajdź wszystkie pliki z rozszerzeniem „.ico”.
  12. grep --exclude=\*.scss -rnwl './' -e '@include' – Szukaj „@include” we wszystkich plikach, z wyjątkiem tych z rozszerzeniem „.scss”.
  13. 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”.
  1. grep -rlnw './' -e '057ho' – Szukaj ciągu „057ho” we wszystkich plikach w bieżącym katalogu, wyświetlając tylko nazwy plików.
  2. 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”.
  3. grep -rlnw './' -e '057h' – Szukaj ciągu „057h” we wszystkich plikach w bieżącym katalogu, wyświetlając tylko nazwy plików.
  4. grep --include=\*.php -rnwl './' -e '@include' – Szukaj „@include” tylko w plikach PHP.
  5. grep -rlnw './' -e '057hom' – Szukaj ciągu „057hom” we wszystkich plikach w bieżącym katalogu, wyświetlając tylko nazwy plików.
  6. grep -rlnw './' -e '7hom' – Szukaj ciągu „7hom” we wszystkich plikach w bieżącym katalogu, wyświetlając tylko nazwy plików.
  7. grep -rnwl './' -e 'bgeteam' – Szukaj ciągu „bgeteam” we wszystkich plikach w bieżącym katalogu i podkatalogach.
  8. 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.
  9. grep -rnwl './' -e 'abcd' – Szukaj ciągu „abcd” we wszystkich plikach w bieżącym katalogu i podkatalogach.
  10. 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:

  1. grep -rnwl './' -e 'base64_decode' – Szukaj wywołań funkcji „base64_decode”, która może być używana do ukrywania złośliwego kodu.
  2. 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.
  3. grep -rnwl './' -e 'gzinflate' – Szukaj wywołań funkcji „gzinflate”, która może być używana do dekompresji złośliwego kodu.
  4. grep --include=*\.php -rnwl './' -e 'shell_exec' – Szukaj wywołań funkcji „shell_exec” tylko w plikach PHP, która pozwala na wykonywanie poleceń systemowych.
  5. grep --include=*\.php -rnwl './' -e 'system' – Szukaj wywołań funkcji „system” tylko w plikach PHP, która pozwala na wykonywanie poleceń systemowych.
  6. grep -rnwl './' -e 'shell_exec' – Szukaj wywołań funkcji „shell_exec”, która może być używana do wykonywania poleceń systemowych.
  7. 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:

  1. Regularne aktualizacje: Upewnij się, że system zarządzania treścią (CMS), wtyczki oraz motywy są zawsze aktualne, aby uniknąć luk bezpieczeństwa.
  2. Silne hasła: Używaj silnych i unikalnych haseł dla kont administratora oraz bazy danych.
  3. Ograniczenie dostępu: Ogranicz dostęp do panelu administracyjnego tylko do zaufanych adresów IP.
  4. Szyfrowanie danych: Używaj certyfikatów SSL/TLS, aby zapewnić bezpieczne połączenie między serwerem a użytkownikami.
  5. Regularne kopie zapasowe: Wykonuj regularne kopie zapasowe swojej strony internetowej i bazy danych, aby mieć możliwość szybkiego przywrócenia w przypadku infekcji.
  6. 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:

  1. Zmiana prefiksu tabel: Domyślnie, wszystkie tabele w bazie danych WordPressa mają prefiks „wp_”. Zmiana tego prefiksu może utrudnić atakom SQL Injection.
  2. 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.
  3. 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.
  4. 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.
  5. 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ł.
  6. 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.
  7. 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() oraz wp_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

  1. 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%';
  2. 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%';
  3. 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%');
  4. 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%';
  5. 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%';
  6. Wyszukiwanie podejrzanych danych w tabeli wp_comments:
    SELECT * FROM wp_comments WHERE comment_content LIKE '%<script%' OR comment_content LIKE '%<iframe%';
  7. Wyszukiwanie podejrzanych adresów URL w tabeli wp_links:
    SELECT * FROM wp_links WHERE link_url LIKE '%.ru' OR link_url LIKE '%.cn';
  8. SELECT * FROM wp_users WHERE user_login REGEXP 'admin' – Wyszukaj użytkowników z nazwą „admin”, aby zmienić nazwę użytkownika na bardziej bezpieczną.
  9. 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.