Bezpieczeństwo aplikacji internetowych

Transkrypt

Bezpieczeństwo aplikacji internetowych
Bezpieczeństwo aplikacji internetowych
Marek Zachara
http://marek.zachara.name
1/23
Aplikacje internetowe znajdują się
pod ciągłym 'ostrzałem'
Jest to wynikiem skali:
 ponad 3 mld użytkowników sieci
 900 mln 'hostnames'
 200 mln 'active'
 5 mln 'PCs'
Wstęp
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
Podatności
aplikacji
Inne metody
ataków
2/23
Ataki można podzielić na dwie główne klasy
Ataki na użytkowników
Ataki na system
Przykłady
Przykłady
XSS
DoS
CSRF
Code Injection
Phishing
Buffer Overflow
Wstęp
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
Podatności
aplikacji
Inne metody
ataków
3/23
OWASP TOP 10
A1 : Injection
A2 : Broken Session and Authentication
A3 : Cross­Site Scripting
A4 : Insecure Direct
Object References
A5: Security
Misconfiguration
A6 : Sensitive Data
Exposure
A7 : Missing
Function Level
Wstrzyknięcia danych do SQL, OS, LDAP i innych interpreterów
Błędne mechanizmy np. identyfikatorów sesji, kluczy, haseł itp.
Przyjęcie i przesłanie do innego użytkownika wadliwych danych (skryptu)
Istnienie publicznie dostępnych odwołań do wewnętrznych obiektów
Wstęp
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
Podatności
aplikacji
Inne metody
ataków
Konfiguracja serwera, algorytmów szyfrowania, firewall­i itp.
Brak wzmocnionej ochrony dla szczególnie istotnych danych (np. karty)
Nieprawidłowe mechanizmy autoryzacji (np. oparte na GUI)
A8 : Cross­Site
Request Forgery
Wykorzystanie użytkownika i jego np. danych sesji (bez ich poznania)
A9 : Components with
Known Vulnerabilities
Korzystanie z bibliotek i algorytmów zawierających znane podatności
A10: Unvalidated
Redirects and Forwads
Użycie niezaufanych danych do przekierowania page­flow
Source: https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
4/23
HTTP jest protokołem bezpołączeniowym
Nie pozwala na identyfikację kolejnych
zapytań użytkownika
Wstęp
Problemy z
sesją HTTP
Problem jest rozwiązywane przez użycie Pozostałe
ataki na użytkownika
'Identyfikatora Sesji' (ang. SID)
Podatności
aplikacji
 Generowany (zwykle losowo) przy
pierwszym połączeniu
 Identyfikuje zapytania użytkownika
 Przekazywany przez cookies, pola input lub jako parametry URL­i
 Obsługiwany automatycznie przez
framework­i i języki programowania WWW
Inne metody
ataków
5/23
Jak działa sesja HTTP
Wstęp
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
Podatności
aplikacji
Inne metody
ataków
6/23
Identyfikator sesji jest JEDYNYM elementem
identyfikującym zapytania użytkownika.
Główne klasy ataków to:
Session sniffing
 Podsłuchanie ID sesji
Wstęp
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
Podatności
aplikacji
Inne metody
ataków
Session fixation
 Wymuszenie ID sesji
Session riding
 Wykorzystanie cudzej sesji
7/23
Metody podsłuchania identyfikatora sesji
Wstęp
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
Podatności
aplikacji
Inne metody
ataków
 Przechwycenie ruchu TCP/IP
 Podsłuchanie komunikacji WiFi
 Ataki na protokół BGP, DNS, itp.
 Odczyt SID na komputerze
użytkownika
8/23
Wymuszenie sesji – Session Fixation
Wstęp
Problemy z
sesją HTTP
=
Pozostałe
ataki na użytkownika
Podatności
aplikacji
 Atakujący generuje SID
Inne metody
ataków
 Następnie przekazuje SID ofierze
 I przekonuje do zalogowania
do serwisu z tym SID­em
 Dzięki temu może korzystać
z serwisu tak jak ofiara ataku
9/23
Session Raiding / Cross Site Request Forgery
Wstęp
<img src=”http://server/order?product=12&deliver=my@email...
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
Podatności
aplikacji
 Ofiara otwiera spreparowaną
Inne metody
ataków
stronę WWW w trakcie gdy
jest zalogowana do serwisu
 Kod HTML tej strony skutkuje
zapytaniem do serwisu
 Przeglądarka dołącza do
zapytania ciasteczko z SID
10/23
Cross Site Scripting (XSS)
Wstęp
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
<script>...</script>
Podatności
aplikacji
Inne metody
ataków
Uruchomienie
skryptu,
przesłanie danych
Portal / Blog
11/23
Atak na protokół: DNS Spoofing
Serwer Banku
198.23.12.1
Wstęp
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
www.mojbank.pl
router
Podatności
aplikacji
Inne metody
ataków
198.23.12.1
Prawidłowy serwer DNS
123.01.20.10
240.190.99.2
Serwer DNS
240.190.99.1
Serwer WWW
240.190.99.2
12/23
Bezpośrednie ataki na aplikacje internetowe
 Uzyskanie dostępu do zasobów serwera:
 Bazy danych
Wstęp
Problemy z
sesją HTTP
 Strony WWW (publikacja malware)
Pozostałe
ataki na użytkownika
 Kluczy, haseł i danych autoryzacyjnych
Podatności
aplikacji
 Innych elementów sieci lokalnej
Inne metody
ataków
Może być etapem pośrednim w ataku
złożonym (wielostopniowym)
13/23
SQL Injection – niechlubny zwycięzca
Wstęp
Login:
admin
Password: ' OR 1==1; '
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
Podatności
aplikacji
Inne metody
ataków
SELECT id FORM users WHERE login = ' ' $_POST[“login”]
AND password = ' $_POST[“password”]'
Zwróci z reguły pierwszy wiersz tabeli !
14/23
Inne przykłady 'Code Injection'
 PHP (ASP/JSP) Wstęp
 LDAP
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
 OS/Shell
Generalnie, przekazanie do wykonania
parametrów w formie string jest Podatności
aplikacji
Inne metody
ataków
Bardzo Złym PomysłemTM
<? include($_GET['section']) ?>
“admin.php”
“http://phishsite.mebad/”
“../../../../../etc/passwd”
<input type=”hidden” name=”user_id” value=”34”>
15/23
Przykład ataku “parameter tampering"
 www.exploit­db.com/exploits/14360
http://mydomain/MyStruts.action?
('\u0023_memberAccess[\'allowStaticMethodAccess\']')
(meh)=true&(aaa)
(('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\'
]\u003d\u0023foo')(\u0023foo\u003dnew
%20java.lang.Boolean("false")))&(asdf)(('\u0023rt.exit(1)')
(\u0023rt\[email protected]@getRuntime()))=1
Wstęp
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
Podatności
aplikacji
Inne metody
ataków
Wykorzystuje kodowanie znaków specjalnych przy pomocy kodów UTF
Pozwala na uruchomienie arbitralnego
kodu w Java z prawami web server­a
16/23
Forceful browsing
 “Ręczne” wybranie ścieżki lub zasobu
Wstęp
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
Podatności
aplikacji
Przeglądanie katalogów
Inne metody
ataków
 /some_hidden_dir/
Ominięcie elementu procesu
 /form5.asp
Kod źródłowy strony/obiektu
 /index.php.bak
17/23
Ataki Denial of Service
'Zalanie' serwera wieloma
zapytaniami
Zapytania szczególnie
obciążające zasoby
Awaria serwera / aplikacji

Wstęp
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
Podatności
aplikacji
Inne metody
ataków
Szczególne przypadki
Blokowanie kont
Programowy 'shutdown'
 Samo­blokada (log­forging, IDS)
Archetyp: “black­fax”
18/23
Distributed DoS (DDoS)
 Atak prowadzony z wielu źródeł
 Sumaryczna przepustowość/wydajność
klientów większa od serwera
 Exploit technologii / protokołu:
amplification attack
Wstęp
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
Podatności
aplikacji
Inne metody
ataków
Skąd brać grupy komputerów do prowadzenia ataku:
Wolontariusze (akcje społeczne)
Bot­nety
19/23
Slow Loris
GET http://www.someserver.co/ HTTP/1.1
Host: www.someserver.co
Connection: keep­alive
User­Agent: Mozilla/5.0
X­my: a
X­my: a
X­my: a
X­my: a
X­my: a
X­my: a
X­my: a
Wstęp
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
Podatności
aplikacji
Inne metody
ataków
20/23
RUDY – aRe yoU Dead Yet?
POST http://www.someserver.co/
Host: www.someserver.co
Connection: keep­alive
Content­Length: 1000000
User­Agent: Mozilla/5.0
Wstęp
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
Podatności
aplikacji
Inne metody
ataków
login: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
21/23
XML Bomb (billion laughs)
Atak na parser XML (lub inne parsery)
Przykładowy kod:
<!ENTITY lol1 'lol'>
<!ENTITY lol2 '&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;'>
<!ENTITY lol3 '&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;'>
<!ENTITY lol4 '&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;'>
Wstęp
Problemy z
sesją HTTP
Pozostałe
ataki na użytkownika
Podatności
aplikacji
Inne metody
ataków
Powoduje stworzenie dużej ilości instancji
(np. miliard) podstawowego obiektu (lol)
Kod XML jest poprawny – exploit specyfikacji 22/23
Dziękuję za uwagę.
Pytania?
Dokument udostępniany na licencji
Creative Commons
Wykorzystane materiały:
●
Clipart – openclipart.org
●
Internet map – The Opte Project
Elementy licencjonowane (royalty­free), nie mogą być wykorzystywane oddzielnie:
●
Tło slajdów (background) oraz ikony osób ('awatary')
więcej informacji: http://marek.zachara.name
Attribution
Share­Alike
23/23

Podobne dokumenty