Penetrační testy webových aplikací

​​Penetrační testy webových aplika​cí​

Během bezpečnostních testů webových aplikací jsou naše úkony zaměřené především na manu- ální činnosti podpořené výstupy z automatizova- ných nástrojů.

 
 

Náš příběh​ 

Jeden z našich významných klientů nás požádal o penetrační testy webové aplikace, která byla nasazena již v produkčním prostředí, a tedy dostupná z internetu. Aplikaci navíc nevyvíjel klient, ale externí dodavatel. Byl zde kladen velký důraz na provedení testů v co nejkratším možném čase a zároveň aby ​​nebyla ohrožena dostupnost či integrita dat – vzhledem k externímu dodavateli bylo zvýšené riziko v případném zdržení při obnově aplikace/dat. 
Při penetračních testech jsme objevili celou řadu velmi závažných zranitelností. Autentizovaný běžný uživatel mohl obejít autorizační schémata a v rámci aplikace eskalovat svá privilegia na úroveň administrátora, jinými slovy, obyčejný uživatel byl schopen kompletně převzít kontrolu nad celou aplikací a libovolně ji spravovat, provádět modifikace či útočit na další uživatele aplikace. 
Popsaná zranitelnost nebyla ta nejzávažnější, která se v aplikaci vyskytovala. Funkcionalita pro nahrávání obrázků umožňovala, zcela jednoduchým způsobem, obejít nastavené restrikce, a nahrát prakticky libovolný soubor. php soubor (skriptovací jazyk, ve kterém je aplikace implementována) a pomocí něj spouštět systémové příkazy na daném aplikačním serveru. Tento nahraný soubor byl navíc volně dostupný i pro neautentizovaného uživatele (tedy zcela veřejně). 
Popsaným způsobem jsme byli schopni plně kompromitovat aplikační server. Další velmi kritická zranitelnost byla nalezena v neautentizované části aplikace, opět volně dostupná z internetu. Pole pro vyhledávání adekvátně neošetřovalo uživatelské vstupy, díky čemuž bylo možné převolávat přímo dotazy v databázi, tedy jednak získat neautorizovaný přístup ke všem datům, ale také zcela kompromitovat databázový server. Popsané zranitelnosti ve vysoké míře ohrožovaly dobrou pověst společnosti včetně možných finančních dopadů při dalším zneužití klientských dat. Navíc, vzhledem k faktu, že je aplikace veřejně dostupná, mohl zmíněné útoky provést (většinu z nich) prakticky jakýkoli návštěvník webové aplikace.​

Popis řešení

Při testování aplikací je naším cílem odhalit zranitelnosti, které mohou narušit jejich důvěrnost, integritu či dostupnost. V rámci aplikační bezpečnosti se věnujeme nejen běžně se vyskytujícím útokům zneužívajícím typickou zranitelnost a obranu vůči nim, ale také nejnovějším trendům v oblasti bezpečného vývoje – od návrhu přes architekturu až po samotné nasazení a správu. ​

Penetrační testy a skeny zranitelností​

Námi prováděné testy jsou zaměřeny, mimo jiné, na identifikaci bezpečnostních slabin, které se mohou vyskytovat v rámci konfigurace, během procesů zpracování dat či nesprávnou implementací. Součástí je také prověření bezpečnosti všech funkcionalit, autentizačních a autorizačních mechanismů, business logiky, způsobu zacházení s citlivými informacemi a dalších oblastí.​

Penetrační testy zahrnují především následující kroky:​

  • sběr dostupných informací,
  • kontrolu nastavení bezpečné komunikace (např. pomocí HTTPS, SSL),
  • prověření bezpečnosti kritických datových toků,
  • únik citlivých informací,
  • možnost zneužití aplikace neautorizovaným způsobem a pokus o ovládnutí účtu legitimního uživatele,
  • kontrolu vstupů zadaných uživatelem,
  • bezpečnost technologií, na kterých jsou systémy postaveny (operační systémy, webové, aplikační a databázové servery) a jejich bezpečná integrace do zbývající infrastruktury,
  • možnosti zneužití dostupných technologií v aplikaci útočníkem a vykonatelné útoky na účty/relace legitimních klientů,
  • nedestruktivní exploitace obecně známých/nalezených zranitelností a další.​​

Podrobný popis

Při realizaci penetračních testů vycházíme především z aktuální metodiky OWASP Testing Guide, přičemž využíváme níže uvedených technik.​

Information Gathering​ 

  • fáze zaměřená na sběr co největšího množství informací,
  • využití volně dostupných nástrojů (vyhledávače, skenery, snadné odesílání HTTP otázek, nebo speciálně upravené žádosti),
  • vyzrazení informací například ve formě chybových hlášení nebo oznámení verzí a používaných technologií.

Configuration and Deploy Management Testing 

  • analýza infrastruktury a architektury topologie,
  • průzkum technických informací jako zdrojový kód, povolené HTTP metody, administrační funkcionalita, autentizační metody a informace o konfiguraci infrastruktury.

Identity Management Testing 

  • ověření mechanismu pro správu uživatelů a jejich rolí,
  • testování parametrů, identifikace bezpečnostních nedostatků, chyby zabezpečení vedoucí k přímé kompromitaci uživatelských účtů.​

Authentication Testing 

  • analýza funkčnosti autentizačního procesu a pokusy o jeho obejití​

Authorization Testing 

  • zjišťování možností obejití autorizačních pravidel a nastavení práv uživatelů, hledání cesty k eskalaci přidělených privilegií.
  • hledání cesty k eskalaci přidělených privilegií.​

Session Management Testing 

  • analýza možnosti odcizení autentizované session uživatele, zjišťování možností a provedení útoků typu Man-in-the-Middle a obdobných.

Data Validation Testing 

  • jedna z nejdůležitějších částí penetračního testování – zde je zkoumána odolnost aplikace vůči útokům typu SQL/Code Injection, Cross-Site Scripting, Local File Inclusion a dalším.​

​Error Handling Testing 

  • test úniku citlivých informací z často velmi detailních chybových hlášek, generování nestandardních vstupů jak do velikosti, tak obsahu. ​

Cryptography Testing 

  • ověření, zda aplikace akceptuje zastaralé, nefunkční, nebo pro daný účel zcela nevhodné (žádné) kryptografické mechanismy.​

Business Logic Testing 

  • zkoumání všech workflow funkcionalit a hledání možnosti jejich zneužití k provedení aktivit, které nejsou v souladu s možnostmi použití v dané aplikaci.​

Client Side Testing 

  • ověření, jaké účinné mechanismy aplikace používá k ochraně uživatelů před specializovanými útoky, které směřují přímo na uživatele a jeho prohlížeč, 
  • testování různých druhů injekcí klientských skriptovacích jazyků a manipulace s parametry spravovanými prohlížečem. ​

Proč zvolit AEC?​​

  • ​Patříme mezi zavedené české security firmy, na trhu úspěšně působíme již déle než 30 let. 
  • Máme více než 15 let zkušeností na poli bezpečnosti desktopových aplikací. 
  • Náš tým tvoří specialisté se zkušenostmi ze stovek dílčích projektů. 
  • Jsme držiteli certifikací eMAPT, CISSP, OSCP, OSCE, CEH a celé řady dalších. 
  • Provozujeme vlastní hackerskou laboratoř na výzkum v řadě oblastí, zabývajících se bezpečností různých řešení. 
  • Nasloucháme klientům a přizpůsobujeme testy jejich potřebám a časovým možnostem. 
  • Sledujeme moderní trendy v oblasti bezpečnosti desktopových aplikací. 
  • Při testování klademe důraz na manuální přístup, který vede k odhalení většího množství chyb zejména v business logice aplikací oproti automatizovaným nástrojům.
​​

Reference

  • I​NG Bank N.V. 
  • MONETA Money Bank, a.s.
  • Komerční banka, a.s. 
  • ŠKODA AUTO a.s. 
  • Česká národní banka 
  • SAZKA, a.s. 
  • T-Mobile Czech Republic a.s. 
  • Raiffeisenbank a.s. 
  • Home Credit a.s. 
  • KBC Group N.V. 
  • AXA Česká republika s.r.o.​

Rádi zkonzultujeme vaši konkrétní situaci


Ověření: 

​​