Double Encoding

Popis

Tento útok technika se skládá z kódování parametry uživatelského požadavku dvakrát v hexadecimálním formátu, aby se obejít bezpečnostní kontroly nebo způsobit neočekávané chování z aplikace. Je to možné, protože webový server přijímá a zpracovává požadavky klientů v mnoha zakódovaných podobách.

Pomocí dvojité kódování je možné obejít bezpečnostní filtry, které pouze dekódovat vstup uživatele jednou. Druhý dekódovacího procesu se provádí pomocí back-end platformu nebo moduly, které správně zacházet zakódovaná data, ale nemají odpovídající bezpečnostní kontroly na místě.

Útočníci mohou aplikovat dvojí kódování v cestami nebo dotazu řetězce obejít ověření schématu a bezpečnostní filtry v použití webové aplikace.

Tam jsou některé běžné znaky sady, které jsou použity v útoku webových aplikací. Například, Cesta Traversal útoky použití ".. /" (dot-dot-lomítko), zatímco XSS útoky používají "<" a ">" znaky. Tyto znaky dát hexadecimální reprezentaci, která se liší od běžných údajů.

Například, ".. /" (dot-dot-lomítko) znaky představují% 2E% 2E% 2f v šestnáctkové číselné soustavě. Je-li symbol% ​​zakódován znovu, jeho zastoupení v hexadecimálním kódu je% 25. Výsledek z dvojitého procesu kódování ".. /" (dot-dot-lomítko) by% 252E% 252E% 252F:

Rizikové faktory

TBD

Příklady

Příklad 1

Tento příklad představuje starou známou chybu zabezpečení Buďte ve verzích IIS 4.0 a 5.0, kde by mohlo útočníkovi umožnit obejít povolovací schéma a získat přístup k libovolného souboru na stejné jednotce jako web kořenového adresáře kvůli problémům s mechanismem dekódování. Pro více informací o složce zranitelnosti Traversal, viz CVE 2001-0333 .

V tomto scénáři, oběť má publikovaný spustitelný adresář (např. cgi), která je uložena na stejném oddílu jako složka systému Windows. By útočník mohl spustit libovolný příkazy na webovém serveru předložením následující adresy URL:

Původní URL:

http://victim/cgi/../../winnt/system32/cmd.exe?/c+dir+c: \

Nicméně, aplikace používá bezpečnostní kontrolní filtr, který odmítá žádosti obsahující znaky jako ".. /". Dvojitým kódování URL, je možné obejít bezpečnostní filtr:

Double zakódován URL:

http://victim/cgi/% 252E% 252E% 252F% 252E% 252E% 252Fwinnt/system32/cmd.exe / c + dir + c: \ 

Příklad 2

Double kódovaný URL mohou být použity k provedení XSS útok s cílem obejít vestavěné XSS detekce modulu. V závislosti na provedení je první dekódování proces prováděný protokolu HTTP a výsledný zakódovaný URL obejde XSS filtr, protože nemá žádné mechanismy ke zlepšení detekce. Jednoduchý příklad XSS by:

<script> alert ("XSS") </ script>

Tento škodlivý kód může být vložen do zranitelné aplikace, což v výstražného okna se zprávou "XSS". Nicméně, může webová aplikace mají charakter filtr, který zakazuje znaky, jako "<", ">" a "/", protože se používají k provádění útoků webové aplikace. Útočník by mohl použít dvojí kódování techniku ​​obejít filtr a využití klienta relaci. Kódování proces tohoto skriptu Java je:

SpálitHex kódovatPak kódování '%'Dvakrát kódovat
"<""% 3C""% 25""% 253c"
"/""% 2F""% 25""% 252F"
">""% 3E""% 25""% 253E"

Konečně, škodlivý dvojité kódování kód je:

% 253Cscript% 253Ealert ("XSS")% 253c% 253E 252Fscript%