---
title: "Skaner malware w hostingu – wykrywanie backdoorów i webshelli | Hosteam"
description: "Skaner plików w każdym planie hostingu co 6 godzin szuka backdoorów, webshelli i podmienionych plików w WordPressie, Joomli i PrestaShop. Jawna lista reguł."
canonical_url: "https://hosteam.pl/pl/skaner"
meta:
  "og:description": "Skaner plików w każdym planie hostingu co 6 godzin szuka backdoorów, webshelli i podmienionych plików w WordPressie, Joomli i PrestaShop. Jawna lista reguł."
  "og:image": "https://hosteam.pl/img/og-default.jpg"
  "og:title": "Skaner malware w hostingu – wykrywanie backdoorów i webshelli | Hosteam"
---

> Index of every page on this site: [llms.txt](https://hosteam.pl/llms.txt)

# **Skaner plików – złośliwy kod na stronie wykryty w ciągu godzin**

Co 6 godzin sprawdzamy pliki każdego konta hostingowego – szukamy backdoorów, webshelli i podmienionych skryptów. Gdy coś znajdziemy, widzisz to w panelu z nazwą zagrożenia, ścieżką pliku i wskazówką, co zrobić.

**Skan co 6 godzin****WordPress, Joomla, PrestaShop, Magento****Jawna lista reguł****W cenie hostingu**

## **Co daje Ci skaner plików**

### Włamanie widzisz pierwszy

Webshell, backdoor ukryty w obrazku czy podmieniony .htaccess pojawia się w panelu po najbliższym skanie – nie po skardze klienta czy ostrzeżeniu w Google.

### Infekcja go nie oszuka

Skaner działa na serwerze, poza kontenerem Twojego konta. Zainfekowana strona go nie widzi, nie wyłączy go i nie ukryje przed nim plików.

### Zna Twój CMS

Rozpoznaje układ katalogów WordPressa, Joomli, PrestaShop i Magento – wie, gdzie kod ma prawo być, a gdzie nie, więc zgłasza mniej fałszywych alarmów.

### Najpierw to, co pilne

Plik dostępny z internetu – a zwłaszcza taki, który ktoś właśnie wywołuje – trafia na górę listy. Powiadamiamy Cię tylko o sprawach, które wymagają działania.

### Przegląd jednym kliknięciem

Nie wiesz, co zrobić ze znaleziskiem? Jednym kliknięciem w panelu prosisz nasz zespół, żeby przejrzał plik.

### Bez wtyczek i konfiguracji

Niczego nie instalujesz i nic nie ustawiasz. Skaner działa po stronie serwera i nie zmienia kodu Twojej strony.

## **Jak działa skaner plików**

Przy pierwszym skanie skaner zapisuje stan każdego pliku na koncie, a przy kolejnych czyta tylko to, co się zmieniło: nowe i zmienione skrypty PHP, pliki .htaccess, dowiązania oraz pliki o „niewinnym” rozszerzeniu, w których ktoś ukrył kod – na przykład obrazek w katalogu uploads, który w środku jest skryptem.

Każde znalezisko dostaje jedną z dwóch ocen. **Zagrożenie** to plik, który reguła jednoznacznie rozpoznaje jako złośliwy. **Plik podejrzany** wygląda jak technika włamywaczy, ale bywa też w zwykłym kodzie – warto go sprawdzić. Do tego dochodzi pytanie, czy plik jest dostępny z internetu. Z obu odpowiedzi powstają trzy statusy w panelu: **wymaga działania** (wtedy wysyłamy powiadomienie), **do sprawdzenia** i **w porządku**.

### Skaner na serwerze czy wtyczka bezpieczeństwa?

Wtyczka bezpieczeństwa w WordPressie działa wewnątrz strony, którą ma chronić. Kto przejmie stronę, może ją wyłączyć albo podsunąć jej czyste pliki. Skaner hostingu działa poza Twoim kontem i ogląda pliki bezpośrednio na dysku, więc złośliwy kod nie ma na niego wpływu. Wtyczki nie musisz usuwać – oba rozwiązania się uzupełniają.

## **Czego szukamy – pełna lista reguł**

To jest cała lista. Nie mamy ukrytych reguł – „w porządku” znaczy, że żadna z nich niczego nie znalazła.

Reguły 2026-10-08.3 · każde konto co 6 godzin · 20 reguł, 6 klas pomijanych

### **Zagrożenia — nazywamy, co znaleźliśmy**

Myli się tylko wtedy, gdy zrobiłeś to celowo. Na stronie widocznej z sieci — powiadamiamy.

<dl>

<dt>**Skrypt PHP w katalogu z plikami**</dt>
<dd>Plik .php pod wp-content/uploads (zagrożenie; pod uploads/cache i w katalogach, które pluginy trzymają tam dla siebie — redux, aios, sucuri, fusion-builder, tcpdf_fonts — podejrzane) albo w katalogu images/img/media/files/upload/download instalacji (podejrzane). CMS-y nie zapisują tam kodu; atakujący wgrywają go przez formularze. Katalog liczy się względem najbliższej instalacji: WordPress, Joomla, PrestaShop czy projekt Composera wgrany pod images/ jest oceniany jako instalacja, nie jako upload. Zaślepki index.php (pusty plik, komentarz, header()+exit) są pomijane.</dd>

<dt>**Kod PHP w pliku o innym rozszerzeniu**</dt>
<dd>Plik .ico, .jpg, .png itp. zawierający znacznik &lt;?php (zagrożenie): taki plik jest dołączany przez inny skrypt (include), żeby nie rzucać się w oczy. Kopia skryptu (.bak/.old/.suspected/.php_/.php~) albo plik bez rozszerzenia z kodem PHP to podejrzane. Plik tekstowy, dokumentacja, szablon czy fixture testowy (.txt/.md/.html/.tpl/.twig/.stub/.dist/.fixed/.ini/.po…) z kodem PHP to nic — serwer go nie wykonuje, a dokumentacja PHP zawiera PHP; taki plik jest mimo to czytany przez sygnatury. Pliki w katalogach cache i archiwa są pomijane. Znacznik liczy się, gdy po nim idzie tekst — przypadkowe „&lt;?=” w danych obrazka nie.</dd>

<dt>**.htaccess wykonuje inne rozszerzenia jako PHP**</dt>
<dd>AddHandler/AddType/SetHandler mapujący .ico/.jpg/.txt/.html/.js itp. na PHP. Plik z Options -ExecCGI obok to blokada wykonywania w katalogu uploads, nie znalezisko.</dd>

<dt>**auto_prepend_file / auto_append_file**</dt>
<dd>php_value auto_prepend_file w .htaccess albo auto_prepend_file w .user.ini: wskazany plik wykonuje się przed każdym skryptem strony. Znane stuby firewalli wtyczek (wordfence-waf.php, aios-bootstrap.php) są podejrzane.</dd>

<dt>**.htaccess serwuje PHP jako tekst**</dt>
<dd>AddType text/plain .php, RemoveHandler .php albo SetHandler default-handler, zwykle z Options +FollowSymLinks: przeglądarka dostaje źródło plików konfiguracyjnych zamiast wyniku. Tak wyglądał config grabber na ht7121. Liczy się tylko w katalogu, w którym leży jakiś plik .php — w katalogu uploads bez skryptów to blokada wykonywania.</dd>

<dt>**Zbiór skopiowanych plików konfiguracyjnych**</dt>
<dd>Katalog z co najmniej 10 plikami *config*.txt / *configuration*.txt / *wp-config*.txt: zebrane cudze pliki konfiguracyjne z hasłami.</dd>

<dt>**Znany webshell**</dt>
<dd>Nazwy i napisy znanych rodzin webshelli: c99, r57, WSO, b374k, FilesMan, IndoXploit, Alfa, p0wny, weevely, AnonymousFox — jako całe słowa; zbiór reguł Wordfence (wp-content/wflogs) jest pomijany.</dd>

<dt>**Zmieniony plik rdzenia WordPressa**</dt>
<dd>Plik w wp-admin/, wp-includes/ albo w katalogu głównym instalacji ma inną sumę kontrolną niż ta, którą wordpress.org publikuje dla zainstalowanej wersji (en_US i pl_PL). Plik identyczny z plikiem innego wydania WordPressa (niedokończona aktualizacja) to podejrzane.</dd>

<dt>**Obcy plik w rdzeniu WordPressa**</dt>
<dd>Skrypt w wp-admin/ lub wp-includes/, którego wordpress.org nie wysyła w tej wersji (zagrożenie); w katalogu głównym instalacji — podejrzane, bo klienci kładą tam własne pliki. Plik identyczny z plikiem innego wydania WordPressa to podejrzane.</dd>

<dt>**Sygnatura YARA**</dt>
<dd>Plik pasuje do reguły YARA z paczki sygnatur na serwerze — wzorce znanych rodzin webshelli i backdoorów. Źródła reguł są wymienione niżej, każde z liczbą reguł i licencją; szczegół znaleziska podaje źródło i nazwę reguły. Reguła, której autor nadał niski score, i reguły generyczne wymienione w źródle jako słabe (duże pliki z dynamicznymi wywołaniami, callbacki) są tylko podejrzane, chyba że trafi też reguła konkretna.</dd>

<dt>**Sygnatury webshelli: signature-base (Nextron Systems)**</dt>
<dd>Publiczny zbiór reguł YARA Floriana Rotha i Arnima Ruppa — część o webshellach: generyczne wzorce PHP/ASP/JSP (eval danych z żądania, zaciemnione ładunki, kod w obrazku), rodziny c99/r57/WSO/b374k/China Chopper/p0wny, zestawy chińskich pentesterów, backdoor w php_zlib. Reguły oceniane przez autorów score poniżej 70 oznaczamy jako podejrzane. 819 reguł z https://github.com/Neo23x0/signature-base@94a1c48d, licencja DRL 1.1.</dd>

<dt>**Reguły własne**</dt>
<dd>Wzorce z tego, co znajdujemy na własnej flocie, a czego publiczne zbiory nie opisują — na dziś strony-wrota SEO (inna treść dla robota wyszukiwarki niż dla człowieka). 1 reguł, licencja proprietary.</dd></dl>

### **Podejrzane — wyglądają jak technika włamywaczy**

Bywają też w zwykłym kodzie, więc są na liście do sprawdzenia — powiadamiamy dopiero, gdy ktoś taki plik wywołuje.

<dl>

<dt>**Przekierowanie zależne od User-Agent**</dt>
<dd>RewriteCond na HTTP_USER_AGENT (googlebot/bing/yahoo) z RewriteRule na zewnętrzny adres: wyszukiwarki widzą inną treść niż ludzie (SEO spam, pharma hack).</dd>

<dt>**Dowiązanie poza katalog konta**</dt>
<dd>Dowiązanie symboliczne wskazujące poza katalog domowy konta. W kontenerze nie sięga innych klientów, ale jest klasycznym narzędziem config grabbera. Dowiązanie do gniazda (socket PostgreSQL/MySQL) to nic.</dd>

<dt>**Zaciemniony kod PHP**</dt>
<dd>eval(base64_decode(…)), gzinflate/str_rot13 w eval, assert() lub funkcja wołana z $_POST/$_GET — albo dwa słabsze sygnały naraz: preg_replace z modyfikatorem /e, create_function, łańcuchy chr()/\x.., długi blok base64. Sam create_function czy łańcuch \x.. to stary, uczciwy kod. Legalny kod też bywa tak pisany (licencjonowane pluginy, ioncube), stąd tylko podejrzane.</dd>

<dt>**Archiwum lub zrzut bazy w katalogu strony**</dt>
<dd>Plik .sql/.zip/.tar.gz/.rar powyżej 1 MiB w katalogu serwowanym przez WWW: kopia zapasowa z hasłami, którą może pobrać każdy, kto zgadnie nazwę. Katalog z co najmniej 5 archiwami, których nazwy nie mówią „kopia” (pliki do pobrania, zrzuty z kamery), to magazyn danych, nie kopia strony — nic.</dd>

<dt>**Plugin WordPress bez readme**</dt>
<dd>Katalog w wp-content/plugins z jednym–dwoma plikami PHP, bez readme.txt i bez podkatalogów: tak wyglądają backdoory udające pluginy (podejrzane; plugin o losowej nazwie z samych liter i cyfr — zagrożenie). Pluginy pisane ręcznie też tak wyglądają; plugin premium ma podkatalogi.</dd>

<dt>**Zmieniony plik pluginu**</dt>
<dd>Plik pluginu z wordpress.org różni się od opublikowanej wersji. Zdarza się przy ręcznych poprawkach, stąd podejrzane. Gdy różni się ponad 30% plików pluginu, to wersja premium albo fork pod tą samą nazwą — jedno podejrzane na katalog pluginu, bez porównania plik po pliku.</dd>

<dt>**Dodany plik w pluginie**</dt>
<dd>Skrypt w katalogu pluginu z wordpress.org, którego ta wersja pluginu nie zawiera.</dd>

<dt>**Nowy plik w mu-plugins**</dt>
<dd>Skrypt bezpośrednio w wp-content/mu-plugins — ładowany zawsze, niewidoczny na liście pluginów do wyłączenia. Znane loadery (Installatron, WP Migrate DB, Elementor safe mode, Akeeba, AIOS) to nic; plik nazwany jak rdzeń WordPressa (class-wp-…) albo z losowym przyrostkiem szesnastkowym (wp-cache-handler-3d7d1a7f.php) to zagrożenie.</dd></dl>

### **Czego nie czytamy**

Klasy plików pominięte świadomie — i te skanowane, ale bez raportowania zmian, bo regenerują się same.

<dl>

<dt>**Pliki sesji **nieczytane</dt>
<dd>Sesje PHP i frameworków: dane tymczasowe, nie kod. Zmieniają się przy każdym wejściu na stronę.</dd>

<dt>**Logi **nieczytane</dt>
<dd>Pliki dziennika rosną ciągle i nie są wykonywane.</dd>

<dt>**Repozytoria git/svn **nieczytane</dt>
<dd>Skompresowane obiekty repozytorium, nieczytelne dla sygnatur i nie serwowane.</dd>

<dt>**Miniatury WordPress **nieczytane</dt>
<dd>Kopie obrazów w rozmiarach -800x600 itd. pod wp-content/uploads; generowane przez WordPress.</dd>

<dt>**Cache frameworków **ciche</dt>
<dd>Katalogi cache WordPress/Laravel/Symfony/Magento/Joomla/Smarty, także przemianowane (var/@cache, var/1cache — tak PrestaShop wymusza przebudowę): skanowane, ale ich zmiany nie są raportowane — regenerują się same.</dd>

<dt>**node_modules **ciche</dt>
<dd>Zależności npm: tysiące plików wymienianych hurtowo przy każdej instalacji; skanowane, zmiany nie raportowane.</dd></dl>

### **Czym skaner nie jest**

Nie jest antywirusem i nie jest tak sprzedawany: sprawdza pliki według tej listy i pomija to, czego nie czyta — też jawnie. Pusta lista znaczy „nic z tej listy”, nie „czysto”. Nie zastępuje kopii zapasowych ani aktualizacji, a podatnej wersji CMS nie aktualizuje sam — zgłasza ją.

## **Skaner plików jest w każdym planie hostingu**

Wynik ostatniego skanu i każde znalezisko znajdziesz w panelu, w zakładce „Skaner plików” swojej usługi.

[**Zobacz plany hostingu**](https://hosteam.pl/pl/hosting)

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://hosteam.pl/#website","@type":"WebSite","name":"Hosteam","url":"https://hosteam.pl/","publisher":{"@id":"https://hosteam.pl/#identity"}},{"@id":"https://hosteam.pl/pl/skaner#webpage","@type":"WebPage","description":"Skaner plików w każdym planie hostingu co 6 godzin szuka backdoorów, webshelli i podmienionych plików w WordPressie, Joomli i PrestaShop. Jawna lista reguł.","name":"Skaner malware w hostingu – wykrywanie backdoorów i webshelli","url":"https://hosteam.pl/pl/skaner","isPartOf":{"@id":"https://hosteam.pl/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://hosteam.pl/pl/skaner"]}],"primaryImageOfPage":{"@id":"https://hosteam.pl/#logo"}},{"@id":"https://hosteam.pl/#identity","@type":"Organization","description":"Polski dostawca hostingu WWW, serwerów VPS, domen i poczty biznesowej.","email":"info@hosteam.pl","legalName":"HosTeam spółka z ograniczoną odpowiedzialnością","name":"HosTeam","taxID":"7811988983","telephone":"+48 61 668 99 59","url":"https://hosteam.pl","vatID":"PL7811988983","address":{"@type":"PostalAddress","streetAddress":"ul. Leśnowolska 6","postalCode":"60-452","addressLocality":"Poznań","addressCountry":"PL"},"logo":{"@id":"https://hosteam.pl/#logo"}},{"@id":"https://hosteam.pl/#logo","@type":"ImageObject","caption":"HosTeam","contentUrl":"https://hosteam.pl/img/hosteam-logo.png","inLanguage":"pl","url":"https://hosteam.pl/img/hosteam-logo.png"}]}
```

## Sitemap

See the full [sitemap](https://hosteam.pl/sitemap.md) for all pages.
