3. Agenda
● Modsecurity
● Wprowadzenie
● Architektura
● Funkcjonalność
● Filtrowanie komunikacji JSON
● Aktywacja mechanizmu HMAC
● Aktywacja i wykorzystanie reguł OWASP CRS
4. Wprowadzenie
● Aplikacje webowe jako cel czyli zagrożenia kryją
się wszędzie:
● Aplikacja
● Protokół
● Serwer HTTP/Proxy/Apps
● Framework
● Język programowania
5. Wprowadzenie
● Rzeczywistość weryfikuje:
● Zimbra: priv_esc poprzez LFI:
– /res/I18nMsg,AjxMsg,ZMsg,ZmMsg,AjxKeys,ZmKeys,ZdMsg,Ajx%20TemplateMsg.js.zgz?
v=091214175450&skin=../../../../../../../../../opt/zimbra/conf/localconfig.xml
● OSSIM: SQL Injection
● Apache Struts: RCE
● F5 BigIQ – priv_esc
● Jira: directory traversal
● Katello: users/update_roles
● I wiele innych...
6. Wprowadzenie
● Problem z patchowaniem podatności:
● Zbyt wysoki koszt
● Kod źródłowy firmy zewnętrznej
● Ograniczony kontrakt/umowa
● Brak zasobów
● Brak skillsów
● SDLC dla poprawki-> tst->acc->prod
● Niedostępność aplikacji
7. Zagrożenia
● Cross Site Scripting
● SQL Injection
● LDAP Injection
● XPATH Injection
● XML Injection
● Blind SQLi
● Time based SQLi
● Remote Command Execution
● Local File Inlusion
● Remote File Inclusion
● Session Hijacking
● HTTP Response Spliiting
● Sniffing/Spoofing
● ClickJacking
● MitB
● Open Redirect
● DOS/DDOS
● Cross Site Request Forgery (CSRF)
● Information/Path Dislosure
● Double Encoding
● Server Side Includes Injection
● Bruteforce
● Buffer overflow
● Misconfiguration
● RE-DOS
● Forced browsing
● Drive by Download
9. Wprowadzenie
● WAF pozwala na
● Pełne logowanie audytowe ruchu HTTP:
– requests
– responses
● Monitorowanie HTTP w czasie rzeczywistym
● Wykrywanie i blokowanie ataków:
– Negative
– Positive
– Znane podatności (regexpy)
● Web Honeypoty
10. Wprowadzenie
● Negative security model:
● Monitoruje pod kątem anomalii, nietypowego
zachowania, pod kątem znanych appek.
● Wzrastający anomaly scoring per sesja, IP, user
● Reguła musi się „zamatchować”
● Positive security model:
● Tylko żądania uznawane za poprawne są obsługiwane
● Wymagana doskonała znajomość aplikacji i zachowań
użytkowników, danych wejściowych
● Najlepsze dla rzadko aktualizowanych appek
15. Funkcjonalność
● Modsecurity:
● Parsuje:
– Chce zrozumieć ruch HTTP
● Bufferuje:
– Kompletne żądanie przez przekazaniem do aplikacji
– Kompletną odpowiedź przez przekazaniem do klienta
● Loguje:
– Pełny zapis ruchu
● Analizuje:
– Checkuje pod kątem reguł
16. Funkcjonalność
● Apache z modsecurity pozwala na:
● Deszyfrowanie SSL
● Wydobywanie z transmisji żądań HTTP
● Parsowanie żądań
● Aktywację WAF
● Przekazywanie żądań do serwerów typu backend
● Modyfikacja danych wychodzących w locie -
dynamiczne wstrzykiwanie
● Wirtualne patchowanie
● LUA
17. Funkcjonalność
● Fazy filtrowania:
● Każda transakcja przechodzi przez 5 faz filtrowania:
● 1: Request headers
● 2: Request body
● 3: Response headers
● 4: Response body
● 5: Logging
18. Funkcjonalność
● Wirtualny patch w uproszczonym przypadku:
● Ograniczenie Request_Body_Size
● Wykrywanie powtarzających się payloadów
● Ograniczenie ilości ARGS
● Weryfikacja ARGS
● Analiza i filtrowanie RESPONSE_BODY
21. Czym jest JSON?
● Prosty, tekstowy format wymiany danych
● Podzbiór języka JS
● Dwie struktury:
● Zbiór par nazwa/wartość
● Lista/tabela/sekwencja wartości
● MIME type: application/json
● Wykorzystywany w implementacjach API, np. Rest
22. Czym jest JSON?
● Openweathermap.org:
{"coord":{"lon":-0.13,"lat":51.51},"sys":
{"message":0.0139,"country":"GB","sunrise":1399436419,"sun
set":1399491223},"weather":
[{"id":521,"main":"Rain","description":"proximity shower
rain","icon":"09d"}],"base":"cmc stations","main":
{"temp":286.16,"pressure":1008,"humidity":66,"temp_min":284.
26,"temp_max":288.15},"wind":{"speed":6.7,"deg":250},"rain":
{"3h":0},"clouds":
{"all":75},"dt":1399448174,"id":2643743,"name":"London","cod"
:200}
26. HMAC
● Manipulacja kontentem:
● W jaki sposób sprawdzić czy odbyła się
modyfikacja dokumentu?
● Parsowanie wyjścia (RESPONSE_BODY)
● Wyliczanie hasha dla wynikowego HTML
● Wstrzykiwanie unikalnych tokenów dla wszystkich
linków dokumentu HTML
● Token = request parameter validation token
27. HMAC
● Executing operator "validateHash" with param ".(aspx?|php)" against
REQUEST_URI.
Target value: "/showimage.php?file=./database_connect.php"
Request URI without hash parameter [/showimage.php?
file=./database_connect.php]
● Warning. Request URI matched ".(aspx?|php)" at REQUEST_URI. No Hash
parameter [file "/etc/httpd/modsecurity.d/base_rules/hmac.conf"] [line "10"] [id
"1000"] [msg "Hash Validation Violation."] [tag "testphp.vulnweb.com"]
28. HMAC
● HMAC zablokuje:
● Skanery
● Automaty
● Botnety
które nie podążają za linkami dostępnymi w
kontekście aplikacji
● XSS/SQL-Injection
34. OWASP CRS
● Modsecurity to tylko silnik
● Musimy go „naładować”:
● Tworzenie dedykowanych reguł od podstaw per
aplikacja
● Wykorzystanie gotowych reguł OWASP CRS
● Hybryda czyli połączenie reguł CRS z własnymi
regułami typu Whitelist
35. OWASP CRS
● HTTP Protection - detecting violations of the HTTP protocol and a locally defined usage policy.
● Real-time Blacklist Lookups - utilizes 3rd Party IP Reputation
● HTTP Denial of Service Protections - defense against HTTP Flooding and Slow HTTP DoS
Attacks.
● Common Web Attacks Protection - detecting common web application security attack.
● Automation Detection - Detecting bots, crawlers, scanners and other surface malicious activity.
● Integration with AV Scanning for File Uploads - detects malicious files uploaded through the
web application.
● Tracking Sensitive Data - Tracks Credit Card usage and blocks leakages.
● Trojan Protection - Detecting access to Trojans horses.
● Identification of Application Defects - alerts on application misconfigurations.
● Error Detection and Hiding - Disguising error messages sent by the server.
36. OWASP CRS
● Reguły OWASP CRS podzielone są na:
● base_rules
● experimental_rules
● optional_rules
● slr_rules
● /etc/httpd/modsecurity.d/
40. Różne
● Integracja z BEEF
● DDOS
● LUA
● Splunk for Modsecurity
● Learning mode i generowanie reguł na podstawie
raportów ze skanerów
● Wykrywanie zmiany User-Agent podczas sesji
41. Podsumowanie
● To tylko zajawka na dobry początek
● W Modsecurity drzemią ogromne możliwości i potencjał
● Idealny komponent rozbudowanego stacku typu Web
Gateway/Secure Proxy
● Automatyzacja
● Skalowalność
● Customizacja
● Auditing