SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
Modsecurity – czy Twój WAF to potrafi?
Leszek Miś
Linux Polska Sp. z o.o.
CEL:
Modsecurity jest cool!
Agenda
● Modsecurity
● Wprowadzenie
● Architektura
● Funkcjonalność
● Filtrowanie komunikacji JSON
● Aktywacja mechanizmu HMAC
● Aktywacja i wykorzystanie reguł OWASP CRS
Wprowadzenie
● Aplikacje webowe jako cel czyli zagrożenia kryją
się wszędzie:
● Aplikacja
● Protokół
● Serwer HTTP/Proxy/Apps
● Framework
● Język programowania
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...
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
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
Uchybienia
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
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
Wprowadzenie
● Negative security model:
SecRule REQUEST_FILENAME „@contains
/owa/scriptname.asx” „chain,
phase:1,block,log,msg:'XSS na mojej appce'”
SecRule ARGS:parameter „@pm < > ( ) --”
● Positive security model:
SecRule REQUEST_FILENAME „@contains
/owa/scriptname.asx” „chain,
phase:1,block,log,msg:'XSS na mojej appce'”
SecRule ARGS:parameter „!@rx ^w+$”
Wprowadzenie
● Modsecurity for:
● Apache:
– Najpopularniejszy
– Ficzer riczi ricz
– Aktualnie 2.4
● Nginx:
– Reverse proxy
– Performance
● IIS
● Modsecurity Core Rule Set
Architektura
● Reverse Proxy:
● mod_proxy:
<Location /appka/>
ProxyPass http://192.168.122.217/appka/
ProxyPassreverse http://192.168.122.217/appka/
SecRuleEngine On
</Location>
● Lokalnie wbudowany
● Chain of proxies
Architektura Reverse proxy+modsecurity
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ł
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
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
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
Funkcjonalność
● Przykładowe reguły:
● SecRule REQUEST_URI "@detectSQLi"
"id:152,log,deny"
● SecRule REQUEST_BODY "@detectXSS"
"id:12345,log,deny"
● SecRule REQUEST_HEADERS:User-Agent "@pm
WebZIP WebCopier Webster WebStripper ...
SiteSnagger CheeseBot" "id:166"
● SecRule ARGS:foo "!@streq bar" "id:176"
LAB1 – uruchomienie Apache
jako Reverse Proxy
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
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}
Filtrowanie komunikacji JSON
● Modsecurity 2.8.0:
● SecRule REQUEST_HEADERS:Content-Type
"application/json"
"id:'2200001',phase:2,t:none,t:lowercase,pass,log,c
tl:requestBodyProcessor=JSON"
● Libyajl
●
LAB2 - Filtrowanie komunikacji JSON
Mechanizm HMAC
● HMAC Token Protection:
● Forceful Browsing
● Reflected XSS
● Ochrona CSRF
● Manipulacja QUERY_STRINGS
● Ochrona przed automatami/botami
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
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"]
HMAC
● HMAC zablokuje:
● Skanery
● Automaty
● Botnety
które nie podążają za linkami dostępnymi w
kontekście aplikacji
● XSS/SQL-Injection
HMAC
HMAC
● Dyrektywy:
● SecDisableBackendCompression On
● SecRuleEngine On
● SecContentInjection On
● SecStreamOutBodyInspection On
● SecHashEngine On
● SecHashKey rand keyOnly
● SecHashParam "hmac"
● SecHashMethodrx "HashHref" ".(aspx?|php)"
● SecHashMethodrx "HashFormAction" ".(aspx?|php)"
● SecRule REQUEST_URI "@validateHash .(aspx?|php)"
"phase:2,id:1000,t:none,block,msg:'Hash Validation
Violation.',ctl:hashEnforcement=On,setvar:tx.anomaly_score=+%
{tx.critical_anomaly_score},setvar:'tx.msg=%{rule.msg}',setvar:tx.%
{rule.id}-OWASP_CRS/WEB_ATTACK/PARAM_MANIPULATION-%
{matched_var_name}=%{matched_var}"
LAB3 - HMAC
OWASP Top 10
● Zbiór 10 najistotniejszych, kluczowych błędów w zabezpieczeniach aplikacji
internetowych:
● A1 – Injection
● A2 – Broken Auth and Session MGMT
● A3 – XSS
● A4 – Insecure Direct Object References
● A5 – Security Misconfiguration
● A6 – Sensitive Data Exposure
● A7 – Missing Function Level Access Control
● A8 – CSRF
● A9 – Known vulns
● A10 – Unvalidated Redirects and Forwards
OWASP Docs & tools
● ASVS
● ESAPI
● Testing Guide
● Cheat Sheets
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
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.
OWASP CRS
● Reguły OWASP CRS podzielone są na:
● base_rules
● experimental_rules
● optional_rules
● slr_rules
● /etc/httpd/modsecurity.d/
LAB4 – Atak.
OWASP CRS
● Dostosowanie reguł per aplikacja:
● SecRuleRemoveById
● SecRuleRemoveByMsg
● SecRuleRemoveByTag
LAB5 – instalacja i aktywacja reguł CRS
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
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
Dziękuję za uwagę:)
lm@linuxpolska.pl

Contenu connexe

Tendances

Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...
Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...
Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...
Grzegorz Gałęzowski
 
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.comNGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
Leszek Mi?
 
Info meet pomiary wydajności
Info meet pomiary wydajnościInfo meet pomiary wydajności
Info meet pomiary wydajności
magda3695
 

Tendances (15)

Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...
Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...
Quality of protection, grywalizacja i inne nietypowe zastosowania microsoft p...
 
JDD 2017: Bezpieczny wypoczynek - czyli uwierzytelnianie RESTa (Krzysztof Be...
JDD 2017:  Bezpieczny wypoczynek - czyli uwierzytelnianie RESTa (Krzysztof Be...JDD 2017:  Bezpieczny wypoczynek - czyli uwierzytelnianie RESTa (Krzysztof Be...
JDD 2017: Bezpieczny wypoczynek - czyli uwierzytelnianie RESTa (Krzysztof Be...
 
GlusterFS
GlusterFSGlusterFS
GlusterFS
 
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.comNGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
 
Infrastructure As Code
Infrastructure As CodeInfrastructure As Code
Infrastructure As Code
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linux
 
PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...
PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...
PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...
 
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...
 
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
 
PLNOG 22 - Krzysztof Załęski - Praktyczne zastosowanie narzędzi NetDevOps
PLNOG 22 - Krzysztof Załęski - Praktyczne zastosowanie narzędzi NetDevOpsPLNOG 22 - Krzysztof Załęski - Praktyczne zastosowanie narzędzi NetDevOps
PLNOG 22 - Krzysztof Załęski - Praktyczne zastosowanie narzędzi NetDevOps
 
Ochrona podatnych webaplikacji za pomocą wirtualnych poprawek
Ochrona podatnych webaplikacji za pomocą wirtualnych poprawekOchrona podatnych webaplikacji za pomocą wirtualnych poprawek
Ochrona podatnych webaplikacji za pomocą wirtualnych poprawek
 
TGT#20 - Ataki XSS - Robert Charewicz
TGT#20 - Ataki XSS - Robert CharewiczTGT#20 - Ataki XSS - Robert Charewicz
TGT#20 - Ataki XSS - Robert Charewicz
 
Mapowanie wiedzy pentestera na potrzeby ochrony krytycznej infrastruktury IT ...
Mapowanie wiedzy pentestera na potrzeby ochrony krytycznej infrastruktury IT ...Mapowanie wiedzy pentestera na potrzeby ochrony krytycznej infrastruktury IT ...
Mapowanie wiedzy pentestera na potrzeby ochrony krytycznej infrastruktury IT ...
 
Info meet pomiary wydajności
Info meet pomiary wydajnościInfo meet pomiary wydajności
Info meet pomiary wydajności
 
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL version
 

Similaire à Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Atmosphere 2014: Scalable and under control - open cloud architecture conside...
Atmosphere 2014: Scalable and under control - open cloud architecture conside...Atmosphere 2014: Scalable and under control - open cloud architecture conside...
Atmosphere 2014: Scalable and under control - open cloud architecture conside...
PROIDEA
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Biznes 2.0
 

Similaire à Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska (20)

Atmosphere 2014: Scalable and under control - open cloud architecture conside...
Atmosphere 2014: Scalable and under control - open cloud architecture conside...Atmosphere 2014: Scalable and under control - open cloud architecture conside...
Atmosphere 2014: Scalable and under control - open cloud architecture conside...
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
HTML5: Atak i obrona
HTML5: Atak i obronaHTML5: Atak i obrona
HTML5: Atak i obrona
 
OWASP Appsensor in action
OWASP Appsensor in actionOWASP Appsensor in action
OWASP Appsensor in action
 
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
Iron Python I Dlr
Iron Python I DlrIron Python I Dlr
Iron Python I Dlr
 
Advanced Crypto Service Provider – kryptografia jako usługa
Advanced Crypto Service Provider – kryptografia jako usługaAdvanced Crypto Service Provider – kryptografia jako usługa
Advanced Crypto Service Provider – kryptografia jako usługa
 
Środowisko PWA
Środowisko PWAŚrodowisko PWA
Środowisko PWA
 
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDNPLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
 
Security B-Sides Warsaw 2014 - Network Security Treasures - Gawel Mikolajczyk
Security B-Sides Warsaw 2014 - Network Security Treasures - Gawel MikolajczykSecurity B-Sides Warsaw 2014 - Network Security Treasures - Gawel Mikolajczyk
Security B-Sides Warsaw 2014 - Network Security Treasures - Gawel Mikolajczyk
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
Tomek Banasiak: Jak bez stresu obserwować rosnący ruch w Twojej usłudze? Czyl...
Tomek Banasiak: Jak bez stresu obserwować rosnący ruch w Twojej usłudze? Czyl...Tomek Banasiak: Jak bez stresu obserwować rosnący ruch w Twojej usłudze? Czyl...
Tomek Banasiak: Jak bez stresu obserwować rosnący ruch w Twojej usłudze? Czyl...
 
10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania
 
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
WebView security on iOS (PL)
WebView security on iOS (PL)WebView security on iOS (PL)
WebView security on iOS (PL)
 
integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...
integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...
integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
 

Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

  • 1. Modsecurity – czy Twój WAF to potrafi? Leszek Miś Linux Polska Sp. z o.o.
  • 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
  • 11. Wprowadzenie ● Negative security model: SecRule REQUEST_FILENAME „@contains /owa/scriptname.asx” „chain, phase:1,block,log,msg:'XSS na mojej appce'” SecRule ARGS:parameter „@pm < > ( ) --” ● Positive security model: SecRule REQUEST_FILENAME „@contains /owa/scriptname.asx” „chain, phase:1,block,log,msg:'XSS na mojej appce'” SecRule ARGS:parameter „!@rx ^w+$”
  • 12. Wprowadzenie ● Modsecurity for: ● Apache: – Najpopularniejszy – Ficzer riczi ricz – Aktualnie 2.4 ● Nginx: – Reverse proxy – Performance ● IIS ● Modsecurity Core Rule Set
  • 13. Architektura ● Reverse Proxy: ● mod_proxy: <Location /appka/> ProxyPass http://192.168.122.217/appka/ ProxyPassreverse http://192.168.122.217/appka/ SecRuleEngine On </Location> ● Lokalnie wbudowany ● Chain of proxies
  • 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
  • 19. Funkcjonalność ● Przykładowe reguły: ● SecRule REQUEST_URI "@detectSQLi" "id:152,log,deny" ● SecRule REQUEST_BODY "@detectXSS" "id:12345,log,deny" ● SecRule REQUEST_HEADERS:User-Agent "@pm WebZIP WebCopier Webster WebStripper ... SiteSnagger CheeseBot" "id:166" ● SecRule ARGS:foo "!@streq bar" "id:176"
  • 20. LAB1 – uruchomienie Apache jako Reverse Proxy
  • 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}
  • 23. Filtrowanie komunikacji JSON ● Modsecurity 2.8.0: ● SecRule REQUEST_HEADERS:Content-Type "application/json" "id:'2200001',phase:2,t:none,t:lowercase,pass,log,c tl:requestBodyProcessor=JSON" ● Libyajl ●
  • 24. LAB2 - Filtrowanie komunikacji JSON
  • 25. Mechanizm HMAC ● HMAC Token Protection: ● Forceful Browsing ● Reflected XSS ● Ochrona CSRF ● Manipulacja QUERY_STRINGS ● Ochrona przed automatami/botami
  • 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
  • 29. HMAC
  • 30. HMAC ● Dyrektywy: ● SecDisableBackendCompression On ● SecRuleEngine On ● SecContentInjection On ● SecStreamOutBodyInspection On ● SecHashEngine On ● SecHashKey rand keyOnly ● SecHashParam "hmac" ● SecHashMethodrx "HashHref" ".(aspx?|php)" ● SecHashMethodrx "HashFormAction" ".(aspx?|php)" ● SecRule REQUEST_URI "@validateHash .(aspx?|php)" "phase:2,id:1000,t:none,block,msg:'Hash Validation Violation.',ctl:hashEnforcement=On,setvar:tx.anomaly_score=+% {tx.critical_anomaly_score},setvar:'tx.msg=%{rule.msg}',setvar:tx.% {rule.id}-OWASP_CRS/WEB_ATTACK/PARAM_MANIPULATION-% {matched_var_name}=%{matched_var}"
  • 32. OWASP Top 10 ● Zbiór 10 najistotniejszych, kluczowych błędów w zabezpieczeniach aplikacji internetowych: ● A1 – Injection ● A2 – Broken Auth and Session MGMT ● A3 – XSS ● A4 – Insecure Direct Object References ● A5 – Security Misconfiguration ● A6 – Sensitive Data Exposure ● A7 – Missing Function Level Access Control ● A8 – CSRF ● A9 – Known vulns ● A10 – Unvalidated Redirects and Forwards
  • 33. OWASP Docs & tools ● ASVS ● ESAPI ● Testing Guide ● Cheat Sheets
  • 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/
  • 38. OWASP CRS ● Dostosowanie reguł per aplikacja: ● SecRuleRemoveById ● SecRuleRemoveByMsg ● SecRuleRemoveByTag
  • 39. LAB5 – instalacja i aktywacja reguł CRS
  • 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