Blog 24/7
ARK. B09Parametr monitoringuBezpieczeństwo · lista 87 parametrów

Kopie wp-config.php

ważność krytycznamierzonysposób exposure

Dostępność wp-config.php.bak i wp-config.php~ — kopii pliku z hasłem do bazy i kluczami WordPressa. Częsty błąd przy edycji na serwerze i migracji hostingu.

Do 2026-10-01 „Ekspozycja plików wrażliwych”; debug.log przeszedł do B37, listowanie katalogów do B38.

ARK. 1

WIKI

artykuł z 16.09.2026 · źródeł 10

Ekspozycja plików wrażliwych to parametr monitoringu stron internetowych, który sprawdza, czy serwer WWW oddaje publicznie pliki pozostawione obok kodu strony: kopie pliku konfiguracyjnego wp-config.php z innym rozszerzeniem (wp-config.php.bak, wp-config.php~), dziennik błędów wp-content/debug.log oraz automatycznie wygenerowany spis zawartości katalogu. Pomiar kończy się jednym z trzech wyników: plik lub spis dostępny, niedostępny albo nie udało się uzyskać odpowiedzi. Przewodnik testowania OWASP zalicza stare kopie, pliki nieużywane i logi pozostawione w katalogach serwera do typowych źródeł wycieku informacji [1].

Jak działa

Kopie powstają na dwa sposoby. Część tworzą narzędzia: OWASP podaje przykład edytora emacs, który przy edycji pliku file zapisuje kopię file~ [1], a Vim trzyma zmiany w pliku wymiany o nazwie edytowanego pliku z rozszerzeniem .swp, na systemach uniksowych poprzedzonej kropką, w tym samym katalogu [5]. Resztę tworzą ludzie. MITRE opisuje kopie przemianowane automatycznie albo ręcznie przez administratora, np. na rozszerzenie .~bk, i pozostawione w katalogu dokumentów serwera [2]. Taki sam charakter ma kopia wp-config.php.bak zrobiona przed edycją lub przeniesieniem strony.

Plik wp-config.php leży w katalogu głównym instalacji WordPressa i zawiera dane połączenia z bazą (DB_NAME, DB_USER, DB_PASSWORD, DB_HOST) oraz unikalne klucze i sole uwierzytelniania [3]. Przy żądaniu tego pliku serwer przekazuje go interpreterowi PHP i odsyła wynik wykonania, a nie kod. Decyduje o tym dopasowanie nazwy: zalecana w dokumentacji PHP konfiguracja Apache kieruje do interpretera tylko pliki pasujące do wyrażenia \.php$ [4]. Nazwa wp-config.php.bak kończy się na .bak, więc wyrażenie jej nie obejmuje i serwer podaje plik jak każdy inny plik statyczny. OWASP opisuje ten sam mechanizm: żądanie viewdoc.bak może zwrócić kod źródłowy viewdoc.jsp [1].

RYS. 1.1Plik PHP i jego kopia

Dziennik błędów powstaje z ustawienia. Stała WP_DEBUG_LOG zapisuje wszystkie błędy do pliku debug.log, domyślnie w katalogu treści, zwykle wp-content/debug.log; można też podać inną ścieżkę [6]. Działa tylko przy włączonym WP_DEBUG [6]. Dokumentacja zaleca łączenie jej z WP_DEBUG_DISPLAY ustawionym na false, żeby błędy nie trafiały do HTML strony, lecz dało się je przejrzeć później [6].

Spis katalogu to funkcja serwera. W Apache opcja Indexes sprawia, że gdy adres wskazuje katalog bez pliku z listy DirectoryIndex, moduł mod_autoindex zwraca sformatowaną listę jego zawartości [7]. Domyślny plik konfiguracyjny Apache ustawia dla katalogu dokumentów Options Indexes FollowSymLinks [8]. W nginx spis tworzy moduł autoindex dla żądań zakończonych ukośnikiem, zwykle wtedy, gdy nie ma pliku indeksu; dyrektywa autoindex jest domyślnie wyłączona [9].

Standardy i specyfikacje

  • OWASP WSTG-CONF-04 każe sprawdzać kopie plików i pliki bez odnośników, a spis katalogu nazywa najbardziej oczywistym sposobem, w jaki źle skonfigurowany serwer ujawnia takie pliki [1]. Zauważa też, że logi mogą zawierać identyfikatory sesji, parametry adresów i adresy nieujawnionych stron [1].
  • CWE-530 („Exposure of Backup File to an Unauthorized Control Sphere”) to kopia zapasowa zapisana w katalogu lub archiwum dostępnym dla nieuprawnionych; jest potomkiem CWE-552, plików i katalogów dostępnych dla stron zewnętrznych [2]. Wśród obserwowanych przypadków MITRE wymienia wtyczkę WordPressa tworzącą przewidywalne nazwy kopii (CVE-2024-7315) [2].
  • CWE-548 („Exposure of Information Through Directory Listing”) to udostępnienie spisu wszystkich zasobów katalogu; MITRE zaleca wyłączenie automatycznych spisów katalogów [10].

Zagrożenia i skutki

Dane dostępowe do bazy. Odczytana kopia wp-config.php daje nazwę bazy, użytkownika, hasło i adres serwera bazy oraz klucze i sole [3]. Kod źródłowy pobrany z kopii pozwala też szukać podatności, których nie widać przy żądaniach do wykonywanej strony [1].

RYS. 1.2Od kopii pliku do bazy danych

Treść dziennika. Log może ujawniać działania użytkowników, identyfikatory sesji i adresy, które nie są nigdzie podlinkowane [1]. Stała WP_DEBUG_LOG zapisuje wszystkie błędy, więc plik rośnie z każdym zapisanym błędem, dopóki ustawienie jest włączone [6].

Spis katalogu. MITRE wskazuje, że spis może dać dostęp do kodu źródłowego, ujawnić daty utworzenia plików i informacje zawarte w nazwach, przydatne przy planowaniu ataku [10]. Spis ujawnia też pliki, do których nie prowadzi żaden odnośnik, w tym kopie opisane wyżej [1].

Fałszywe trafienia. Odpowiedź 200 z własną stroną „nie znaleziono” wygląda w samym kodzie statusu jak istniejący plik [1]. O wycieku rozstrzyga treść odpowiedzi, a nie sam kod.

Przykłady

SytuacjaOdpowiedź serweraZnaczenie
GET /wp-config.php przy dopasowaniu \.php$ [4]wynik wykonania skryptukod i hasła niewidoczne
Kopia wp-config.php.bak w katalogu instalacji [2] [4]200 z tekstem plikudane bazy, klucze i sole do zmiany [3]
Kopia emacs wp-config.php~ [1]200 z tekstem plikujak wyżej
Plik wymiany Vim .wp-config.php.swp [5]zależy od reguł dla nazw z kropkązawiera zmiany z sesji edycji
WP_DEBUG i WP_DEBUG_LOG włączone, bez własnej ścieżki [6]200 z wierszami błędów pod wp-content/debug.logścieżki, sesje, adresy [1]
Apache z Options Indexes, katalog bez pliku indeksu [7] [8]200 ze spisem plikówCWE-548 [10]
nginx z ustawieniami domyślnymi [9]brak spisuautoindex off
TAB. 1.1Przypisy10
  1. [1] WSTG-CONF-04 — Review Old Backup and Unreferenced Files for Sensitive Information · OWASP Web Security Testing Guide
  2. [2] CWE-530: Exposure of Backup File to an Unauthorized Control Sphere · MITRE
  3. [3] wp-config.php — Advanced Administration Handbook · WordPress.org
  4. [4] Apache 2.x on Unix systems — PHP Manual · The PHP Group
  5. [5] recover.txt — Vim help: swap file · Vim
  6. [6] Debugging in WordPress — Advanced Administration Handbook · WordPress.org
  7. [7] Apache Core Features — dyrektywy Options i DirectoryMatch · Apache Software Foundation
  8. [8] httpd.conf.in — domyślna konfiguracja Apache HTTP Server · Apache Software Foundation
  9. [9] Module ngx_http_autoindex_module · nginx
  10. [10] CWE-548: Exposure of Information Through Directory Listing · MITRE
ARK. 2

STATS

wyniki z systemu · tylko liczby zbiorcze
TAB. 2.1Odczyty per strona—

Ten parametr nie zapisuje odczytu per strona — przebieg zostawia tylko ustalenia, więc liczby sprawdzonych stron i wyników „ok” system nie ma. Pojawią się po wdrożeniu zapisu przebiegów per strona per parametr.

TAB. 2.3Ustalenia—

Ten parametr nie otworzył jeszcze żadnego ustalenia w bazie LAB247. Pusto nie znaczy „czysto” — znaczy, że nic nie przekroczyło reguły.

TAB. 2.4Przebiegi z tym sposobem sprawdzeniaod 09.09.2026
Przebiegów
33sposób exposure
W 30 dni
0przebiegów
Ostatni
19.09.2026start przebiegu
Stron w przebiegach
—33 przebiegów bez liczby stron
ARK. 3

CARD

karta z kodu CREATO_PING, odczyt 01.10.2026

Jak ten parametr trafia do ClickUpa: wynik sondy to linia w subtasku 2. Pomiar, a usterka, którą otwiera — linia w subtasku 1. Podsumowanie (z identyfikatorem CWE i kategorią OWASP), skąd liczy się wskaźnik zagrożenia i status strony. Projekcja z bazy skanera odświeża oba subtaski co godzinę. Do 22.09 każde ustalenie dostawało własny subtask i status ze starego słownika (PODATNA, WARNING…) — te słowa zostały jeszcze w części opisów pomiaru niżej jako język wewnętrzny sond.

RYS. 3.1Droga parametru przez system: Kopie wp-config.php
TAB. 3.1Pomiarpliki: 9
Obszar i ważnośćBezpieczeństwo · krytyczna (B09)
Workflow i częstotliwośćcreato_ping_security_v2 · P3 działa na LAB247Skaner 2.0, rytm „p3” / „bezpieczenstwo”: premium co 6 h, reszta co 24 h (tier 1–3), co 9 dni (tier 4) · Dokładny skan. dns_integrity porównuje NS, MX, SPF i DMARC z wzorcem z poprzedniego przebiegu.
Sonda i helpersposób exposure · CREATO_PING/helpers/exposure_check.py
Testy
  1. Gdzie chodzi: rytm p3 (premium co 6 h; dostęp i priorytet T1–T3 co 24 h, T4 co 9 dni; bez priorytetu co 9 dni) i badanie kohort zestawami premium_pelny i tani_ciezki (sonda z kartą exposure w turze „glebiej”, jedna powtórka po 3 s przy błędzie). tani_lekki i p4 wystawionych plików nie sprawdzają.
  2. Strażnik: GET losowej ścieżki /creato-ping-<8 znaków hex>.html bez przekierowań; 200 z niepustą treścią = zero sond i jedno exposure_scan_unreliable.
  3. GET https://domena/wp-config.php.bak i /wp-config.php~ bez podążania za przekierowaniami, UA CREATO_PING-exposure/1.0; treść strumieniem do 64 KB (_EXPOSURE_CAP), oceniane pierwsze 5000 znaków. Do 4 sond naraz na stronę.
  4. Reguła 200+nonempty: kod 200 i niepusta treść — zawartość (stałe DB_NAME, DB_PASSWORD) nie jest sprawdzana.
  5. Od 01.10 debug.log ma osobny parametr (Ekspozycja debug.log), a listowanie katalogów — Listowanie katalogów; ta karta opisuje tylko kopie wp-config.
Typ wyniku0 do 2 ustaleń, każde osobnym typem: exposure_wpconfig_bak, exposure_wpconfig_tilde
Jednostkabrak — wynik jakościowy; dowód „tylko skrót”: ścieżka, kod HTTP, długość i skrót treści, nigdy fragment
Próg i regułaTimeout odpowiedzi 15 s, połączenia 5 s (TIMEOUTS["exposure"], TIMEOUTS["security_connect"]). Reguła: kod 200 + niepusta treść. 403, 404, przekierowanie, błąd sieci i timeout = brak ustalenia.
Gdzie leżą pokrętłaCREATO_PING/helpers/exposure_check.py → PROBES (/wp-config.php.bak, /wp-config.php~, reguła 200+nonempty), DOWOD_TYLKO_SKROT, _soft_200CREATO_PING/helpers/config.py → TIMEOUTS["exposure"], TIMEOUTS["security_connect"]CREATO_PING/config/incident_policy.toml → [finding] exposure_wpconfig_bak, exposure_wpconfig_tilde
Retencja odczytówSurowy pomiar jako NIEZMIENNY wiersz tabeli `odczyty` w bazie skanera (wejście, wyjście, dowody, sha karty sondy i helpera, commit kodu) — trigger odrzuca każdą zmianę. Okno retencji z kohorty: 90 dni premium, 30 dni reszta; poza oknem zostają odczyty z werdyktem problemu, akcją albo etykietą, bo replay reguł ich potrzebuje (`skaner/retencja.py`). Do LAB247 ten kanał nie idzie (do bazy serwisu jadą dziś tylko sprawdzenia dostępności), więc poza odczytem zostaje werdykt w tabeli `werdykty` i sprawa w tabeli `sprawy`.
Znane rozbieżności
  1. Zawartość nie jest sprawdzana: strona HTML z kodem 200 pod tym adresem daje ustalenie pilne, jeśli strażnik losowej ścieżki jej nie złapał.
  2. Sprawdzane są tylko dwie nazwy kopii; wp-config.php.old, .save, .orig, .txt, plik wymiany .swp i wp-config.bak nie są sondowane.
  3. alert=true w polityce nie jest czytane ani przez kod, ani przez skaner — o mailu decyduje osobny zakres w skaner/akcje.toml.
  4. Brak trzeciego stanu, brak śledzenia przekierowań i brak sygnału zamknięcia — wspólne dla sond ekspozycji.
kandydaci do pętli: kod a opis parametru albo specyfikacja
Karta przepisana zCREATO_PING/helpers/exposure_check.py · CREATO_PING/sondy/exposure/karta.toml · CREATO_PING/helpers/config.py · CREATO_PING/helpers/security_runner.py · CREATO_PING/skaner/proby.toml · CREATO_PING/skaner/kohorty.toml · CREATO_PING/config/incident_policy.toml · CREATO_PING/skaner/usterki.toml · CREATO_PING/skaner/ocena.py · odczyt 01.10.2026
TAB. 3.2Co oznacza failtypów Findingów: 2

exposure_wpconfig_bak: bramka polityki otwarta (gate=true) → sprawa w skanerze → Kopia wp-config.php do pobrania — waga 3 → ocena 5–6 (żółty), status strony „sredni”, dopóki sprawa jest otwarta. exposure_wpconfig_tilde: bramka polityki otwarta (gate=true) → sprawa w skanerze → Kopia wp-config.php (~) do pobrania — waga 3 → ocena 5–6 (żółty), status strony „sredni”, dopóki sprawa jest otwarta. Helper nie wysyła sygnału zamknięcia: usunięcie pliku nie zamyka sprawy przy kolejnym pomiarze. Sprawy zakłada rytm p3; w badaniu droga kończy się na usterce przebiegu i wskaźniku badania.

KodFindingSeverityPewnośćSkutekFinding / alarmWaga → ocenaCo zrobić
B09.01Kopia wp-config.php.bakexposure_wpconfig_bakKrytycznaEwidentneotwarta podatnośćtak / takwaga 3 → ocena 5–6 (żółty)Usuń plik z serwera, zmień hasło do bazy.
B09.02Kopia wp-config.php~exposure_wpconfig_tildeKrytycznaEwidentneotwarta podatnośćtak / takwaga 3 → ocena 5–6 (żółty)Usuń plik z serwera, zmień hasło do bazy.
TAB. 3.3B09.01 · Kopia wp-config.php.bakwersja 1 · 01.10.2026
Kod i kluczB09.01 · exposure_wpconfig_bak · w tabeli typów
Co znaczyKopia konfiguracji z danymi dostępowymi do bazy jest dostępna publicznie.
Kiedy powstajeGET /wp-config.php.bak: status == 200 i niepusta treść po strip() (check "200+nonempty"). Nie sprawdza zawartości (np. DB_PASSWORD).Ocena :211-212. Dowód tylko skrót.
Severity · pewnośćKrytyczna · Ewidentne
Skutek dla stronyotwarta podatność · zakłada Finding · alarm tak
Waga → ocenawaga 3 → ocena 5–6 (żółty)
KlasyfikacjaCWE: CWE-530 (Exposure of Backup File to an Unauthorized Control Sphere)OWASP Top 10:2025: A01:2025 Broken Access ControlMITRE ATT&CK 19.2: T1552.001 Unsecured Credentials: Credentials In Files (warunek)OWASP ASVS 5.0.0: 13.4.7OCSF 1.9.0: Vulnerability Finding (class_uid 2002)
Rekord OCSFfinding_info.analytic.uid = "B09.01" · analytic.name = "exposure_wpconfig_bak" · finding_info.types = ["B09 Kopie wp-config.php"]
Co zrobićUsuń plik z serwera, zmień hasło do bazy.
Wersje typu
  1. v1 · 01.10.2026 — kod B09.01 nadany (finding-codes.ts)
TAB. 3.4B09.02 · Kopia wp-config.php~wersja 1 · 01.10.2026
Kod i kluczB09.02 · exposure_wpconfig_tilde · w tabeli typów
Co znaczyKopia edytora z danymi dostępowymi do bazy jest dostępna publicznie.
Kiedy powstajeGET /wp-config.php~: status == 200 i niepusta treść po strip() (check "200+nonempty").Ocena :211-212. Dowód tylko skrót.
Severity · pewnośćKrytyczna · Ewidentne
Skutek dla stronyotwarta podatność · zakłada Finding · alarm tak
Waga → ocenawaga 3 → ocena 5–6 (żółty)
KlasyfikacjaCWE: CWE-530 (Exposure of Backup File to an Unauthorized Control Sphere)OWASP Top 10:2025: A01:2025 Broken Access ControlMITRE ATT&CK 19.2: T1552.001 Unsecured Credentials: Credentials In Files (warunek)OWASP ASVS 5.0.0: 13.4.7OCSF 1.9.0: Vulnerability Finding (class_uid 2002)
Rekord OCSFfinding_info.analytic.uid = "B09.02" · analytic.name = "exposure_wpconfig_tilde" · finding_info.types = ["B09 Kopie wp-config.php"]
Co zrobićUsuń plik z serwera, zmień hasło do bazy.
Wersje typu
  1. v1 · 01.10.2026 — kod B09.02 nadany (finding-codes.ts)
ARK. 4

LOOP

pętli: 2
RYS. 4.1Pętla parametru — sześć etapów
TAB. 4.1Trafność, 30 dnialarmy · prawdziwe · fałszywe · bez rozstrzygnięcia

Trafności jeszcze nie liczymy: zamknięcie subtaska nie niesie dziś werdyktu (prawdziwy / fałszywy / nie dało się sprawdzić). Cztery liczby pojawią się, gdy każde zamknięcie dostanie werdykt — to warunek startu pętli 1.

TAB. 4.2Pętle2 · zmian: 3 · wpływających na cały system: 3
Strażnik losowej ścieżki i dłuższy limit czasu dla sond ekspozycjizamknięta historyczna 2026-09-05

Sygnał: Tarcze antybotowe hostingu, strony parkingowe i serwery catch-all odpowiadają 200 na każdą ścieżkę, więc sondy oparte na kodzie 200 dawały „wystawiony” wszędzie. Równocześnie sondy na wolnych hostingach odpowiadały po około 15 s, a limit 5 s ucinał je bez śladu. · dotyczy też: Ekspozycja .env, Ekspozycja .htaccess.bak, Dostępność xmlrpc.php, REST API: enumeracja użytkowników, Ekspozycja .git/HEAD, Dostępność readme.html, Dostępność wp-cron.php, Ekspozycja kopii zapasowych, Ekspozycja zrzutu bazy, Ekspozycja manifestów dev, Ekspozycja .DS_Store

  1. 1. Zbiórkaręcznieodczyt z nocnego skanu, bez zapisu per strona
  2. 2. Werdyktręcznieprzegląd skanera: 200 na wszystko i ciche timeouty to fałszywe wyniki
  3. 3. Miarabrakliczników trafności wtedy nie było
  4. 4. Kartabrakkarta parametru powstała 2026-09-16
  5. 5. Zmianazrobionestrażnik ścieżki, 15 s, logowanie błędów
  6. 6. Replaybrakbrak zapisanych odczytów do replayu
DataZmianaPowódWpływ na systemCommit · replay
2026-09-05Przed sondami GET losowej, nieistniejącej ścieżki; odpowiedź 200 z treścią = zero sond i jedno ustalenie exposure_scan_unreliable (niska powaga, bez subtaska).helpers/exposure_check.py · config/incident_policy.tomlOdpowiedź 200 na losową ścieżkę dowodzi, że kod 200 na tym serwerze nic nie znaczy; dalsze sondowanie tarczy grozi banem IP monitoringu.cały system Obejmuje wszystkie sondy ekspozycji naraz i wprowadza typ „nie dało się sprawdzić”; tę samą konwencję dostało wykrywanie wtyczek. Ustalenie ma niską powagę, więc filtr przebiegu je odrzuca i w produkcji nie zostawia śladu.b0fc77cbez replayubez zapisu zatwierdzenia
2026-09-05Limit odpowiedzi z 5 s na 15 s i połączenia z 2 s na 5 s, przeniesione do config.py; błąd sieci sondy logowany zamiast cichego pustego wyniku; do 4 sond naraz na stronę.helpers/config.py · helpers/exposure_check.py · helpers/html_fetch.py · helpers/wp_fingerprint.pyWolne hostingi odpowiadały po około 15 s, a pusty wynik po timeoucie był nieodróżnialny od „sprawdzone, czysto”.cały system Limit połączenia 5 s przejęło wspólne pobieranie HTML całego skanu bezpieczeństwa i wykrywanie wersji — strony z wolnym TLS przestały wypadać z całego skanu.b0fc77cbez replayubez zapisu zatwierdzenia
Limit 64 KB czytanej odpowiedzi po awarii pamięcizamknięta historyczna 2026-07-19

Sygnał: Brak pamięci podczas skanu: publiczny debug.log jednej ze stron był bardzo duży, a klient HTTP buforował całą odpowiedź. · dotyczy też: Sitemap.xml, Ekspozycja .env, Ekspozycja .htaccess.bak, Dostępność xmlrpc.php, REST API: enumeracja użytkowników, Ekspozycja .git/HEAD, Dostępność readme.html, Dostępność wp-cron.php, Ekspozycja kopii zapasowych, Ekspozycja zrzutu bazy, Ekspozycja manifestów dev, Ekspozycja .DS_Store

  1. 1. Zbiórkaręcznieodczyt z nocnego skanu, bez zapisu per strona
  2. 2. Werdyktręcznieawaria procesu przypisana ścieżce debug.log
  3. 3. Miarabrakliczników trafności wtedy nie było
  4. 4. Kartabrakkarta parametru powstała 2026-09-16
  5. 5. Zmianazrobionestrumień z limitem 64 KB
  6. 6. Replaybrakbrak zapisanych odczytów do replayu
DataZmianaPowódWpływ na systemCommit · replay
2026-07-19Odpowiedź sondy czytana strumieniem do 64 KB; do oceny idzie pierwsze 5000 znaków.helpers/exposure_check.py · helpers/html_fetch.py · helpers/sitemap_check.pyDo rozpoznania ekspozycji wystarcza początek pliku; zmiana dotyczy sposobu czytania, nie werdyktu.cały system Brak pamięci w helperze zatrzymywał cały proces skanu bezpieczeństwa partii stron; ten sam limit dostało sprawdzenie sitemap.343b699bez replayubez zapisu zatwierdzenia
Blog 24/7
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com