Ajax a bezpiecze „stwo aplikacji zkotulsk/seminarium/J_W.pdf  Ataki na aplikacje webowe...

download Ajax a bezpiecze „stwo aplikacji zkotulsk/seminarium/J_W.pdf  Ataki na aplikacje webowe Wyliczanie

of 40

  • date post

    01-Mar-2019
  • Category

    Documents

  • view

    213
  • download

    0

Embed Size (px)

Transcript of Ajax a bezpiecze „stwo aplikacji zkotulsk/seminarium/J_W.pdf  Ataki na aplikacje webowe...

Ajax a bezpiecze stwo aplikacji webowych

Jakub Wierzgaa

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 2

Web 2.0

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 3

Web 2.0

Zawarto tworzona przez uytkownikw Wysoka interaktywno Aplikacja webowa platform do dziaa

uytkownikw

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 4

Web 2.0 - konsekwencje

Brak kontroli nad treci serwisu przez jego twrc

Zwikszenie powierzchni ataku Aplikacja webowa platform do wykonywania

atakw na uytkownikw

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 5

Ajax

Nowe podejcie do wykorzystania ju istniejcych technologii XHTML i CSS Document Object Model XML i XSLT XMLHttpRequest JavaScript

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 6

Ajax

Asynchroniczno Kod wykonywany i widoczny po stronie

klienta Komunikacja z serwerem nie tylko na yczenie uytkownika

Zwikszenie usability oraz responsiveness

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 7

Thick - Thin

Brak potrzeby instalacjiPotrzeba instalacji

Prosta modyfikacja aplikacji Utrudniona modyfikacja aplikacji

Duy czas odpowiedziMay czas odpowiedzi

Logika aplikacji na serwerzeLogika aplikacji u klienta

Uproszczony interfejsPrzyjazny interfejs

Thin-ClientThick-Client

A gdzie jest Ajax?

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 8

Thick - Thin

Brak potrzeby instalacjiPotrzeba instalacji

Prosta modyfikacja aplikacji Utrudniona modyfikacja aplikacji

Duy czas odpowiedziMay czas odpowiedzi

Logika aplikacji na serwerzeLogika aplikacji u klienta

Uproszczony interfejsPrzyjazny interfejs

Thin-ClientThick-Client

Poczenie najbardziej podanych cech!!!

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 9

Bezpiecze stwo

Wiadomoci wysyane pomidzy serwerem i klientem atwe do odczytania

Wiadomoci wysyane pomidzy serwerem i klientem trudne do odczytania

Aplikacja dostpna dla wszystkichAplikacja dostpna tylko dla posiadaczy programu klienckiego

Logika aplikacji na serwerzeLogika aplikacji u klienta

Thin-ClientThick-Client

A gdzie jest Ajax?

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 10

Bezpiecze stwo

Wiadomoci wysyane pomidzy serwerem i klientem atwe do odczytania

Wiadomoci wysyane pomidzy serwerem i klientem trudne do odczytania

Aplikacja dostpna dla wszystkichAplikacja dostpna tylko dla posiadaczy programu klienckiego

Logika aplikacji na serwerzeLogika aplikacji u klienta

Thin-ClientThick-Client

Poczenie najmniej podanych cech !!!

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 11

Doskonae po czenie

Aplikacje Ajax w stosunku do aplikacji klasycznych Bardziej zoone Bardziej transparentne Wiksze

Skutek: Doskonae poczenie cech zmniejszajcych bezpieczestwo aplikacji

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 12

Umiejtnoci twrcw

Nowa technika

Brak dowiadczenia twrcw

Brak gruntownej wiedzy o dziaaniu aplikacji

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 13

Rzeczywisto

Wysokie wymagania+

Krtkie terminy+

Ograniczone moliwoci szkolenia+

Dostp do frameworkw=

Dua grupa programistw, ktrzy wiedz, e aplikacja dziaa, ale nie wiedz jak.

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 14

Ataki na aplikacje webowe

Wyliczanie zasobw Manipulacja parametrami

SQL Injection XPath Injection Cross Site Scripting Przechwytywanie sesji

Cross Site Request Forgery Denial-of-Service

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 15

Ataki na aplikacje Ajax

Wszystkie powysze!!!

,ale Zwikszona powierzchnia ataku

Wgld w kod aplikacji Ataki specyficzne dla Ajax

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 16

Powierzchnia ataku na aplikacje Ajax

Pola formularzy Cookies Nagwki HTTP Ukryte pola formularzy Parametry zapyta Uploadowane pliki Zdalne metody Ajax

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 17

Powierzchnia ataku na aplikacje Ajax

Powierzchnia ataku na tradycyjne aplikacje webowe

Powierzchnia ataku na aplikacje Ajax

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 18

Niebezpiecze stwa Ajax: Transparentno aplikacji

Statistics.action

Messages.action

Uytkownik

Administrator

Script-lib.js

getMessages()

getStatistics()

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 19

Niebezpiecze stwa Ajax: Transparentno aplikacji

Statistics.action

Uytkownik

Administrator

Script-lib.js

getMessages()

getStatistics()

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 20

Niebezpiecze stwa Ajax: Transparentno aplikacji

Stan sesji przechowywany w JavaScript

// pobierz cen piosenki

var songPrice = getSongPrice(songId);

// sprawd czy u ytkownik posiada wystarczaj co du o rodkw

if (getAccountBalance(username) < songPrice)

{

alert(Nie posiadasz wystraczj cej ilo ci rodkw);

return;

}

// pobierz rodki z konta u ytwkonika

debitAccount(username, songPrice);

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 21

Niebezpiecze stwa Ajax: Transparentno aplikacji

Ujawnienie danych

function processDiscountCode(discountCode) {

if (discountCode == "HALF-OFF-MUSIC") {

// przekieruj do strony zamwienia z upustem

window.location = "SecretDiscountOrderForm.html";

}

}

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 22

Niebezpiecze stwa Ajax: Transparentno aplikacji

Komentarze i dokumentacja w kodzie Uatwienie dla atakujcego Nierzadko kompletny opis dziaania,

parametrw oraz przeznaczenia metod

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 23

Niebezpiecze stwa Ajax: Transparentno aplikacji

Manipulowanie danymi po stronie klienta

userId Select * from userswhere userId=userId

nameuserIdnamecreditCardNo

Dziaanie tradycyjnej aplikacji

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 24

Niebezpiecze stwa Ajax: Transparentno aplikacji

userId Select * from userswhere userId=userId

userIdnamecreditCardNo

userIdnamecreditCardNo

Dziaanie le zaprojektowanej aplikacji Ajax

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 25

Niebezpiecze stwa Ajax: Transparentno aplikacji

rodki zaradcze Zaciemnianie kodu Autoryzowanie wywoywania metod po stronie

serwera Unikanie zbiorczych bibliotek skryptw Przesyanie do klienta minimalnego zestawu

danych Unikanie komentarzy i dokumentacji w kodzie

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 26

Niebezpiecze stwa Ajax:Przesanianie funkcji

Typowo w aplikacjach wraliwych na XSS umoliwiajcych adowanie wasnego kodu JS

(np. JavaScript widget) rodzaju JavaScript mashup

Bazuje na fakcie, e JavaScript pozwala na przedefiniowanie funkcji (nawet tych wbudowanych)

Kto ostatni ten lepszy

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 27

Niebezpiecze stwa Ajax:Przesanianie funkcji

//tworzymy referencj do funkcji orginalnejvar oldAlert = window.alert;//tworzymy funkcje maskuj cfunction newAlert(msg) {

out = "No i udao si zamaskowa funkcj \n";out +=msg.toUpperCase();oldAlert(out);

}//zmieniamy referencje funkcjiwindow.alert = newAlert;alert("Testujemy napisany skrypt");

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 28

Niebezpiecze stwa Ajax:Przesanianie funkcji

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 29

Niebezpiecze stwa Ajax:Przesanianie funkcji

Moliwoci???

Ograniczone niemal jedynie wyobrani uytkownika!

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 30

Same-Origin Policy

Kod JavaScript moe uzyska dostp tylko do dokumentw pochodzcych z tej samej domeny co on sam.

Regua implementowana przez wszystkie wiodce przegldarki

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 31

JSON

Notacja pozwalajca na przedstawianie tablic i obiektw w JavaScript

Definicja tablicy jest interpretowana jako poprawny kod JavaScript; wywoanie konstruktora Array()

[["Jakub", "Wierzgaa", "wierzgala@gmail.com"],

["Jan", "Kowalski" kowalski@foobar.com]],

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 32

JSON Hijacking

Poczenie ataku CSRF oraz przesaniania funkcji JavaScript.

CSRF umoliwia zmuszenie atakowanego klienta do wysania dowolnego dania HTTP, ale nie pozwala na podejrzenie odpowiedzi przez atakujcego

Z pomoc przychodzi przesanianie funkcji

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 33

JSON Hijacking

Scenariusz: Atakujcy tworzy zoliw stron Nadpisuje funkcj konstruujc tabele JSON Na stronie zamieszcza danie HTTP do

atakowanego serwisu Nakania atakowanego do wejcia na utworzon

stron

2 grudnia 2008r. Ajax a bezpieczestwo aplikacji webowych 34

JSON Hijacking Przykad nadpisania konstruktora tabelifunction Array() {

var foo = this;var bar = function() {