28
Ochrona webaplikacji za pomocą wirtualnych poprawek Bartosz Jerzman

Ochrona podatnych webaplikacji za pomocą wirtualnych poprawek

  • Upload
    3camp

  • View
    113

  • Download
    0

Embed Size (px)

Citation preview

Ochrona webaplikacjiza pomocą wirtualnych

poprawek

Bartosz Jerzman

Niebieska strona mocy:monitoring i zabezpieczenia sieci członek zespołów reagowania na incydenty komputerowe SOC/CERT

Czerwona strona mocy:testy penetracyjne (web/mobile/LAN) - secman.plcertyfikaty infosec: CEH, OSCP

hello!

AGENDA

Web Application Firewall

- co to jest?

- zasady użycia

- pisanie podstawowych reguł

Wirtualne poprawki

- zalety i wady

- OWASP

- 6 faz procedury wirtualnych poprawek w ramach utrzymania oprogramowania

2 scenariusze ataków

- live hacking- wykorzystanie

podatnych aplikacji - ModSecurity jako WAF- Wordpress SEO plugin- Metasploitable 2

Web Application Firewall - reverse HTTP proxy

klient HTTP WAF HTTP

serwer

Web Application Firewall - ModSecurity

ModSecurity

Detekcja

wykrycie i logowanie ataków

faza dostosowywania reguł, usuwania false positives

Host based

moduł modsecurity zainstalowany na każdym serwerze HTTP

+ reguły zoptymalizowane per serwer/aplikacje

Prewencja

blokowanie ataków

np. odpowiedź 403 HTTP (Access Denied)

Network Reverse Proxy

ochrona zbioru serwerów HTTP

+ 1 konfiguracja+ 1 zbiór reguł+ ochrona wielu serwerów

aplikacyjnych

ModSecurity - 5 faz filtracji HTTP

✘ Faza 1 - Request Header✘ Faza 2 - Request Body✘ Faza 3 - Response Header✘ Faza 4 - Response Body (wyciek danych, webshells, itp.)✘ Faza 5 - Logging

reguła domyślna

Język reguł ModSecurity

SecDefaultAction “phase:2, deny, log, status:403, t:removeNulls”

Język reguł ModSecurity

bardzo podstawowa detekcja XSS + próby ominięcia WAF: <ScRiPt>, <SCRIPT >

SecRule ARGS "@contains <script>" t:lowercase,t:removeWhitespace

Posiadamy podatną webaplikacjęJak żyć?

Wirtualne poprawki - remedium na szybkie załatanie podatnych aplikacji i powstrzymanie ataku do czasu poprawienia kodu.

Wirtualne poprawkie NIE SĄ alternatywną dla poprawek bezpieczeństwa kodu.

PROFITY WIRTUALNYCH POPRAWEK

✘ szybki czas reakcji✘ brak konieczności modyfikacji kodu✘ prostota pisania reguł✘ skalowalność✘ zapewnienie ochrony starym, nierozwijanym aplikacjom

OWASP

Open Web Application Security Project - najlepsze praktyki budowy bezpiecznych aplikacji- wiele projektów, standardów, narzędzi- nie tylko dla penesterów ale must-know dla deweloperów

https://www.owasp.org/index.php/Virtual_Patching_Best_Practices

https://www.owasp.org/index.php/Virtual_Patching_Cheat_Sheet

1. Przygotowanie:

- budowa infrastruktury;

- uzyskanie zgody;

- monitorowanie list

podatności;

- dostęp do pełnych zapytań i

odpowiedzi HTTP.

2. Identyfikacja

- proaktywne - testy/

przegląd kodu;

- reaktywne - informacja

publiczna lub od producenta,

reakcja na atak.

3. Analiza

- wirtualna łata remedium na

podatność?;

- identyfikacja podatnoścci;

- poziom krytyczności;

- warunki konieczne do eksploitacji;

- lista payloadów (PoC exploit);

- uzupełnienie systemu Bugtracker.

PROCEDURA WIRTUALNYCH POPRAWEK

wg OWASP

PROCEDURA WIRTUALNYCH POPRAWEK

wg OWASP

4. Przygotowanie poprawki

- brak false positives

- brak false negatives

- whitelisting

- blacklisting

- automatyczne

generowanie

- import z zewnątrz org.

5. Wdrożenia i testy

- tryb detekcji;

- HTTP proxy (Burp);

- wget, curl;

- przeglądarka;

- audyt logu WAF

6. Nadzór

- aktualizacja Bugtracker;

- zgłoszenie potrzeby

poprawy kodu;

- zmiana trybu na detekcję

prób eksploatacji

2 scenariusze ataków

LIVE HACKING

SQL injection - Time based Injection in ORDER BY parameter- SEO by YEOST plugin for Wordpress (1.7.3.3) z 2015- Wordpress 4.7.1 (up-to-date)- podejście whitelisting do załatania podatnej aplikacji

Local File Inclusion (LFI)

- Mutillidae (Metasploitable 2)

- podejście whitelisting(odpowiednie rozszerzenie i katalog)

-

1.

SQL injection

SEO by YEOST 1.7.3.3 (2015)złe użycie funkcji do walidacji danych przekazywanych przez użytkownika

Podatny kod + poprawka

protected function parse_item_query( $subquery, $all_states, $post_type_clause ) {

$orderby = ! empty( $_GET['orderby'] ) ? esc_sql( sanitize_text_field( $_GET['orderby'] ) ) : 'post_title';

(...)

$query = "SELECT ID, post_title, post_type, post_status, post_modified, post_dateFROM {$subquery}WHERE post_status IN ({$all_states}) $post_type_clauseORDER BY {$orderby} {$order}LIMIT %d,%d

$orderby = $this->sanitize_orderby( $orderby );

$orderby = WPSEO_Utils::filter_input( INPUT_GET, 'orderby' );

ATAKUJĄCY KONTROLUJE ZAPYTANIE DO BAZY

SQLMAP - Automatyzacja ataku

Wirtualny patch #1

Parametr ORDERBY może przyjmować tylko 3 wartości - nazwy 3 kolumn do sortowania

2.

Local File Inclusion

złe użycie funkcji PHP include() dołączającej inne pliki

MutilLidae (podatna webaplikacja do nauki)

LFI - wczytanie plików systemowych

/etc/passwd

Wirtualny patch #2

parametr PAGE musi zaczynać się od nazw plików z katalogu /var/www/mutilidae i mieć rozszerzenie .PHP