PTWA: Identifikace webové aplikace

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: .cCuMiNn.
Datum: 22.7.2016
Hodnocení/Hlasovalo: 1.13/8

Tento text je součástí on-line testovací příručky, která pro vás na tomto serveru vzniká. Budeme rádi za vaše připomínky v komentářích a za vaši aktivní účast v doprovodných projektech.

Po té, co jste správně identifikovali operační systém, webový server, framework a programovací jazyk, zbývá se zaměřit na samotnou webovou aplikaci. Ta může být buď proprietární, volně šiřitelná, nebo komerční. V případě, že se jedná o proprietární řešení, pak bude identifikace webové aplikace postrádat smysl a měli byste se zaměřit spíše na hledání autora této aplikace. Naopak, pokud se jedná o některou z volně dostupných či komerčních aplikací (například CMS, blogovací systém, e-shop, fórum, informační systém a podobně), bude správné určení toho, o jakou aplikaci se jedná, hrát velmi důležitou roli. V tomto případě byste se měli zaměřit na zjištění všech možných informací o nasazené verzi a implementovaných modulech nebo rozšířeních. Je totiž pravděpodobné, že někdo před Vámi již v této aplikaci nebo v jejích rozšířeních nějaké chyby objevil a informace o nich je možné dohledat na internetu. Pojďme se tedy v této kapitole podívat na způsoby, které Vám pomohou webovou aplikaci správně určit.

Zjištění autora aplikace

Zjištění autora aplikace je vhodné především ve chvíli, kdy se jedná o proprietární aplikaci. Pokud se Vám podaří zjistit, kdo testovanou aplikaci naprogramoval, můžete se na tohoto autora například obrátit se žádostí o poskytnutí přístupu nebo zdrojových kódů demoverze některého jeho jiného produktu. Díky tomu budete mít možnost prozkoumat práci tohoto autora. Z poskytnutých zdrojových kódů se dozvíte způsob, jakým tento autor píše své kódy, nebo zda se v některých oblastech často dopouští chyb. Z případného přístupu do demoverze (ač odlišného produktu stejného autora) se dozvíte například to, jak tento autor řeší administraci aplikace, kde je do ní přístup a jak je chráněn, případně jaké jsou defaultní přístupové údaje. Je běžné, že jeden autor používá svůj kód opakovaně ve všech svých aplikacích, používá stejných postupů a dopouští se stejných chyb.

Mimo to můžete zkusit také sociotechnický útok, kdy se budete vydávat za provozovatele testované aplikace a pokusíte se od jejího autora získat nějaké ty zajímavé informace. Například sdělíte, že jste ve firmě nahradili bývalého pracovníka, který měl správu webové aplikace na starosti, a ten Vám k ní nenechal žádnou dokumentaci. Určitě Vám přijde vhod, pokud Vám tvůrce aplikace pošle její kopii.

Ač by se mohlo zdát, že zjistit autora aplikace bude nelehký úkol, opak je pravdou. Vývojáři jsou na svou práci často hrdí a své jméno, nebo firmu proto uvádějí v zápatí stránek, nebo v jejich HTML kódu v podobě meta hlavičky Author, případně v podobě komentářů.


  
  
  
  
  

Zápatí webové stránky prozrazující autora

Doporučuji Vám také prozkoumat zdrojové kódy načítaných javascriptových souborů nebo CSS. Jejich autoři totiž také často v jejich záhlaví uvádí komentáře se svým jménem. Samozřejmě ale musíte brát jména z těchto zdrojů s rezervou, neboť se může jednat o obsah převzatý například z veřejně dostupných zdrojů.

/*
  Theme Name: testsystem
  Version: 1.0
  Author: Radek Drobny
*/
body {  black; font-size: 1em; }

HTTP hlavičky, META tagy, zápatí a komentáře

Nerad bych se opakoval, ale věřte mi, že i webovou aplikaci často prozradí právě HTTP response hlavičky, META tagy ve zdrojovém kódu, nebo informace uvedená v zápatí stránek. Protože už jsme tato témata dostatečně probrali v předchozích kapitolách, vezmeme to nyní již jen velmi rychle.

V případě HTTP response hlaviček věnujte svou pozornost především hlavičce X-Generator, ale jak si můžete všimnout v následujícím výpisu, mohou použitou aplikaci prozradit i jiné specifické hlavičky.

HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Tue, 05 Jan 2016 12:26:05 GMT
Content-Type: text/html; charset=utf-8
Connection: close
X-Powered-By: PHP/5.6.14
X-Drupal-Cache: HIT
Content-Language: en
X-Generator: Drupal 7 (http://drupal.org)
Cache-Control: public, max-age=86400
Content-Length: 36169

Stejné je to i v případě meta tagů, které jsou rovněž často více sdílné, než by měly být. Následující výpis ukazuje, že si Vaši pozornost zaslouží například meta tag generator. Tabulka pak zachycuje některé další řetězce ze zdrojových kódů stránek, které je možné použít pro identifikaci aplikace.


  
  

Řetězce ve zdrojovém kódu umožňující identifikovat webovou aplikaci
AplikaceIdentifikační řetězec ve zdrojovém kódu
Wordpress<meta name="generator" content="WordPress 4.3.1" />
Drupal<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
Jomla<meta name="generator" content="Joomla!- Open Source Content Man…" />
phpBB<body id="phpbb"
Mediawiki<meta name="generator" content="MediaWiki 1.23.12" />
DotNetNukeDNN Platform - http://www.dnnsoftware.com

Uvádění názvu aplikace v patičkách stránek není rozhodně také žádnou výjimkou. Spíše by se dalo říci, že je to jakési nepsané pravidlo, které je navíc často vyžadováno licenčním ujednáním.

Informace v záhlaví stránek prozrazuje použitý CMS

Mezi další metody rozpoznání webové aplikace patří například průzkum komentářů, které jsou pro konkrétní aplikaci nebo její témata a pluginy typické. Pokud se Vám stále nebude rozpoznání aplikace dařit, možná Vám její název a verzi prozradí stránka s přihlašovacím formulářem do administrace. Té totiž mnohdy bývá na rozdíl od zbytku aplikace ponechán defaultní vzhled a obsah.

Stránky s příhlášením do administrace prozrazující webovou aplikaci

Typické názvy souborů, adresářů a cookies

O běžící webové aplikaci dokáží hodně napovědět také názvy adresářů a souborů, které jsou pro danou aplikaci typické. Pokud v URL adrese, nebo ve zdrojovém kódu uvidíte adresy obsahující v cestě řetězec wp-content, wp-includes, nebo wp-admin, zřejmě nebudete dlouho přemýšlet, s jakou aplikací máte tu čest. Pro ty, co by přeci jen nevěděli, jedná se o názvy adresářů, které jsou běžné pro CMS Wordpress.

Pokud se bavíme o souborech typických pro konkrétní aplikaci, nesmíme opomenout zmínit ani textové soubory, na které často narazíte v kořenovém adresáři webu, a které měly být po instalaci smazány. Častá jména těchto souborů najdete vyjmenovaná v následující tabulce.

Seznam běžných textových souborů, které prozrazují běžící aplikaci
Varianta 1Varianta 2Varianta 3Varianta 4Varianta 5
REDMEREDME.TXTREADME.txtreadmereadme.txt
INSTALLINSTALL.TXTINSTALL.txtinstallinstall.txt
CHANGESCHANGES.TXTCHANGE.txtchangeschanges.txt
CHANGELOGCHANGELOG.TXTCHANGELOG.txtchangelogchangelog.txt
VERSIONVERSION.TXTVERSION.txtversionversion.txt

Typické jsou pro různé aplikace také jména cookies, které si k uživatelům daná aplikace ukládá. V případě CMS Wordpress se můžete setkat například s cookies wordpress_test_cookie, wp_ozh_wsa_visit, wp_ozh_wsa_visit_lasttime, wp-settings-time, apd. Z těchto názvů lze daný CMS rovněž poměrně snadno a spolehlivě identifikovat.

Aplikace a pro ně typické názvy cookies
AplikaceCookieAplikaceCookie
phpBBphpbb3_TYPO3fe_typo_user
Wordpresswp-settingsDynamicwebDynamicweb
Django CMSdjangoVIVVOVivvoSessionId
ImpressCMSICMSessionHotaru CMShotaru_mobile
Kentico CMSCMSPreferredCulture1C-BitrixBITRIX_

Automatická identifikace aplikací

Pokud si doposud uvedené informace shrneme, vyjde nám z toho, že webové servery, použité frameworky, samotné webové aplikace se svými moduly, tématy a doplňky zanechávají testerovi dostatek indicií, na základě kterých je lze poměrně snadno identifikovat. V doprovodných tabulkách jsem uváděl vždy jen několik příkladů, protože jen soupis všech těchto indicií by vydal na samostatnou knihu. Taková kniha by vám ale příliš k užitku stejně nebyla, protože by porovnávání zjištěných skutečností na jejím základě probíhalo příliš dlouho a manuální rozpoznávání by tak nebylo reálně možné. Tím samozřejmě nechci váhu podobného průzkumu nijak snižovat. Mnohdy se stačí podívat a hned víte, s jakou aplikací máte co dočinění. Minimálně u nejčastěji používaných CMS a jiných systémů, s nimiž přicházíte do styku, stojí rozhodně za to, si tyto indicie držet v paměti.

Mnohem zajímavější pro Vás ale jistě budou nástroje pro automatizované rozpoznávání konkrétních aplikací a souvisejících skutečností. Takové aplikace mají tu výhodu, že obsahují poměrně rozsáhlé databáze všech signatur, o kterých jsem se zmiňoval, a při určování aplikací na jejich základě jsou velice rychlé.

Pokud by Vás zajímalo, jak taková databáze signatur vypadá, odkáži Vás například na poměrně rozsáhlý soubor s jednotlivými pravidly, na základě kterých rozpoznává běžící software již dříve zmiňovaný nástroj Wappalyzer.

Mezi automatické nástroje, které můžete k identifikaci aplikací použít, zařadím například ty z následující tabulky, kde nástroj WhatWeb je patrně tím nejznámějším a nejčastěji používaným.

Několik automatických nástrojů pro identifikaci běžící aplikace
NástrojHome page
WhatWebhttp://whatweb.net/
BlindElephanthttp://blindelephant.sourceforge.net/
CMS Detectorhttp://guess.scritch.org/
Wappalyzerhttps://wappalyzer.com/

Automaticky je samozřejmě možné rozpoznávat a enumerovat také nejrůznější pluginy a moduly webové aplikace. Nejčastěji se tak děje na základě očekávaného umístění těchto rozšíření, nebo na základě skutečnosti, že jednotlivé moduly ve zdrojovém kódu stránky natahují do prohlížeče konkrétní soubory javascriptu. Zaměříme se nyní na nejrozšířenější CMS, kterými jsou bezpochyby Wordpress nebo Drupal, a povíme si, jak se v jejich případě dají instalovaná rozšíření automaticky odhalit. Skripty identifikující v těchto CMS pluginy a moduly najdeme například ve scanneru Nmap, se kterým jsme se již dříve seznámili. Nmap má tu výhodu, že je velice snadné rozšiřovat jeho funkcionalitu pomocí skriptů. Ty, které máte nainstalovány, najdete v adresáři scripts ve složce s nástrojem Nmap. Pokud si dobře prohlédnete jejich názvy, najdete mezi nimi také skripty pojmenované http-wordpress-plugins.nse nebo http-drupal-modules.nse, které se vztahují právě k námi probíranému tématu. Pro lepší představu o možnostech, které skripty Nmap nabízí, Vám doporučuji, abyste se podívali i na názvy ostatních skriptů, přičemž se v této fázi zaměřte především na ty, které začínají prefixem „http“. Použití těchto skriptů skrze Nmap zajistíte přidáním parametru --script, viz následující výpis.

C:\Nmap>nmap -p 80 –script=http-wordpress-plugins.nse www.example.cz

Starting Nmap 6.47 ( http://nmap.org ) at 2016-01-07 19:35 St°ednÝ Evropa (běžnř čas)
Nmap scan report for www.example.cz (93.185.104.29)
PORT   STATE SERVICE
80/tcp open  http
| http-wordpress-plugins:
| search amongst the 100 most popular plugins
|   all-in-one-seo-pack
|_  google-sitemap-generator

Nmap done: 1 IP address (1 host up) scanned in 108.59 seconds

Uvedený příklad testoval přítomnost jednoho sta nejčastěji používaných pluginů. V případě, že budete chtít tuto množinu rozšířit na jiné množství, případně otestovat přítomnost všech pluginů (aktuálně jich má Nmap ve své databázi, kterou naleznete v souboru nmap/nselib/data/wp-plugins.lst, přes 18 500), pak k příkazu doplňte ještě přepínač --script-args, viz následující výpis.

nmap -p 80 –script=http-wordpress-plugins.nse --script-args=http-wordpress-plugins.search=all  example.cz

Enumeraci instalovaných témat provedete stejným způsobem. Skript, který toto umožňuje, ovšem není běžnou součástí nástroje Nmap. Najdete jej ale pod názvem http-wordpress-themes.nse společně se skriptem http-wordpress-info, který Vám poskytne informaci o běžící verzi Wordpressu, na webových stránkách hackertarget.com.

Mezi další nástroje, které Vám umožní velice snadno identifikovat nainstalované pluginy patří například on-line scannery WordPress Plugin Checker, nebo WordPress Security Scan. V případě vyhledávání doplňků u jiných systémů je situace obdobná.

Jediné, co je od Vás požadováno, je vyplnění URL adresy testované aplikace