IIS Bezpieczny hosting BłaŜej Miga Gerard Frankowski Zespół Bezpieczeństwa PCSS IT Underground Warszawa, 7-9.11.2007 1
Agenda Kim jesteśmy PCSS + Zespół Bezpieczeństwa Przedstawienie Microsoft IIS Historia Funkcjonalność Hacking IIS Web Server Pytania i dyskusja 2
PCSS Poznańskie Centrum SuperkomputerowoSieciowe Operator sieci PIONIER oraz POZMAN Uczestnik projektów naukowo-badawczych Główne obszary zainteresowań: Gridy, sieci nowej generacji, portale Bezpieczeństwo sieci i systemów http://www.man.poznan.pl 3
Zespół Bezpieczeństwa PCSS Dedykowany zespół istnieje od 1996r. Podstawowy zakres prac Zespołu Zabezpieczanie infrastruktury PCSS Zadania bezpieczeństwa w projektach naukowo badawczych Szkolenia, transfer wiedzy Badania własne Audyty i doradztwo w zakresie bezpieczeństwa IT Najciekawsze badania z ostatnich lat Bezpieczeństwo Instant Messengers (2004-05) Badania sieci bezprzewodowych na terenie Poznania (2005) Raport o bezpieczeństwie bankowości elektronicznej (2006) Bezpieczeństwo serwerów WWW Apache i MS IIS (2006, 2007) http://security.psnc.pl 4
Microsoft IIS Internet Information Server / Services Historia wersji IIS 1.0 (Windows NT 3.51) IIS 2.0 (Windows NT 4.0) IIS 3.0 (Windows NT 4.0 SP 3) IIS 4.0 (Windows NT 4.0 Option Pack) IIS 5.0 (Windows 2000) IIS 5.1 (Windows XP Pro) IIS 6.0 (Windows Server 2003, Windows XP Pro 64-bit.) IIS 7.0 (Windows Vista, Windows Server 2008) http://www.microsoft.com/iis 5
Błędy bezpieczeństwa Za: http://secunia.com, okres 2003-2007 IIS 4.0 IIS 5.0 IIS 6.0 Apache: 6 advisories, 3 x highly critical Wszystkie błędy poprawione 14 advisories, 1 x extremely critical, 5 x highly critical Marzec 2003: przepełnienie bufora w komponencie WebDAV 1 błąd niezałatany (not critical) 3 advisories, 2 x moderately critical Wszystkie błędy poprawione 1.3.x 20 advisories, 5 błędów niezałatanych (not critical) 2.0.x 35 advisories, 3 błędy niezałatane (less critical) 2.2.x 5 advisories, 1 błąd niezałatany (less critical) 6
Microsoft IIS 7.0 http://toolbar.netcraft.com/site_report?url=http://www.mic rosoft.com 7
Popularność Grafika: http://news.netcraft.com 8
IIS 7.0 9
Bezpieczny hosting Poufność Zapewnienie poufności kodów źródłowych skryptów klienta Ograniczenie dostępu do danych konfiguracyjnych serwera, serwisów Dostępność Działanie aplikacji 24x7x365 Minimalizacja czasu odtworzenia środowiska Integralność danych Zabezpieczenie aplikacji i danych przed modyfikacjami osób trzecich 10
Komponenty serwera IIS 5.1 DLLHost ISAPI Extensions ASPNETWP ASP.NET Apps INETINFO.EXE Metabase WinSock 2.0 user AFD.SYS kernel TCP/IP 11
Komponenty serwera IIS 7.0 W3SVC WAS Worker Process w3wp.exe ASP.NET Web App user HTTP.SYS kernel TCP/IP 12
W3SVC, WAS W3svc konfiguracja serwisów Aktualizacja ustawień drivera http.sys WAS Zarządca procesów Tworzy worker procesy (w3wp.exe) 13
http.sys Driver kernel-mode komponent Sterownik protokołu HTTP Obsługuje połączenia https Cache'owanie odpowiedzi w pamięci jądra dla statycznych plików! Limitowanie ruchu Sprawdzenie poprawności Ŝądań 14
http.sys MoŜliwości konfiguracyjne netsh http... httpcfg HKLM\SYSTEM\CurrentControlSet\Services\HTT P\Parameters Strony z informacją o pojawiających się błędach wkompilowane w http.sys Log \systemroot\system32\logfiles 15
http.sys Windows XP Windows 2003 Windows Vista Rozmiar 263 040 291 328 385 536 Wersja 5.1.2600.2180 (xpsp_sp2_rtm) 5.2.3790.3959 (srv03_sp2_rtm) 6.0.600.16386 (vista_rtm) Obiekty \device\http\control \device\http\filter \device\http\apppool \device\http\control \device\http\filter \device\http\apppo ol \device\http\communication \device\http\reqqueue 16
Httpapi.dll Biblioteka z funkcjami do tworzenia własnych serwerów HTTP Dwie wersje HTTP API: 1.0, 2.0 1.0: Windows XP, Windows 2003, Vista 2.0: Windows Vista, 2008 Stworzenie serwera wymaga interwencji Administratora! 17
namespace ConsoleApplication1{ class Program { static void Main(string[] args) { HttpListener hl = new HttpListener(); hl.prefixes.add("http://localhost/test/"); hl.start(); HttpListenerContext hlc = hl.getcontext(); byte[] buffer = UTF8.GetBytes("<html><body>hello world</body></html>"); hlc.response.outputstream.write(buffer,0,bu ffer.length); hlc.response.outputstream.close(); hl.stop(); } }} 18
Vista - zagroŝenia Netsh http show urlacl Reserved URL : http://+:80/wsman/ User: NT AUTHORITY\NETWORK SERVICE Listen: Yes Delegate: Yes SDDL: D:(A;;GA;;;NS) Reserved URL : http://+:80/temporary_listen_addresses/ User: \Everyone Listen: Yes Delegate: No SDDL: D:(A;;GX;;;WD) Proces uŝytkownika NS moŝe podczepić swój serwer http pod url http://dowolna_domena/wsman/!!!! 19
Vista - zagroŝenia Przykład http://test.com/wsman/ http://hackme.test.com/test/ http://test.com/wsman/ 20
IIS 7.0 - Moduły Przeszło 40 modułów Biblioteka DLL Pogrupowane Http modules Security modules Content modules Compression modules Caching modules Logging and Diagnostics modules 21
IIS http pipeline 22
IIS - konfiguracja Konfiguracja serwera i serwisów umieszczona jest w plikach XML Narzędzia konfiguracyjne: IIS Manager WMI Tworzenie własnych modułów klasa System.Web... vi webconfig.xml 23
Application Domain Elementłączący ASP.NET i IIS Główne zadanie zapewnienie izolacji między aplikacjami MoŜliwości konfiguracyjne: Wybór środowiska.net Limity przydziału procesora Limity przydziału pamięci Wybór uŝytkownika, z uprawnieniami którego aplikacje będą uruchamiane Konfiguracja.NET Trust Levels (Code Access Security) 24
CAS High No unmanaged code. No enterprise services. Can access SQL Server and other OLE DB data sources. Very limited reflection permissions. No ability to invoke code by using reflection. A broad set of other framework features are available. Applications have full access to the file system, and to sockets. Medium Permissions are limited to what the application can access within the directory structure of the application. No file access is permitted outside of the application's virtual directory hierarchy. Can access SQL Server. Can send e-mail by using SMTP servers. Limited rights to certain common environment variables. No reflection permissions whatsoever. No sockets permission. To access Web resources, you must explicitly add endpoint "URLs" either in the originurl attribute of the <trust> element or inside the policy file. Low Intended to model the concept of a read-only application with no network connectivity. Minimal Read only access for file I/O within the application's virtual directory structure. Execute only. No ability to change the "IPrincipal" on a thread or on the "HttpContext". 25
CAS - Permissions 26
Uruchamianie dynamicznych stron - http.sys Ustalenie, czy content znajduje się w pamięci cache Ustalenie odpowiedniego Application Pool W przypadku braku odpowiedniego worker procesu Ŝądanie do WAS o stworzenie nowego w3wp.exe 27
Uruchamianie dynamicznych stron - WAS W przypadku braku odpowiedniego w3wp.exe, uruchomienie nowego Proces WP zostaje uruchomiony z odpowiednim identity Komunikacja z WP poprzez named pipe (\\.\pipe\iis...) 28
Uruchamianie dynamicznych stron - w3wp.exe Sprawdzenie, czy istnieje skompilowana wersja Kompilacja kodu csc.exe... cvtres.exe... Pliki wynikowe umieszczane są w katalogu %SYSTEM%\Microsoft.NET\Framework \ver\temporary ASP.NET Files\ 29
ZagroŜenia Zabawy ze zdalnymi serwerkami 30
Wyszukiwanie IIS Google: inurl:aspx Brak wraŝliwości na wielkość znaków w URL: default.aspx DeFAUlt.aspx %00 w URL :default.aspx?a=%00 URL 503 : http://../wsman/ http://../temporary_listen_addresses 31
Trace.axd http://.../trace.axd 32
Włączone raportowanie błędów 33
ZagroŜenia Zabawy z kontem lokalnym 34
ZagroŜenia 1 DoS Maksymalne wykorzystanie zasobów dyskowych Do kompilowania plików aspx kompilator musi mieć uprawnienia tworzenia plików w katalogu %SYSTEMROOT%\Microsoft.NET\Framework\ver\Tempor ary ASP.NET Files\... Katalog ten wykorzystywany jest do zapisywania skompilowanych skryptów Program uŝytkownika zapisuje nieskończenie wiele danych do losowych plików w tym katalogu Odmiana dla złośliwców wyszukanie w rejestrze w gałęziach HKLM kluczy, do których mamy prawo zapisu tworzenie nowych podkluczy. Zjadanie miejsca na dysku przez bazy rejestru. Omijanie quota! 35
ZagroŜenia 2 DoS wykorzystanie zasobów pamięci Uruchomienie nieskończonej ilości procesów-dzieci Tworzenie nieskończenie wielkich tablic w wykonywanych skryptach ASP.NET 36
ZagroŜenia 3 Umieszczenie serwera na listach spamerów Wysyłanie nieautoryzowanego mailingu z serwera.net System.Net.Mail System.Net.Sockets Własne programy wykorzystujące połączenia TCP do wysyłania danych 37
ZagroŜenia 4 Utrata poufności danych umieszczonych na serwerze WMI System.Management Informacje ośrodowisku, uruchomionych procesach System.Diagnostics.Process System.Environment Własne programy Odczyt rejestru Przeszukiwanie filesystemu serwera 38
Przykład Asp.Net Security Analyser Dinis Cruz www.ddplus.net http://ansa.test.com/ansa_v0_31b 39
Ochrona Stosowanie osobnych Application Domain dla róŝnych domen Minimalizacja uprawnień uŝytkownika (Trust Level) Stosowanie limitów przydziału pamięci i procesora Ustawienie odpowiedniej quoty Weryfikacja uprawnień do kluczy rejestrów i NTFS 40
Informacje kontaktowe BłaŜej Miga bla@man.poznan.pl Gerard Frankowski gerard@man.poznan.pl Zespół Bezpieczeństwa PCSS WWW: http://security.psnc.pl E-mail: security@man.poznan.pl 41
Dyskusja Dziękujemy za uwagę! 42