Sekcje

Przejdź na skróty do treści. | Przejdź do nawigacji


Baza wiedzy Publikacje Ominięcie firewalla aplikacyjnego WebKnight

Ominięcie firewalla aplikacyjnego WebKnight

WstępFirewall

Nasz zespół wykrył lukę w domyślnej konfiguracji firewalla aplikacyjnego WebKnight, umożliwiającą w prosty sposób ominięcie filtra chroniącego przed podatnością SQL injection.

O firewallu aplikacyjnym

Ideę firewalla aplikacyjnego prezentowaliśmy w lutym 2009r. na konferencji GigaCon.  Ciekawe informacje  o tej klasie rozwiązań można uzyskać również pod tym adresem

W ogólności, webowe firewalle aplikacyjne (ang. Web Application Firewalls – WAF) umożliwiają między innymi blokowanie określonego typu ataków na aplikacje webowe – np. SQL injection.
Nieprawidłowa konfiguracja WAF umożliwia często w prosty sposób ominięcie oferowanej przez WAF ochrony. O taką nieprawidłową konfigurację nie jest trudno - o czym świadczy realny przykład poniżej.

Luka w konfiguracji WebKnight

Jedną z metod ochrony, stosowaną przez firewalle aplikacyjne jest tzw. blacklisting. Metoda polega na wyszczególnieniu potencjalnie niebezpiecznych słów lub fraz mogących znaleźć się w filtrowanej komunikacji oraz zablokowanie komunikacji zawierającej tego typu elementy.

Poniżej prezentujemy wycinek konfiguracji  firewalla WebKnight, przedstawiający fragment reguł blacklistingu dla podatności SQL injection.


<SQL_Injection_Keywords App='List' Explanation='These are the SQL keywords for the SQL injection scanning. If two or more are found an alert is triggered and the request will be blocked.'>
<Item>&apos;</Item>
<Item>`</Item>
<Item>;</Item>
<Item>--</Item>
<Item>select</Item>
<Item>insert</Item>
<Item>update</Item>
<Item>delete</Item>
<Item>drop </Item>
<Item>alter </Item>
<Item>create </Item>
<Item>inner join</Item>
<Item>from </Item>
<Item>where </Item>
<Item>union </Item>


W pierwszym momencie trudno znaleźć błąd w tej konfiguracji. Jednak po dokładniejszej analizie, okazuje się iż część słów kluczowych wyszczególniona jest ze spacją jako sufiksem, np.:

<Item>from </Item>
<Item>where </Item>
<Item>union </Item>

Jakie mogą być skutki takiej konfiguracji? Otóż firewall zareaguje blokadą na wystąpienie słowa  ‘UNION ‘, (ze spacją jako suffixem), nie zareaguje natomiast na słowo ‘UNION/**/'

Dla wielu implementacji SQL ciągi ‘UNION ‘ oraz 'UNION/**/' są tożsame...

Realny przykład ominięcia firewalla WebKnight

Podczas jednego z audytów bezpieczeństwa serwisu www chronionego przez WebKnight, przedstawiliśmy następujący proof of concept:

http://no.such.site/news.php?ID=2/**/union/**/select/**/null,table_name/**/from/**/information_schema.tables

W skrócie – wszystkie spacje zostały zastąpione ciągami /**/. Tego typu działanie, ze względu na wskazane powyżej niepoprawne domyślne reguły firewalla, spowodowało możliwość jego ominięcia.

Powyższy atak umożliwia wyświetlenie nazwy „pierwszej lepszej” tabeli bazodanowej zdefiniowanej w systemie. Często pobranie tego typu danych jest jednym z pierwszych kroków dalszego ataku – przykładowo dążącego do wylistowania loginów/haseł użytkowników portalu (w tym danych administratorów portalu).

Posiadając dane dostępowe (użytkownika oraz hasło) administratora portalu - atakujący ma duże możliwości działania.

Jak się chronić?

  • Świadomie wdrażać rozwiązania klasy web application firewall (WAF).
  • Wykonywać audyty bezpieczeństwa środowiska chronionego WAF.
  • Na bieżąco monitorować logi generowane przez firewalle i systemy IDS.

Dodatkowe informacje

Luka występuje w najnowszej wersji WebKnight (2.2) oraz najprawdopodobniej dotyczy wielu wcześniejszych wersji. Producent potwierdził istnienie błędu, oraz zapowiedział aktualizację reguł filtrowania w kolejnej wersji firewalla.

Przydatne informacje? Polub nas na facebooku.

Nawigacja
 
Darmowy magazyn o ITsec

zine
Subskrybuj RSS:
RSS