Podíváme se na zoubek stavbě webu, probereme blíže každou jeho část. Navíc si u každé komponenty ukážeme její největší slabiny a nedostatky...
Základní model sítě
Nejprve si povíme něco o tom, jak ten systém vlastně schématicky vypadá.
Tak tohle je přibližné schéma standardní aplikace. Jak vidíte, komunikace mezi dvěma servery musí projít sítí pomocí protokolů Ethernet nebo TCP/IP, dále pak systémem, jenž složí pakety dohromady a poté musí projít vrstvou takzvaných služeb, ve kterých se nacházejí servery. Přes takzvanou aplikační logiku (vysvětlíme) se dostáváme k vytouženým datům. Přitom každé místo na tomto schématu skrývá nedostatky a tím dává možnost k útoku. Nyní si probereme všechny komponenty této stavby. Dostáváme se k předmětu tohoto seriálu.
Klient neboli webový prohlížeč a jeho imitace
Jak jsme již poznamenali, do jazyka HTML, jenž je sám o sobě statický, je možno přidávat nejrůznější nadstavby a vylepšení, které jazyk zdynamizují, aby vyhovoval dnešní poptávce. Pro příklad uvedeme aktivní obsah ActiveX od Microsoftu nebo Java od firmy Sun Microsystems.
Když se prvek ActiveX zobrazuje v prohlížeči, je ovladač pro jeho zobrazení buď stažen ze serveru, jenž prvek prezentuje, nebo je přímo v našem počítači. To je velmi pravděpodobné, protože se sám instaluje při zavádění Windows nebo jiných aplikací. Poté se pomocí technologie Authenticode zkontroluje jeho samotná pravost pomocí zprávy o původu prvku a uživateli se nabízí možnost prvek přijmout či nikoli. Pokud uživatel považuje zdroj za důvěryhodný, skript se zobrazí.
Webový prohlížeč je velká zbraň hackerů. Je schopen komunikovat nejen pomocí HTTP, ale poradí si i s již zmíněným SSL nebo FTP. V této publikaci nahradíme váš prohlížeč (tj. MS Internet Explorer, Mozilla Firefox, Opera atd.) nástroji, jež provádějí jednoduché požadavky pomocí HTTP, a v nichž tyto požadavky sami definujete a sami vyhodnotíte odpověď serveru. Máte tak možnost zobrazení výsledků ještě před jejich případnou úpravou vaším prohlížečem, který se snaží případné nedostatky skrýt a maskovat. Tyto primitivní nástroje, jež pracují většinou pouze v příkazovém řádku, se dají posoudit jako imitace prohlížeče.
Server
Je to služba HTTP, která přijímá požadavky klientů, odevzdává je aplikaci, ta vrátí odpověď a server ji vrací klientovi. Servery mohou být IIS (Internet Information Server) od Microsoftu, Apache od ASF (Apache Software Foundation), iPlanet od Sun Microsystems nebo například NES (Netscape Enterprise Server) od AOL (America OnLine) & Netscape.
Aplikace
Aplikace se běžně skládá ze tří základních vrstev: prezentační, logická a datová.
Prezenční vrstva zaznamenává vstup uživatele a ukazuje mu výsledky.
Logická vrstva přebírá hodnoty zadané do prezentační vrstvy a dále je zpracovává. Pošle dotazy do "skladu" dat jménem datová vrstva. Logická vrstva je opět předá prezentační vrstvě pro zobrazení klientovi.
Nyní si představte, že na vašem webu je například telefonní seznam reprezentovaný formulářem, do nějž zapíšete vstupní data. Logickou vrstvu zde představuje spustitelný program, který vaše údaje zkontroluje (zda neobsahují nepovolené znaky) a použije konektor pro připojení k datové vrstvě. Pak zadá dotaz pomocí vstupního řetězce. Datová vrstva obsahuje názvy všech souborů uložených na disku. Databáze vrátí seznam vyhovujících záznamů logické vrstvě a ta jej po odstranění přebytečných dat vrátí prezentační vrstvě. Existují v tomto systému však i výjimky. Například technologie ASP (Active Server Pages) umožňuje vkládat serverovou logiku do webových stránek v prezentační vrstvě. Zde jsou vypsány některé technologie používané pro tvorbu webové logiky:
ASP, ASP.NET, ISAPI, COM (Common Object Model), JavaScript od Microsoftu, Java 2 Enterprise Edition (J2EE) od Sun Microsystems, PHP (Hypertext PreProcessor) a Jakarta (=serverová Java) od Apache Software Foundation. Společné těmto technologiím je to, že pracují více jako "nativní" formy, než jako statické stránky jako např. HTML.
Takto vypadá například požadavek na skript PHP:
http://www.nejaka-domena.cz/neco.php?id=43&format=html
V tomto příkladu je soubor neco.php spustitelným souborem. Znaky dále za otazníkem jsou dodatečné argumenty. Tohle je veliká výzva pro hackery, protože tento fakt dává vzdáleným uživatelům zadávat na serveru kód s uživatelsky definovaným vstupem.
Databáze
Datové vrstvě se jinak říká také "back end". Dodavateli jsou SQL a Oracle. Tato vrstva je s logikou spojena datovými konektory, např. ODBC (Open DataBase Connectivity).
Servery proxy
Cílem a důvodem jejich zavedení je snaha o zprostředkování společné brány všem uživatelům, kteří se k Internetu chtějí připojit. Tento mechanizmus umožňuje, aby byl internetový obsah ukládán do jakési mezipaměti, tím pádem zvýšit rychlost a šetřit šířku pásma. Z hlediska hackerů jsou tito dnes již velmi hojně využívaní prostředníci ale nevítaným problémem. Průchodem přes server proxy se totiž naruší IP adresa uživatele a za zdrojovou se považuje adresa serveru proxy, přes níž požadavek prošel. Na tomto principu také fungují anonymizéry. Na stránce s anonymizérem zadáte požadovanou internetovou adresu a vaše připojení běží přes server proxy, tzn. na oné stránce se zobrazí IP anonymizéru. Pozor tedy na zobrazované IP, jsou velmi zavádějící. Dva požadavky od stejné IP neznamenají ještě stejného klienta.
Zařízení pro vyrovnávání zátěže
Algoritmy pro vyrovnávání zátěže se dají opět rozdělit na statické, u nichž jsou požadavky zpracovávány předem daným způsobem, a dymnamické, které předávají požadavky klientů serverům s přídavnými informacemi, jako je minimum požadavků nebo nejrychlejší spojení. Nejznámějšími typy jsou CLD (Cisco Local Director), NLB (Network Load Balancing) nebo Big-IP od společnosti F5.
Postup vypadá následovně: Váš požadavek je vyrovnávacím zařízením doručen všem serverům. Podle vnitřního algoritmu však odpoví pouze jeden server. Zbytek požadavků je pak směrován na něj, dle vnitřního algoritmu pro vyrovnávání zátěže. Vyrovnávací zátěže dělají hackerům také značné problémy. Scanování portů zde přináší klamné výsledky.
Webové služby
Jsou to jakési samostatné modulární webové aplikace. Jsou založeny na webovách standartech WSDL (Web Service Definition Language), XML formátu pro popis síťových služeb. Dále na specifikaci UDDI (Universal Description, Discovery and Integration), na sadě protokolů XML a infrastruktuře pro popis síťových služeb. Dále je zde SOAP (Simple Object Access Protocol), jenž zajišťuje komunikaci mezi síťovými službami.
Souhrn slabin jednotlivých částí struktury
Klient: Spouštění aktivního obsahu, zneužití chyb klientského softwaru, chyby umožňující cross-site scripting.
Přenos: Odposlech komunikace klient-server, přesměrování SSL.
Server: Slabá místa jednotlivých softwarů webových serverů (budeme probírat později).
Aplikace: Útoky na ověřování, autorizaci, strukturu webu, validaci vstupních údajů a aplikační logiku.
Databáze: Spouštění požadovaných příkazů prostřednictvím databázových dotazů. Manipulace s daty tak, aby byla vrácena citlivá data.