Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework



Podobne dokumenty
Bezpieczeństwo systemów komputerowych

Zagrożenia związane z udostępnianiem aplikacji w sieci Internet

Projektowani Systemów Inf.

Kurs rozszerzony języka Python

OWASP OWASP. The OWASP Foundation Cross-Site Scripting. Ryzyko do zaakceptowania? Warszawa, 27 stycznia 2011 Michał Kurek

Aspekty bezpieczeństwa aplikacji internetowych

Ataki na aplikacje WWW. Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW

Zagrożenia trywialne. Zagrożenia bezpieczeństwa aplikacji internetowych. Parametry ukryte. Modyfikowanie parametrów wywołania

Nowoczesne projektowanie aplikacji intrnetowych - opis przedmiotu

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Drobne błędy w portalach WWW

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

The OWASP Foundation Session Management. Sławomir Rozbicki.

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Program szkolenia: Bezpieczny kod - podstawy

Architektura bezpiecznych aplikacji internetowych na platformie Java Enterprise Edition. Jakub Grabowski Warszawa,

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Wprowadzenie do kryptografii i bezpieczeństwa. Po raz czwarty

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Języki programowania wysokiego poziomu. PHP cz.3. Formularze

Języki programowania wysokiego poziomu. Ćwiczenia

Aplikacje WWW - laboratorium

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Wykład 5: PHP: praca z bazą danych MySQL

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Aplikacje WWW - laboratorium

Bezpieczeństwo aplikacji. internetowych. 2. Szkolenie dla administratorów stron internetowych hufców Śląskiej Chorągwi ZHP

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Aplikacje WWW - laboratorium

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Aplikacje WWW. Wykład 13. Zagrożenia bezpieczeństwa aplikacji WWW. wykład prowadzi: Maciej Zakrzewicz. Zagrożenia bezpieczeństwa

Języki programowania wysokiego poziomu. Forum

Wybrane działy Informatyki Stosowanej

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Spring Web MVC, Spring DI

SQL z perspektywy hakera - czy Twoje dane są bezpieczne? Krzysztof Bińkowski MCT,CEI,CEH,ECSA,ECIH,CLFE,MCSA,MCSE..

Modele danych walidacja widoki zorientowane na model

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Bazy danych i strony WWW

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Techniki komputerowe w robotyce

Należy ściągnąć oprogramowanie Apache na platformę

Analiza skuteczności zabezpieczeń przed atakami na aplikacje Web

SMS Kod Automatyczny

Webowy generator wykresów wykorzystujący program gnuplot

Ajax a bezpieczeństwo aplikacji webowych. Jakub Wierzgała

Autor: Joanna Karwowska

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.

Bazy Danych i Usługi Sieciowe

Dworakowski. Wojciech. Zagrożenia i metody ataku. Aplikacje internetowe -

Wykaz zmian w programie SysLoger

Aplikacje WWW - laboratorium

Wysyłanie pliku na serwer. Plik na serwerze.

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Dokumentacja Techniczna 1.2. Webtoken MT. Uruchomienie subskrybcji MT poprzez serwis WWW

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Snifery wbudowane w Microsoft Windows

OWASP. The Open Web Application Security Project. OWASP Top rc1. Dziesięć najbardziej krytycznych zagrożeń w web aplikacjach

Programowanie. Dodatek - uzupełnienie wiadomości. mgr inż. Krzysztof Szwarc. Sosnowiec,

Aplikacje internetowe - laboratorium

Programowanie i projektowanie obiektowe

ATAKI TYPU CROSS-SITE SCRIPTING

Języki programowania wysokiego poziomu. Blog

E-faktura instrukcja dla kontrahentów TVP S.A.

Dokumentacja fillup - MS SQL

System epon Dokumentacja użytkownika

Opis Przedmiotu Zamówienia na przeprowadzenie testów bezpieczeństwa systemu wspomagania nadzoru archiwalnego e-nadzór

KUP KSIĄŻKĘ NA: PRZYKŁADOWY ROZDZIAŁ KOMUNIKATY DLA UŻYTKOWNIKA

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Django : praktyczne tworzenie aplikacji sieciowych / Antonio Mele. Gliwice, cop Spis treści

Projekt strony internetowej firmy organizującej przyjęcia

6. Bezpieczeństwo przy współpracy z bazami danych

Bezpieczeństwo aplikacji webowych

Autoryzacja zleceń z użyciem aplikacji Java Web Start "Pocztowy24Podpis"

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

Data wydania: Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego

0.1 Logowanie do serwisu

REFERAT PRACY DYPLOMOWEJ

Instrukcja składania wniosku o dofinansowanie w systemie informatycznym IP na potrzeby konkursu nr 1/4.1.4/2016

Overlord - specyfikacja uzupełniająca. Jakub Gołębiowski Adam Kawa Piotr Krewski Tomasz Weksej

Instrukcja obsługi dla Użytkownika elektronicznego biura obsługi Klienta w Przedsiębiorstwie Wodociągów i Kanalizacji Spółka z o.o. Spis treści 1.

PRÓBNY EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE CZĘŚĆ PRAKTYCZNA

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Dokumentacja smsapi wersja 1.4

Szczegółowy opis zamówienia:

WYKONANIE MODELU GENERYCZNEGO W POSTACI APLIKACJI, SŁUŻĄCEJ DO PROGNOZOWANIA ZAPOTRZEBOWANIA NA USŁUGI EDUKACYJNE

Płatności CashBill - Kody

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Client-side Hacking - wprowadzenie w tematykę ataków na klienta. Radosław Wal radoslaw.wal@clico.pl

Instrukcja składania wniosku o dofinansowanie w systemie informatycznym IP na potrzeby konkursu nr 1/1.1.1/2015

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Zadanie programistyczne nr 3 z Sieci komputerowych

Baza danych do przechowywania użytkowników

Dokumentacja Skryptu Mapy ver.1.1

Uzyskanie dostępu oraz instalacja oprogramowania STATISTICA dla pracowników oraz studentów Uniwersytetu Ekonomicznego w Poznaniu

Instrukcja składania wniosku o dofinansowanie w systemie informatycznym IP na potrzeby konkursu nr 1/4.1.4/2015

enova Instalacja wersji demo

Mini Produkcja by CTI. Instrukcja

Laboratorium 1 Wprowadzenie do PHP

Transkrypt:

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework mgr inż. Łukasz Stefanowicz dr inż. Grzegorz Bazydło dr inż. Remigiusz Wiśniewski Nowy Kisielin, 17 marca 2015

Plan prezentacji Główne cechy frameworka CodeIgniter Wybrane ataki internetowe a CodeIgniter SQL Injection Cross Site Scripting (XSS) Cross Site Request Forgery (CSRF) Podsumowanie Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 2

CodeIgniter Framework Framework (ang. szkielet aplikacji) napisany w PHP Stworzony przez Ricka Ellisa w roku 2006 Bazuje na wzorcu MVC (Model-View-Controller) Pełna kompatybilność z PHP 5.1.6 i nowszymi Mały rozmiar Wsparcie dla baz danych: MySQL, PostgreSQL, MS SQL, Oracle, SQLite oraz ODBC Zarządzanie sesjami Wbudowane mechanizmy zwiększające bezpieczeństwo serwisu internetowego Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 3

SQL Injection Atak polega na iniekcji odpowiednio spreparowanego kodu SQL. Podstawowym celem jest uzyskanie dostępu do chronionych danych. Formy ataku: przekazywanie dodatkowych parametrów do zapytania (niedostateczne filtrowanie danych), atak na stronie, która nie wyświetla komunikatów błędów, błędy implementacyjne serwera SQL. Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 4

SQL Injection Schemat ataku: 1. Sprawdzenie, czy strona jest podatna na atak SQL Injection (np. poprzez dodanie do argumentu wartości OR 1=1). 2. Uzyskanie informacji na temat nazwy bazy danych oraz tabel. 3. Uzyskanie informacji na temat kolumn. Odpowiednio: information_schema.columns WHERE table_name= oraz cols WHERE table_name=. 4. Pobranie przez atakującego poufnych informacji z bazy danych. Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 5

SQL Injection Schemat ataku: Przesłanie spreparowanego kodu Wykonanie zapytania przez serwer baz danych Serwer DB Atakujący Kradzież danych Serwer WWW Zwrócenie wyniku zapytania Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 6

SQL Injection Zabezpieczenie: Przykładowym sposobem sprawdzenia, czy strona jest podatna na atak SQL Injection jest dodanie do parametru przekazywanego wartości OR 1=1 (np. jeżeli strona index.php przekazuje metodą GET nazwę użytkownika: index.php?user=test, sprawdzenie będzie miało postać: index.php?user=test OR 1=1) Aby wyeliminować ten problem można użyć w CodeIgniter następującej składni modelu: $this -> db -> select('id,nazwa'); $this -> db -> from('uzytkownicy'); $this -> db -> where( USERNAME = '. "'". $user. "'"); Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 7

SQL Injection Zabezpieczenie: W efekcie $user jest argumentem user metody GET. Kod ten uniemożliwia wykorzystanie doklejanej instrukcji SQL, ponieważ wygeneruje błąd na poziomie składanego zapytania. Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 8

Cross Site Scripting (XSS) Atak XSS polega na umiejętnym wstrzykiwaniu odpowiednio spreparowanego kodu źródłowego (najczęściej JavaScript) do serwisu internetowego. Kod źródłowy może zostać przygotowany w trzech podstawowych językach: HTML, CSS, JavaScript. Podstawowym celem ataku jest wykonanie niepożądanych akcji serwisu. Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 9

Cross Site Scripting (XSS) Rodzaje ataków: non-persistent XSS, persistent XSS. Non-persistent XSS spreparowany kod jest prezentowany wyłącznie w odpowiedzi na konkretne zapytanie. Persistent XSS serwis zapamiętuje przesłaną treść i prezentuje ją kolejnym odwiedzającym. Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 10

Cross Site Scripting (XSS) Schemat ataku (na przykładzie forum): 1. Wypełnienie formularza rejestracyjnego forum. 2. Dodanie do jednego z pól (np. stopki) odpowiednio spreparowanego kodu (np. JavaScript). 3. Potwierdzenie rejestracji. Efekt: Stopka jest widoczna przez wszystkich użytkowników forum, więc złośliwy kod wyświetlany jest każdemu użytkownikowi (atak typu persistent XSS). Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 11

Cross Site Scripting (XSS) Schemat ataku: Atakujący Dostarczenie spreparowanego linka Ofiara Wykonanie złośliwego kodu Uruchomienie linka Strona Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 12

Cross Site Scripting (XSS) Zabezpieczenie: Filtrowanie treści włączenie globalnego filtrowania treści pod kątem ataku XSS. Aktywacja w pliku config.php: $config['global_xss_filtering'] = TRUE; Użycie filtra XSS w przypadku metod POST oraz GET (wykorzystanie przeciążonej metody): //filtr XSS: $nazwisko = $this->input->post('nazwisko',true); //brak filtra XSS: $nazwisko = $this->input->post('nazwisko'); Adekwatnie dla metody GET Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 13

Cross Site Scripting (XSS) Zabezpieczenie: Oprócz filtrowania można także wykorzystać metody html_escape jako podstawowe narzędzie w walce z atakami XSS. Np. można sprawdzać, czy czysta przekazana wartość metodą POST jest różna od wartości odfiltrowanej. Jeśli tak, może to oznaczać próbę ataku: if ($nazwisko!= html_escape($nazwisko)){... } Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 14

Cross Site Request Forgery (CSRF) Atak CSRF oznacza wykonanie określonej akcji przez użytkownika nieświadomego zagrożenia. Powodzenie ataku wymaga spełnienia dwóch warunków: użytkownik musi być uwierzytelniony i zautoryzowany w danej aplikacji webowej, przeglądarka użytkownika musi wysłać do serwisu określone żądanie. Uwaga: kliknięcie odnośnika nie jest wymagane, aby zostało przesłane żądanie akcji. Atakujący może osiągnąć swój cel poprzez zagnieżdżoną ramkę, bądź też skrypt osadzony na stronie WWW. Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 15

Cross Site Request Forgery (CSRF) Schemat ataku: 1. Atakujący dokonuje spreparowania odnośnika, strony lub skryptu. 2. Atakujący wykorzystując nieświadomość użytkownika (podstęp, socjotechnika) wymusza na nim wykonanie określonych czynności. 3. Ofiara uruchamia odnośnik i dokonuje wysłania żądania do serwera. 4. Zostaje wykonana akcja określona przez atakującego Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 16

Cross Site Request Forgery (CSRF) Schemat ataku: Uruchomienie linka / żadania Atakujący Dostarczenie spreparowanego linka / żadania Ofiara Wykonanie żadania Strona Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 17

Cross Site Request Forgery (CSRF) Zabezpieczenie: Hasła jednorazowe uniemożliwiają osobie niepowołanej spreparowanie poprawnego żądania do serwera. Dodanie do formularza ukrytego pola, zawierającego pseudolosową liczbę, która jest przekazywana jako potwierdzenie wykonania danego żądania. Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 18

Cross Site Request Forgery (CSRF) Zabezpieczenie: Włączenie wbudowanego narzędzia ochrony przed atakami CSRF. Aktywacja w pliku config.php: $config['csrf_protection'] = TRUE; Zdefiniowanie nazwy tokena oraz czas aktywności: $config['csrf_token_name'] = 'csrf_test_name'; $config['csrf_expire'] = 7200; Po stronie widoku wymagane jest dodanie ukrytego pola, które będzie zawierać odpowiedni token. Wygenerowanie tokena CSRF: <?php echo $this->security->get_csrf_hash();?> Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 19

Podsumowanie Przedstawiono wybrane ataki internetowe na aplikacje webowe oparte o framework CodeIgniter. CodeIgniter posiada wbudowane mechanizmy ochrony przez atakami typu SQL Injection, XSS oraz CSRF. Serwisy webowe stają się dziś coraz bardziej popularne, dlatego już na etapie ich projektowania i implementacji należy zadbać o ich bezpieczeństwo i wyeliminowanie podatnych na ataki miejsc. Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 20

Koniec Dziękuję za uwagę Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework 21