Wykrywanie podatności w aplikacjach webowych – TestSec w akcji

W środowiskach produkcyjnych wciąż zdarzają się luki, które nie generują żadnych alertów. Często wynikają z niedopilnowanej konfiguracji, pozostałości po środowiskach testowych czy nieuwagi w procesie wdrażania.TestSec został zaprojektowany właśnie po to, aby je wykrywać. Poniższy przykład pokazuje, jak skuteczne może być połączenie automatyki z analizą kontekstu i ręczną eksploracją.
Wyciek danych uwierzytelniających z kodu JavaScript

Kontekst i cel analizy

W ramach wewnętrznych testów skuteczności narzędzia TestSec, przeanalizowano aplikację webową udostępnioną pod adresem IP 185.X.X.57. Celem było sprawdzenie, jak system radzi sobie z wykrywaniem realnych zagrożeń, które mogłyby wystąpić w środowisku produkcyjnym. W szczególności skupiono się na potencjalnych wyciekach danych uwierzytelniających oraz nienależycie zabezpieczonych zasobach publicznych.

Wykryta podatność

Podczas rekonesansu TestSec zidentyfikował publicznie dostępny katalog:
https://185.X.X.57/zgloszenia/

Dostęp do katalogu nie był objęty żadnym mechanizmem autoryzacji. Znajdował się tam formularz zgłoszeniowy, który w kodzie HTML zawierał odwołanie do zewnętrznego pliku JavaScript:
https://185.X.X.57/zgloszenia/script/script.js

Analiza zawartości pliku script.js ujawniła funkcję sendEmails(), która implementowała zapytania CORS (Cross-Origin Resource Sharing) oraz wykorzystywała nagłówek Authorization z metodą Basic Auth. Co kluczowe, dane uwierzytelniające zostały zakodowane w base64 i umieszczone bezpośrednio w kodzie klienta.

Po odszyfrowaniu ujawniono:

  • Login: klaudiusz.XXXXXXX

  • Hasło: c@mXXXXXX11

Struktura loginu wskazywała na powiązanie z kontem w domenie Active Directory, co oznaczało, że dane te mogły mieć zastosowanie nie tylko w kontekście testowanej aplikacji, ale również w szerszym zakresie systemów organizacyjnych.

Ocena ryzyka – CVSS 8.3

Zidentyfikowana luka została zakwalifikowana jako wysokiego ryzyka, z oceną:
CVSS: 3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:L
czyli 8.3 – High Severity.

Kluczowe zagrożenia obejmowały:

  • Możliwość nieautoryzowanego dostępu do systemu

  • Naruszenie poufności i integralności danych

  • Ryzyko eskalacji przywilejów i lateralnego ruchu w sieci

  • Niezgodność z wymaganiami regulacyjnymi (np. NIS2, DORA)


Tego rodzaju podatność nie generuje standardowych alertów i mogłaby pozostać niewykryta przez klasyczne narzędzia skanujące.

Rekomendacje naprawcze

Zespół TestSec przygotował następujące zalecenia:

1. Usunięcie danych uwierzytelniających z kodu źródłowego

Pliki frontendowe nie powinny zawierać żadnych poświadczeń — ani zakodowanych, ani jawnym tekstem. Należy je natychmiast usunąć i wdrożyć proces audytu kodu pod kątem występowania tego typu danych.

2. Wyłączenie publicznego dostępu do katalogu /zgloszenia/

Zaleca się zastosowanie mechanizmów kontroli dostępu:

Dla Apache (ograniczenie do konkretnego IP):

apache
<RequireAll>
Require ip 192.168.1.1
</RequireAll>

Dla Nginx (ograniczenie do IP):

nginx
location /zgloszenia/ {
allow 192.168.1.1;
deny all;
}

Dla pełnej blokady dostępu (Apache):

apache
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^.*$ - [R=403,L]
</IfModule>

Dla pełnej blokady dostępu (Nginx):

nginx
location /zgloszenia/ {
deny all;
return 403;
}

3. Zmiana hasła użytkownika

Hasło konta klaudiusz.XXXXXXX powinno zostać niezwłocznie zmienione i zastąpione silnym, unikalnym hasłem zgodnym z polityką bezpieczeństwa organizacji.

4. Przegląd bezpieczeństwa kodu

Zaleca się cykliczne przeprowadzanie manualnych testów bezpieczeństwa oraz wdrożenie procesu secure code review dla całej aplikacji.

Zidentyfikowana podatność miała potencjalnie poważne konsekwencje — mimo że jej przyczyna wydawała się prozaiczna: pozostałość po środowisku testowym lub niedopilnowany fragment kodu wdrożony na produkcję.

TestSec udowodnił swoją skuteczność w wykrywaniu luk, które nie pojawią się w wynikach automatycznych skanerów, ale mogą zostać wykorzystane przez atakującego. Dzięki połączeniu rozpoznania struktury aplikacji, analizy kodu klienta i kontekstowego zrozumienia działania systemu, możliwe było pełne zidentyfikowanie i ocenienie ryzyka.

O TestSec

TestSec to usługa testów bezpieczeństwa aplikacji webowych, która łączy automatyzację z analizą manualną. Skupia się na wykrywaniu realnych podatności, ich kontekście i wpływie na środowisko produkcyjne.