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 : CrossSite 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, firewalli itp.
Brak wzmocnionej ochrony dla szczególnie istotnych danych (np. karty)
Nieprawidłowe mechanizmy autoryzacji (np. oparte na GUI)
A8 : CrossSite
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 pageflow
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 URLi
Obsługiwany automatycznie przez
frameworki 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 SIDem
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.exploitdb.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 servera
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'
Samoblokada (logforging, IDS)
Archetyp: “blackfax”
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)
Botnety
19/23
Slow Loris
GET http://www.someserver.co/ HTTP/1.1
Host: www.someserver.co
Connection: keepalive
UserAgent: Mozilla/5.0
Xmy: a
Xmy: a
Xmy: a
Xmy: a
Xmy: a
Xmy: a
Xmy: 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: keepalive
ContentLength: 1000000
UserAgent: 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 (royaltyfree), nie mogą być wykorzystywane oddzielnie:
●
Tło slajdów (background) oraz ikony osób ('awatary')
więcej informacji: http://marek.zachara.name
Attribution
ShareAlike
23/23