WAF Bypass
Bypassy Regex
Różne techniki mogą być używane do obejścia filtrów regex na zaporach ogniowych. Przykłady obejmują zmianę wielkości liter, dodawanie podziałów linii i kodowanie payloadów. Zasoby dotyczące różnych bypassów można znaleźć na stronach PayloadsAllTheThings i OWASP. Poniższe przykłady zostały zaczerpnięte z tego artykułu.
Kodowanie znaków
W niektórych przypadkach, aplikacje internetowe mogą używać różnych kodowań znaków, takich jak UTF-8, ISO-8859-1, itp. Można to wykorzystać do obejścia WAF (Web Application Firewall).
Bypassowanie WAF za pomocą kodowania znaków
Spróbuj wysłać żądanie HTTP z innym kodowaniem znaków, na przykład UTF-7 lub UTF-16. W niektórych przypadkach, WAF może nie być w stanie poprawnie zinterpretować takiego żądania i umożliwić dostęp do zasobów, które normalnie byłyby zablokowane.
Jeśli aplikacja internetowa używa kodowania znaków, które nie jest obsługiwane przez WAF, można spróbować wysłać żądanie z tym kodowaniem. Na przykład, jeśli WAF obsługuje tylko UTF-8, można spróbować wysłać żądanie z kodowaniem ISO-8859-1.
Można również spróbować wykorzystać różnice w kodowaniu znaków, takie jak homografy. Homografy to znaki, które wyglądają podobnie, ale mają inne kody Unicode. Na przykład, litera "a" (U+0061) może być zastąpiona przez literę "а" (U+0430), która wygląda tak samo, ale ma inny kod Unicode. Można spróbować wysłać żądanie z homografami, aby obejść WAF.
Jeśli WAF wykonuje normalizację kodowania znaków, można spróbować wysłać żądanie z niepoprawnie znormalizowanymi znakami. Na przykład, jeśli WAF normalizuje znaki diakrytyczne, można spróbować wysłać żądanie z niepoprawnie znormalizowanymi znakami diakrytycznymi.
Podsumowanie
Bypassowanie WAF za pomocą kodowania znaków może być skuteczną techniką, jeśli WAF nie jest odpowiednio skonfigurowany lub nie obsługuje wszystkich kodowań znaków. Warto eksperymentować z różnymi kodowaniami i technikami, aby znaleźć sposób na obejście WAF i uzyskanie dostępu do zasobów, które normalnie byłyby zablokowane.
Obfuskacja
Obfuskacja jest techniką używaną do ukrywania prawdziwego znaczenia kodu lub danych, aby utrudnić ich analizę i zrozumienie. W przypadku omijania WAF (Web Application Firewall), obfuskacja może być używana do uniknięcia wykrycia i blokowania niebezpiecznych żądań.
Obfuskacja znaków
Obfuskacja znaków polega na zamianie znaków w kodzie na inne znaki lub sekwencje znaków, które zachowują funkcjonalność kodu, ale utrudniają jego analizę. Przykłady technik obfuskacji znaków to:
Zamiana liter na ich kod ASCII lub Unicode.
Zamiana liter na ich odpowiedniki w innych alfabetach.
Dodawanie losowych znaków lub białych znaków do kodu.
Obfuskacja kodu
Obfuskacja kodu polega na modyfikacji kodu w taki sposób, aby był trudniejszy do zrozumienia i analizy. Przykłady technik obfuskacji kodu to:
Usuwanie lub dodawanie zbędnych instrukcji.
Zmiana nazw zmiennych i funkcji na losowe lub trudne do zrozumienia.
Używanie skomplikowanych konstrukcji językowych, takich jak zagnieżdżone pętle i warunki.
Obfuskacja danych
Obfuskacja danych polega na zmianie struktury lub formatu danych w celu utrudnienia ich analizy. Przykłady technik obfuskacji danych to:
Szyfrowanie danych.
Kompresja danych.
Zmiana kolejności lub formatu danych.
Obfuskacja protokołu
Obfuskacja protokołu polega na zmianie struktury lub formatu komunikacji między klientem a serwerem w celu utrudnienia analizy i wykrycia niebezpiecznych żądań. Przykłady technik obfuskacji protokołu to:
Dodawanie losowych danych do żądań.
Zmiana kolejności lub formatu nagłówków.
Używanie nietypowych metod komunikacji, takich jak kodowanie Base64.
Obfuskacja adresu IP
Obfuskacja adresu IP polega na ukryciu prawdziwego adresu IP klienta lub serwera poprzez przekierowanie ruchu przez pośrednika lub używanie usług proxy. Przykłady technik obfuskacji adresu IP to:
Używanie usług proxy lub VPN.
Przekierowywanie ruchu przez serwery pośredniczące.
Używanie technik tunelowania, takich jak SSH tunneling.
Obfuskacja żądań HTTP
Obfuskacja żądań HTTP polega na modyfikacji żądań HTTP w taki sposób, aby były trudniejsze do analizy i wykrycia przez WAF. Przykłady technik obfuskacji żądań HTTP to:
Dodawanie losowych parametrów do żądań.
Zmiana kolejności lub formatu parametrów.
Używanie nietypowych metod HTTP, takich jak PUT lub DELETE.
Obfuskacja odpowiedzi HTTP
Obfuskacja odpowiedzi HTTP polega na modyfikacji odpowiedzi HTTP w taki sposób, aby były trudniejsze do analizy i wykrycia przez WAF. Przykłady technik obfuskacji odpowiedzi HTTP to:
Dodawanie losowych nagłówków do odpowiedzi.
Zmiana kolejności lub formatu nagłówków.
Używanie nietypowych kodów odpowiedzi HTTP.
Zgodność Unicode
W zależności od implementacji normalizacji Unicode (więcej informacji tutaj), znaki, które mają zgodność Unicode, mogą ominąć WAF i wykonać zamierzony ładunek. Zgodne znaki można znaleźć tutaj
Przykład
Przekraczanie ograniczeń rozmiaru
W chmurze opartych na WAF-ach jest powszechne, że jeśli ładunek jest większy niż rozmiar X, żądanie nie zostanie sprawdzone przez WAF. Możesz po prostu użyć tego do ich ominięcia.
Rotacja adresów IP
Last updated