Katalog typowych konstrukcji nawierzchni podatnych i półsztywnych
Ochrona podatnych webaplikacji za pomocą wirtualnych poprawek
-
Upload
3camp -
Category
Technology
-
view
113 -
download
0
Transcript of Ochrona podatnych webaplikacji za pomocą wirtualnych poprawek
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
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' );
Wirtualny patch #2
parametr PAGE musi zaczynać się od nazw plików z katalogu /var/www/mutilidae i mieć rozszerzenie .PHP