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



Podobne dokumenty
Gerard Frankowski, Zespół Bezpieczeństwa PCSS

Zabezpieczanie platformy Windows Server 2003

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

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Drobne błędy w portalach WWW

Bezpieczeństwo. hostingowej GERARD FRANKOWSKI, MARCIN JERZAK

Praktyczne wykorzystanie mechanizmów zabezpieczeń w aplikacjach chmurowych na przykładzie MS Azure

The OWASP Foundation Session Management. Sławomir Rozbicki.

Instrukcja instalacji Control Expert 3.0

Administracja i programowanie pod Microsoft SQL Server 2000

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

Wykaz zmian w programie SysLoger

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

Bezpieczeństwo systemów komputerowych

Migracja bazy danych Microsoft Access *.mdb do Microsoft SQL 2008 Server R2 SP1 dla oprogramowania Płatnik

11. Autoryzacja użytkowników

Kancelaria Prawna.WEB - POMOC

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r.

Poznańskie Centrum Superkomputerowo-Sieciowe Operator sieci PIONIER oraz POZMAN Uczestnik projektów naukowo-badawczych Główne obszary zainteresowań:

Projektowani Systemów Inf.

Ko n f i gura cja p ra cy V ISO z bazą SQL S e rve r

Asix. Konfiguracja serwera MS SQL dla potrzeb systemu Asix. Pomoc techniczna NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

Win Admin Monitor Instrukcja Obsługi

Problemy techniczne SQL Server

Problemy techniczne SQL Server

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

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


Wprowadzenie do kryptografii i bezpieczeństwa. Po raz czwarty

Bezpieczeństwo aplikacji PHP hostowanych w środowisku. Windows. Gerard Frankowski, PCSS

Dokumentacja fillup - MS SQL

Zarządzanie Infrastrukturą IT. Jak ręcznie utworzyć instancję EAUDYTORINSTANCE na SQL Serwerze

asix Autoryzacja dostępu do zasobów WWW systemu asix (na przykładzie systemu operacyjnego Windows 2008)

ActiveXperts SMS Messaging Server

R o g e r A c c e s s C o n t r o l S y s t e m 5

Bezpieczne strony WWW dla edukacji, organizacji non-profit i uŝytkowników indywidualnych.

Program kadrowo płacowy - wersja wielodostępna z bazą danych Oracle SQL Server 8 lub 9

Użytkownicy, uprawnienia, role w SQL Server (W oparciu o SQL Server 2008R2 Books Online)

baza MS SQLEXPRES domyślnie po instalacji nie umożliwia obsługi połączenia z innego komputera

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

MS Windows Vista. Spis treści. Autor: Jacek Parzonka, InsERT

Płace Optivum. 1. Zainstalować serwer SQL (Microsoft SQL Server 2008 R2) oraz program Płace Optivum.

Kadry Optivum, Płace Optivum. Jak przenieść dane na nowy komputer?

Prawa dostępu do serwera. Nadawanie i odbieranie uprawnień DCL. Użytkownicy a role

CREATE USER

Wymagane jest podłączenie serwera do Internetu (konieczne do zdalnego dostępu).

Instrukcja instalacji aplikacji i konfiguracji wersji sieciowej. KomKOD

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

PHP: bazy danych, SQL, AJAX i JSON

Procedury techniczne modułu Forte Kontroling. Środowisko pracy programu i elementy konfiguracji

Obsługa poczty elektronicznej w domenie emeritus.ue.poznan.pl

Jak przenieść bazę danych na zdalny serwer?

I. Informacje ogólne. Jednym z takich systemów jest Mambo.

Niezbędne narzędzia. Przed rozpoczęciem pracy z PHP należy zainstalować odpowiednie narzędzia: środowisko PHP serwer WWW serwer baz danych MySQL

Pracownia internetowa w szkole ZASTOSOWANIA

Kadry Optivum, Płace Optivum. Jak przenieść dane na nowy komputer?

Dokumentacja SMS przez FTP

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

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

(Pluggable Authentication Modules). Wyjaśnienie technologii.

Dokonaj instalacji IIS opublikuj stronę internetową z pierwszych zajęć. Ukaże się kreator konfigurowania serwera i klikamy przycisk Dalej-->.

Wykaz zmian w programie SysLoger

Snifery wbudowane w Microsoft Windows

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Instalacja SQL Server Konfiguracja SQL Server Logowanie - opcje SQL Server Management Studio. Microsoft Access Oracle Sybase DB2 MySQL

Jak bezpieczne są Twoje dane w Internecie?

Archiwizacja baz MSSQL /BKP_SQL/ opis oprogramowania

Zabezpieczanie platformy Windows Server 2003

KONFIGURACJA PRZEGLĄDAREK. Poniższa konfiguracja dedykowana jest dla Bankowości Internetowej SGB

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

Instalacja i konfiguracja Symfonia.Common.Server oraz Symfonia.Common.Forte

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

Uwierzytelnianie użytkowników sieci bezprzewodowej z wykorzystaniem serwera Radius (Windows 2008)

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

INSTRUKCJA OBSŁUGI DLA SIECI

Zabezpieczanie platformy Windows Server 2003

e-audytor v.3.x INSTRUKCJA INSTALACJI I URUCHOMIENIA SYSTEMU

Instrukcja instalacji programu SYSTEmSM

KORZYSTANIE Z BAZY DANYCH UpToDate

4. Podstawowa konfiguracja

Przewodnik Google Cloud Print

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Panel administracyjny serwera: admin.itl.pl

Wstęp... ix. 1 Omówienie systemu Microsoft Windows Small Business Server

Problemy techniczne SQL Server

Pomoc dla usługi GMSTHostService. GMSTHostService. Pomoc do programu 1/14

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Aktualizacja środowiska JAVA a SAS

Kontrola dostępu w ASP.NET

Część I Tworzenie baz danych SQL Server na potrzeby przechowywania danych

Fiery Remote Scan. Uruchamianie programu Fiery Remote Scan. Skrzynki pocztowe

Win Admin Replikator Instrukcja Obsługi

Problemy techniczne SQL Server

ZASADY KORZYSTANIA Z PLIKÓW COOKIES ORAZ POLITYKA PRYWATNOŚCI W SERWISIE INTERNETOWYM PawłowskiSPORT.pl

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

Win Admin Replikator Instrukcja Obsługi

Konfiguracja programu MS Outlook 2007 dla poczty w hostingu Sprint Data Center

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

Transkrypt:

Bezpieczeństwo heterogenicznej platformy hostingowej Gerard Frankowski, Marcin Jerzak Zespół Bezpieczeństwa PCSS Poznań, 19.07.2011 MIC Summer School 1

Agenda Wprowadzenie Przykładowe zagrożenia dla aplikacji webowych Bezpieczeństwo silnika bazy danych MySQL MS SQL Server Bezpieczeństwo języka stron ASP/ASP.NET PHP Zestaw użytecznych narzędzi do testowania konfiguracji oraz kodu 2

Cel prezentacji Przedstawienie możliwości budowy mieszanego środowiska hostingowego w kontekście bezpieczeństwa IT Szkolenie jest przeznaczone głównie dla administratorów serwerów WWW oraz twórców aplikacji webowych Częściowo skorzystają specjaliści bezpieczeństwa IT

Czy i dlaczego środowisko heterogeniczne? Kryteria wyboru Kwestie finansowe (MŚP, użytkownicy indywidualni) Doświadczenie Szybkość nauki Możliwości języka Dostępność specjalistów na rynku Docelowe wymagania stawiane przed aplikacją Preferencje i przekonania osobiste 4

Bezpieczeństwo wieloelementowego środowiska hostingowego Bezpieczeństwo komponentów System operacyjny serwera Serwer WWW Serwer baz danych Interpreter języka stron Inne (np. aplikacje CMS, usługa FTP) Wzajemna współpraca heterogenicznych składników środowiska Możliwe problemy z bezpieczeństwem interfejsów 5

Zagrożenia aplikacji webowych 6

Ile to kosztuje?

Najważniejsze zagrożenia (według OWASP TOP 10) Injections Cross-Site Scripting (XSS) Błędna obsługa sesji Insecure Direct Object References Cross-Site Request Forgery (CSRF) Security Misconfiguration

Injections (1) Zmuszenie aplikacji, aby wysłany przez użytkownika ciąg znaków przesłała do interpretera stron SQL Injection OS Command Injection Xpath Injection HTML Injection XML Injection LDAP Injection

Injections (2) ochrona Wykorzystanie: Procedur składowanych Prepared statements Walidacja danych przesyłanych przez użytkownika (white list) Zasada minimalnych uprawnień

Cross-sitesite scripting (XSS) (1) Dane pochodzące od atakującego przekazane są do przeglądarki użytkownika Reflected XSS Persistent XSS Zagrożenia: Kradzież identyfikatora sesji Kradzież danych Phishing

Cross-sitesite scripting (XSS) (2) Filtrowanie danych pochodzących od użytkownika przy użyciu białych list Przekodowanie danych pochodzących od użytkownika http://www.owasp.org/index.php/xss

Błędna obsługa sesji (1) HTTP to protokół bezstanowy Szyfrowanie wykorzystywane jedynie w momencie logowania Łatwe do przewidzenia identyfikatory sesji Sesje w ukrytych polach lub w URL-u Przechwycenie sesji = kradzież poświadczeń Firesheep http://security.psnc.pl/reports/sklepy_interne towe_cookies.pdf

Błędna obsługa sesji (2) ochrona Sesje losowe Przycisk wyloguj powoduje unieważnienie aktualnej sesji Wykorzystanie SSL Identyfikator sesji zmienia się po zalogowaniu Ochrona przed tzw. session fixation

Insecure Direct Object References Błędna polityka dostępu do zasobów www.jakiśbank.pl/client/10002341 www.jakiśbank.pl/client client/10002342 Każdorazowa weryfikacja uprawnień przy próbie dostępu do obiektu

Cross Site Request Forgery (CSRF) (1) Zmuszenie przeglądarki ofiary do wykonania akcji na atakowanej stronie Wykorzystanie przeglądarki: Sesje Adres IP User-Agent Certyfikat SSL Poświadczenia domeny Windows <img src=http:// ://www.jakiśbank.pl/deleteuser.php?id=123& width=1&height=1>

Cross Site Request Forgery (CSRF) (2) ochrona Token dodawany do każdego wrażliwego zapytania: W ukrytym polu O losowej wartości CSRF za pomocą XSS

Bezpieczeństwo silnika bazy danych 18

Wybieramy silnik bazodanowy Kryteriów wyboru może być wiele Znajomość rozwiązania Współpraca z innymi elementami środowiska Wydajność Skalowalność Prostota użytkowania Łatwość migracji Bezpieczeństwo Wykonywanie poleceń systemowych Multiple statements Dostęp do plików Problemy specyficzne dla silnika 19

Współpraca technologii: PHP + MSSQL Możliwe trudności z połączeniem technologii na co zwrócić uwagę? Uaktywnienie w php.ini rozszerzenia MS SQL [usunięcie];extension=php_mssql.dll Odpowiednia wersja biblioteki ntwdblib.dll 2000.80.194.0, nie 2000.2.8.0 Mixed authentication mode dla SQL Servera HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\LoginMode = 2 Umożliwienie logowania się na określone konto ALTER LOGIN sa ENABLE ALTER LOGIN sa WITH PASSWORD <strong_pass> 20

Współpraca technologii: PHP + MSSQL (2) Możliwe trudności kontynuacja SQL Server Configuration Manager Uaktywnienie odpowiednich protokołów dla SQL Servera Wyłączenie szyfrowania (do testów) Lokalny firewall Sprawdzenie plików logu SQL Servera [Install_dir]\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG 21

Uruchamianie poleceń systemowych Nie chodzi tu o eksploitację innych podatności, dającą w rezultacie dostęp do powłoki systemu Mamy na myśli nadużycie istniejącej funkcjonalności odwołującej się do poleceń systemu operacyjnego Zagrożenia napastnik działa w systemie z uprawnieniami serwera baz danych Wyciek (bardzo wielu) informacji podstawa do dalszych ataków Zniszczenie lub modyfikacja bazy danych Wykonywanie działań w systemie operacyjnym DoS na serwer bazy danych i/lub system 22

Uruchamianie poleceń MySQL Brak bezpośredniego wsparcia dla uruchomienia polecenia systemowego Istnieje jedynie możliwość wykonania polecenia z narzędzia linii komend > system <command> Działa tylko w systemach uniksowych 23

Uruchamianie poleceń MS SQL Rozszerzona procedura składowana xp_cmdshell Domyślnie wyłączona (duży plus!) Wymaga uprawnień CONTROL SERVER Uaktywnienie poprzez: SQL Server Management Studio Klienta linii poleceń EXEC sp_configure 'show advanced options', 1 EXEC sp_configure 'xp_cmdshell', 1 Powinniśmy uaktywnić tylko jeśli jest to absolutnie niezbędne! 24

Uruchamianie poleceń MS SQL (2) Konfiguracja xp_cmdshell w MS SQL Server 2008 SQL Server Management Studio [Server_Name] + RMB Facets Facet: Surface Area Configuration 25

Uruchamianie poleceń MS SQL (3) Jeżeli niezbędne jest udzielenie prawa wykonania procedury xp_cmdshell pojedynczemu użytkownikowi Nie poprzez GRANT CONTROL SERVER Lepiej: EXEC sp_grantdbaccess user GRANT exec ON xp_cmdshell TO user Podsumowując: Istnieją możliwości wykonania ataku, ale skonfigurowanie serwera zgodnie z zasadą minimalnych przywilejów radykalnie je zmniejsza 26

Multiple Statements Możliwość podania kolejnego zapytania po znaku specjalnym (zwykle ; ) Umożliwia wykonanie dowolnego polecenia, do którego użytkownik bazy danych ma uprawnienia Np. SELECT * FROM users WHERE user= test ; INSERT INTO users (user, pass) VALUES ( hacker, )-- Zwiększenie stopnia zagrożenia w przypadku istnienia podatności SQL Injection Jak ten mechanizm obsługiwany jest w MySQL oraz MS SQL? 27

Multiple statements MySQL Domyślnie mechanizm NIE JEST wspierany Bardzo dobre założenie! Włączenie obsługi: Dodatkowy parametr mysql_connect() $dbconn = mysql_connect( db, user, pass, FALSE, 65536); //CLIENT_MULTIPLE_STATEMENTS Uwaga! Z poziomu PHP otrzymamy wynik tylko pierwszego zapytania! Z punktu widzenia bezpieczeństwa nie powinniśmy używać tej opcji 28

Multiple statements MS SQL MS SQL umożliwia domyślnie wykonanie multiple statements Znakiem separatora jest średnik (;) Brak mechanizmu zabraniającego takiego zachowania Podobnie, jak w przypadku MySQL otrzymamy wynik tylko pierwszego zapytania Jedyną formą obrony jest filtrowanie danych i odpowiednia konstrukcja zapytań QUOTENAME 29

Wbudowany dostęp do plików MySQL Niebezpieczne możliwości SELECT LOAD_DATA( c:/boot.ini ) LOAD DATA INFILE ( c:/boot.ini ) INTO table Warunki powodzenia LOAD_DATA Plik na tej samej maszynie, co serwer MySQL Należy podać pełną ścieżkę do pliku Prawa do odczytu dla pliku i ścieżki Uprawnienie FILE dla użytkownika bazy danych Wielkość pliku mniejsza od max_allowed_packets Uwzględnia parametr secure_file_priv 30

Wbudowany dostęp do plików MySQL (2) Błędy w konfiguracji powodują zagrożenie wyciekiem informacji nawet przy braku multiple statements SELECT id, name FROM user where id = 2 UNION SELECT 1, LOAD_FILE( c:/boot.ini ); DrugiSELECT musi cechować się identyczną liczbą i rodzajem kolumn (można je wykryć metodą prób i błędów) LOAD_FILEnie zwróci tutaj więcej znaków niż szerokość odpowiadającej mu kolumny name (np. 30) należy zastosować wymaganą liczbę razy funkcję SUBSTRING: SELECT id, name FROM user where id = 2 UNION SELECT 1, SUBSTRING(LOAD_FILE( c:/boot.ini ), 30); 31

Dostęp do plików w MS SQL Wykorzystanie procedury xp_cmdshell Mechanizmy OLE Automation Wykorzystanie sp_oacreate, sp_oamethod Domyślnie wyłączone podobnie jak xp_cmdshell Konstrukcja OPENROWSET SELECT BulkColumn FROM OPENROWSET (BULK c:\boot.ini, SINGLE_CLOB) MyFile Wykorzystywane uprawnienia konta serwera SQL 32

Kilka uwag na temat bezpieczeństwa MS SQL Server 33

Przegląd cech bezpieczeństwa Różnice między SQL Server 2005 a 2008 (przykłady) Brak niektórych narzędzi lub znaczące zmiany w korzystaniu z nich Inne, np. usunięcie polecenia DBCC BYTES Nowe lub ulepszone mechanizmy bezpieczeństwa Extensible Key Management Transparent Data Encryption SQL Server Audit Zarządzanie oparte na zasadach (policies) 34

Ulepszenia w zakresie szyfrowania Extensible Key Management Możliwość rejestracji zewnętrznych urządzeń bezpieczeństwa (HSM) w SQL serwerze Dostępne są dodatkowe, zaawansowane funkcje (np. wygasanie klucza) Dostęp z poziomu poleceń T-SQL Transparent Data Encryption Realizacja szyfrowania i deszyfrowania plików danych i logu w czasie rzeczywistym (AES, 3DES) Brak konieczności jakichkolwiek zmian na poziomie aplikacji korzystającej z danych Zabezpieczenie także kopii zapasowych! 35

Uwierzytelnianie i logowanie Większe możliwości uwierzytelniania Kerberos Rozszerzenie na wszystkie protokoły komunikacyjne Zaawansowane usługi raportowania (Reporting Services) SQL Server Audit Poprawiona wydajność logowania informacji Bardzo duża granularność konfiguracji poziom serwera, bazy danych, rodzaju instrukcji (np. SELECT, INSERT) wydawanych przez poszczególnych użytkowników Zapis informacji do dziennika systemu (SQL Server musi mieć niezbędne uprawnienia), aplikacji lub do osobnego pliku Możliwość zatrzymania serwera w przypadku błędu 36

Policy-based Management Zasady stosowane na poziomie bazy, serwera lub grupy serwerów Możliwość definicji polityki i eksportu na wszystkie posiadane serwery Kolejność działania Tworzenie warunków odnoszących się do różnych aspektów (ang. facet) Tworzenie polityk grupujących różne warunki Ewaluacja i/lub stosowanie polityk w odniesieniu do serwera lub serwerów Narzędzie: SQL Server Management Studio Możliwość eksportu bieżącej konfiguracji jako polityki 37

Zmiany w zakresie narzędzi bezpieczeństwa W przeciwieństwie do SQL Server 2005, nie są już dostępne Surface Configuration Tool (SCT) oraz Best Practices Analyzer (BPA) Analogiczną funkcjonalność do SCT można uzyskać za pośrednictwem SQL Server Management Studio lub SQL Server Configuration Manager BPA - Microsoft uznał, że narzędzia, które jedynie wskazują problemy, ale ich nie naprawiają, nie są przydatne użytkownikom (?) Większość ustawień można zdefiniować na zasadzie zarządzania politykami 38

Tryb uwierzytelniania w MS SQL Server 2 tryby uwierzytelniania SQL (Mixed Mode) Windows (Trusted Mode) Mixed Mode Trusted Mode 39

Którą metodę wybrać? Mixed mode oferuje szersze możliwości Lepsza kompatybilność i interoperacyjność Umożliwia łączenie się użytkownikom o różnych tożsamościach(np. aplikacje webowe!) ale powoduje więcej problemów z bezpieczeństwem Dodatkowe uwierzytelnienia do zapamiętania Mniejsze możliwości wymuszenia polityki kontroli dostępu Konieczność każdorazowego uwierzytelniania Serwer musi gdzieś sprawdzać/przechowywać hasła O ile to możliwe, należy korzystać z uwierzytelniania zintegrowanego z systemem 40

Weryfikacja trybu uwierzytelniania Zapytanie EXEC xp_loginconfig login mode SSMS [SERVER_NAME] + RMB Properties Security Zwróćmy też uwagę na ustawienia logowania! 41

Przegląd błędów 42

Chociaż Bardzo ciekawy błąd SQL Server Cleartext Password Exposure Data ogłoszenia: 2 września 2009 (Sentrigo) Podatne wersje SQL Server 2000, 2005, 2008 Hasła użytkowników łączących się z serwerem są przechowywane w pamięci w formie niezaszyfrowanej Dotyczy SQL (Mixed) Authentication Mode Odczyt wymaga uprawnień lokalnego administratora W związku z powyższym producent nie uznał odkrycia za lukę bezpieczeństwa oraz odmówił przygotowania poprawki 43

Zachęcamy do eksperymentów Spróbuj sam obejrzeć hasło w pamięci! Dołączenie się do procesu SQL Server przy pomocy debuggera Przeglądanie zaalokowanej pamięci Po wydaniu polecenia CREATE LOGIN Po podłączeniu się użytkownika do serwera (za pomocą różnych interfejsów) Użycie narzędzia Sentrigo Passwordizer i ponowne przejrzenie pamięci Więcej: prezentacja dostępna na stronie MIC: http://mic.psnc.pl/download/mic_091119.pdf 44

Hasło w pamięci Ślad definicji hasła użytkownika Utworzono użytkownika: CREATE LOGIN supertajny WITH PASSWORD = 'Teg0NIKT_nie_zgadn1E:)' Wyczyszczono pamięć, po czym użytkownik supertajny połączył się z serwerem 45

Możliwe zagrożenia Administrator systemu i tak ma praktycznie pełną władzę nad kontami użytkowników SQL Servera Nie chodzi więc o to, że np. zobaczy ich dane Złośliwy administrator może jednak: Odczytać hasła (nie skróty!) użytkowników i próbować wykorzystać je w innych serwisach Podszyć się niepostrzeżenie pod użytkownika i wykonać niepożądane działania w jego imieniu Hasła w otwartej postaci nigdy nie powinny być ujawniane w pamięci (pliku) Gdyby tak było, obronilibyśmy się na tym polu także przed złośliwym administratorem 46

Próba naprawienia sytuacji Unikanie SQL Authentication Mode Zastosowanie narzędzia Sentrigo Passwordizer Do bezpłatnego pobrania ze strony producenta Wymaga wypełnienia krótkiego formularza rejestracyjnego Czyści pamięć alokowaną przez SQL Server (nie rozwiązuje problemu, tylko usuwa jego skutki) Jest możliwe, że spowoduje efekty uboczne! Musi być uruchamiane regularnie (mogą nadejść nowe połączenia ) Naprawdę złośliwy administrator systemu nie ma żadnego powodu, aby je zastosować 47

Ciekawostka: sytuacja gorsza w edycji 2005 W SQL Server 2005 (i wersjach wcześniejszych) nie był potrzebny administracyjny dostęp do systemu, wystarczyła możliwość zadawania zapytań Uzyskanie listy zaalokowanych obszarów pamięci SELECT * FROM sys.dm_os_virtual_address_dump Przeglądanie poszczególnych obszarów pamięci: DBCC TRACEON(3604) DBCC BYTES(adres, liczba bajtów) DBCC BYTES nie działa już w SQL Server 2008 48

Zasada minimalnych przywilejów Dobrze zaprojektowana konfiguracja domyślna, ale nadal można wykonać dodatkowy hardening Wybór nisko uprzywilejowanych kont dla usług SQL Servera podczas instalacji lub po niej Usługa Sieciowa, optymalnie dedykowane osobne konta dla usług Zastrzeżenie dostępu do wybranych procedur składowanych Zwłaszcza dla roli public Zmiana nazwy konta sa (domyślnie zablokowane) Zablokowanie dostępu konta guest do baz systemowych Rozważenie usunięcia wbudowanej domyślnie grupy BUILTIN\Administrators (wymaga analizy) Uaktywnienie weryfikacji polityki wygasania hasła 49

Procedury składowane ciekawostka (1) Możliwość enumeracji kont Windows z poziomu konta gościa przy pomocy procedury składowanej xp_revokelogin Uwaga: wbrew nazwie, nie jest to procedura rozszerzona ;) Testy przeprowadzono na domyślnej instalacji systemu Różne komunikaty błędów dla istniejących i nieistniejących nazw kont Podobna sytuacja występuje dla sp_revokelogin, ale już nie dla xp_grantlogin czy sp_grantlogin 50

Procedury składowane ciekawostka (2) 51

Sprawdzanie i zastrzeganie listy procedur Weryfikacja SELECT object_name(major_id) AS securable FROM sys.database_permissions WHERE grantee_principal_id = user_id('public') AND objectproperty(major_id, 'IsExtendedProc') = 1 ORDER BY securable lub IsProcedure dla procedur zwykłych Odebranie praw do procedur REVOKE EXECUTE ON xp_revokelogin TO public Zastosować np. dla xp_dirtree, xp_fileexist, xp_getnetname, xp_instance_regread, xp_regread Należy przeanalizować, czy funkcjonalność nie jest niezbędna! Np. zamiast xp_revokelogin może być DROP LOGIN 52

Podsumowanie bezpieczeństwa SQL Servera SQL Server 2008 to ogromny kombajn i nie jest łatwo ogarnąć wszystkie aspekty bezpieczeństwa Producent czyni wiele wysiłków: Coraz lepsza (dobrze chroniona) domyślna konfiguracja Nowe, zaawansowane mechanizmy ochrony Prawdopodobnie mało błędów bezpieczeństwa w kodzie Wsparcie ze strony innych elementów infrastruktury (jak system operacyjny) Nie zawsze można je wykorzystać ze względu na chęć zapewnienia interoperacyjności Dlatego nadal niezbędny jest nadzór i uważne przystosowanie konfiguracji do swych potrzeb 53

Bezpieczeństwo języka stron oraz kodu 54

Konfiguracja ASP.NET oraz PHP Nie będziemy bezpośrednio porównywać rozwiązań pod kątem bezpieczeństwa Są zbyt różne (np. PHP to tylko jeden język, ponadto ma otwarty kod łatwiej znaleźć błędy) Dokonamy przeglądu możliwych błędów bezpieczeństwa w kontekście konfiguracji języka 55

Konfiguracja ASP.NET Pliki tekstowe w formacie XML Edycja ręczna lub modyfikacja części opcji w IIS Manager Dla całego serwera machine.config + web.config (katalog %SystemRoot%\Microsoft.NET\Framework\%wersja%\CONFIG) Dla aplikacji webowej web.config(w katalogu głównym i/lub podkatalogach) Możliwe problemy Nieprawidłowy poziom zaufania CAS Często spotykane błędne ustawienia konfiguracji 56

Konfiguracja CAS (1) Aplikacji można przypisać 1 z 5 poziomów zaufania Full, High, Medium, Low, Minimal Konfiguracja: web.config, machine.config Możliwe jest także przygotowanie własnej definicji poziomu zaufania CAS działa jedynie dla kodu zarządzanego Kod zarządzany (.aspx) wykonywany pod kontrolą środowiska CLR (aspnet_wp.exe), kod niezarządzany (.asp) obsługiwany przez asp.dll ASP wymaga konwersji do ASP.NET Nie ma możliwości tworzenia zarządzanego kodu PHP 57

Konfiguracja CAS (2) Uprawnienia Code Access Security Full brak ograniczeń (z dokładnością do uprawnień konta, na którym działa aplikacja) High brak możliwości wykonania kodu niezarządzanego (unmanaged code) Medium dostęp jedynie do katalogu aplikacji Low blokada odwołań do innych środowisk (sieć, baza danych itd.) Minimal dostępne wyłącznie najprostsze operacje (np. obliczenia) Domyślnie aplikacje uruchamiane z poziomem Full Zły pomysł, szczególnie dla współdzielonego hostingu 58

Utwardzenie konfiguracji CAS Poziom Medium (jeśli nie jest potrzebny wyższy) Zabronienie nadpisania przez pliki podrzędne 59

Najpoważniejsze błędy konfiguracji ASP.NET Poniższe błędne praktyki dotyczyć mogą wszystkich aplikacji webowych opartych na ASP.NET Custom Errors Disabled Leaving Tracing Enabled Leaving Debugging Enabled Cookies Accessible Through Client-Side Script Cookieless Session State Enabled Więcej informacji: http://www.devx.com/dotnet/article/32493 60

Custom Errors Disabled Nieprawidłowa konfiguracja <configuration> <system.web> <customerrors mode="off"> Prawidłowa konfiguracja <configuration> <system.web> <customerrors mode="remoteonly"> Znaczenie: Wyłączenie trybu customerrors spowoduje, że zdalny użytkownik ujrzy szczegółowy opis błędu, także z fragmentami kodu Dla lokalnych żądań warto pozostawić tryb debugowy 61

Własne komunikaty o błędach To jeszcze nie jest sytuacja idealna Właściwe będzie przygotowanie własnych plików niezawierających informacji konfiguracyjnych, a np. przekazujących kontakt do administratora systemu lub helpdesku Odpowiednia sekcja pliku Web.config: <customerrors mode="remoteonly"> <error statuscode="404" redirect="errors/e404.htm"> <error statuscode= 500" redirect="errors/e500.htm"> </customerrors> 62

Leaving Tracing Enabled Nieprawidłowa konfiguracja <configuration> <system.web> <trace enabled="true" localonly="false"> Prawidłowa konfiguracja <configuration> <system.web> <trace enabled="false" localonly="true"> Znaczenie: Włączenie flagi powoduje, że zdalny użytkownik może uzyskać dostęp do dużej ilości wrażliwych danych, np. struktury poprzednich żądań do serwera, szczegółów jego konfiguracji, danych przesłanych w formularzach... 63

Leaving Debugging Enabled Nieprawidłowa konfiguracja <configuration> <system.web> <compilation debug="true"> Prawidłowa konfiguracja <configuration> <system.web> <compilation debug="false"> Znaczenie: Pozostawienie włączonej flagi debug umożliwia ujawnienie większej ilości informacji Ustawienie customerrors nie wystarczy (niektóre narzędzia deweloperskie ujawniają treść komunikatów błędów) 64

Cookies Accessible Through Client-Side Script Nieprawidłowa konfiguracja <configuration> <system.web> <httpcookies httponlycookies="false"> Prawidłowa konfiguracja <configuration> <system.web> Znaczenie: <httpcookies httponlycookies="true"> Ustawienie true spowoduje, że aktywna zawartość strony nie będzie mieć dostępu do cookies 65

Najpoważniejsze błędy konfiguracji ASP.NET Poniższe błędne praktyki dotyczą aplikacji webowych opartych na ASP.NET, w których wykorzystuje się uwierzytelnianie Windows Forms Cookieless Authentication Enabled Failure to Require SSL for Authentication Cookies Sliding Expiration Used Non-Unique Authentication Cookie Used Hardcoded Credentials Used Więcej informacji: http://www.devx.com/dotnet/article/32493 66

Wybrane aspekty konfiguracji PHP (1) Tekstowy plik konfiguracyjny php.ini Możliwość wpływania na konfigurację w runtime Polityka ujawniania informacji error_reporting = E_ALL & ~E_NOTICE expose_php = off display_errors = off log_errors = on error_log = c:\mylogs 67

Wybrane aspekty konfiguracji PHP (2) Limity memory_limit = 8M max_input_time = 60 max_execution_time= 120 Ograniczenie inwencji użytkownika file_uploads = off register_globals = off magic_quotes_gpc = off (!!!) allow_url_fopen = off disable_functions = passthru, exec,... 68

Lista niebezpiecznych funkcji (dla IIS) chmod exec get_cfg_var getenv ini_get ini_get_all ini_set mail passthru pcntl_exec phpuname popen proc_open send_mail shell_exec syslog system Dodatkowe funkcje dla serwera Apache, Uniksów, POSIX Jeśli powyższe funkcje nie są niezbędne, powinny być dopisane do php.ini w klauzuli disable_functions 69

Ciekawe narzędzia 70

Przykłady narzędzi bezpieczeństwa MS Web Application Configuration Analyzer Konfiguracja Windows, IIS, MS SQL Server ASP.NET Configuration Analyzer Konfiguracja ASP.NET MS Source Code Analyzer for SQL Injection Kod ASP PHPSecInfo RIPS Konfiguracja PHP Kod PHP 71

Przydatne narzędzia MS WACA Microsoft Web Application Configuration Analyzer Wersja 2.0 najnowsza aktualizacja z maja 2011 Wymagania: Microsoft.NET 4.0 Pobieramy instalator.msi spod adresu: http://www.microsoft.com/download/en/details.aspx?id=573 159 reguł testujących Ustawienia ogólne (głównie systemu operacyjnego) 62 Ustawienia serwera Microsoft IIS 75 Ustawienia serwera MS SQL 22 Uwaga! Jeżeli nazwa instancji SQL Servera nie jest domyślna, należy ją bezpośrednio podać jako FQDN (np. KOMPUTER\SQLEXPRESS) 72

73

Charakterystyka narzędzia Prosty interfejs Możliwość skanowania zdalnego komputera po podaniu FQDN (i zapewnieniu dostępu) Wiele użytecznych informacji oraz wyjaśnień z dziedziny zabezpieczeń Możliwość eksportu wyników Do arkusza MS Excel Współpraca z MS Team Foundation Server Wraz z instalatorem dostarczany przydatny poradnik WACA User Guide 74

75

76

Wyniki Microsoft WACA Zwróćmy uwagę na szczegółowość oraz podanie sposobu sprawdzenia wyników 77

Eksport do MS Excel 78

ASP.NET Security Analyzer (ANSA) Autor: Dinis Cruz, OWASP http://www.owasp.org/index.php/ansa Wersja 0.31 (dawno nie rozwijana, ale wskazuje najważniejsze podatności) Narzędzie uruchamiamy z katalogu wewnątrz witryny http://127.0.0.1/ansa_v0_31b/default.aspx Uruchomienie na witrynie skojarzonej z niestandardowym portem może generować błędy 79

80

MS Source Code Analyzer for SQL Injection Narzędzie do statycznej analizy kodu ułatwiające wykrycie podatności SQL Injection w kodzie ASP Wersja 1.3 (listopad 2008) Działa tylko dla kodu w języku VBScript Mogą występować pewne błędy analizy (w międzyczasie powstał nowy parser) Narzędzie linii komend Przykład użycia: msscasi_asp /input="c:\source\logon.asp /output= o.xml Więcej informacji: http://support.microsoft.com/kb/954476 81

82

PHPSecInfo Projekt PHP Security Consortium Najnowsza wersja: 0.2.1, kwiecień 2007 http://phpsec.org/projects/phpsecinfo Narzędzie napisane w PHP ;) Prosta analiza konfiguracji środowiska PHP Wgrywamy np. pod http://127.0.0.1/phpsecinfo Narzędzie uruchamia kilkanaście prostych testów (nie wszystkie testy działają w środowisku Windows) Przyjazny interfejs Obszerne objaśnienia 83

84

85

RIPS Skaner kodu źródłowego PHP Najnowsza wersja: 0.40 (czerwiec 2011) http://rips-scanner.sourceforge.net Napisany również w PHP Częściowe wsparcie dla kodu obiektowego Wykrywa między innymi podatności: XSS SQL Injection Local/Remote File Inclusion Remote Code Execution LDAP/XPath Injection 86

87

RIPS dalsze informacje Projekt aktywnie rozwijany Bardzo ciekawe możliwości konfiguracyjne Różne poziomy dokładności (i prędkości) skanowania Zaawansowane informacje w plikach w podkatalogu config Interesująca funkcjonalność Możliwość generowania exploitów dla CURL-a Użyteczne narzędzia, np. grep + wyrażenia regularne Konfigurowanie wyglądu wyników Uwaga jeśli serwer WWW hostujący RIPS-a nie ma włączonej obsługi PHP short tags (<??>), narzędzie nie przeskanuje skryptów PHP tak oznaczonych 88

Podsumowanie 89

Najważniejsze przesłanie Podczas prezentacji przedstawiliśmy wybrane aspekty bezpieczeństwa alternatywnych składników mieszanej platformy hostingowej Elementy porównań Dodatkowe aspekty bezpieczeństwa rozwiązań Microsoftu Poznaliśmy kilka użytecznych darmowych narzędzi, działających w środowisku Windows na różnych poziomach Ani stosowanie bezpieczniejszych rozwiązań, ani korzystanie z narzędzi nie uchroni nas przed tworzeniem odpornego kodu! 90

Pytania, dyskusja Dziękujemy za uwagę! 91