+ in alternativa a% 20 un vettore di attacco?

2

Stavo leggendo un Q & A sull'abilitazione di + di caratteri negli URL per Sitecore CMS e gli stati di risposta:

ASPNET application does not allow using “+” from the security point of view e.g. preventing SQL or JScript attack via URLs.

Essenzialmente un URL come http://example.com/foo%20bar è permesso nel sistema, mentre http://example.com/foo+bar non lo è.

Non ho mai sentito parlare di + caratteri usati come qualsiasi tipo di vettore di attacco per SQL injection o XSS, ma ciò non significa che non ce ne sia uno.

È + in alternativa a %20 un vettore di attacco di qualsiasi tipo?

NOTA: Ho taggato XSS e sql-injection perché sono stati richiamati esplicitamente nell'articolo

    
posta zzzzBov 10.07.2013 - 19:53
fonte

3 risposte

6

Solo per riferimento: http://host/path?query

Il simbolo + è un po 'problematico negli URI, questo perché è interpretato in modo diverso da diversi codificatori / decodificatori URI. È sempre interpretato come uno spazio se si verifica nella parte query dell'URI (tutto dopo il?), Tuttavia se viene interpretato come uno spazio se si verifica in la parte percorso dell'URI è giù per il decodificatore utilizzato.

Il tuo esempio usa la sezione percorso e la risposta dipenderà esattamente da quale decodificatore stai usando. La maggior parte di essi non decodificherà + nello spazio quando si verifica nel percorso, ma non lo saprai fino a quando non proverai con il tuo decodificatore specifico. Questo è esattamente il tipo di brutta sanitizzazione-bypass che può morderti: P

    
risposta data 10.07.2013 - 20:16
fonte
1

%20 e + sono due forme diverse, anche se correlate, di codifica di uno spazio (0x20):

Quest'ultima application / x-www-form-urlencoded è la codifica predefinita per i moduli. Con il metodo GET, per i dati viene semplicemente aggiunto l'URL action del modulo nella parte query . Questa è una convenzione introdotta con HTML.

Quindi, oltre alla convenzione di codifica generale per gli URL, i server Web o le applicazioni di codifica per percentuale, che dovrebbero essere in grado di elaborare richieste GET parametrizzate, devono essere in grado di decodificare l'applicazione / x-www-form-urlencoded , ma solo per la query secondo le specifiche HTML.

Altre parti dell'URL, come nel tuo caso il percorso dell'URL , non sono soggetti al application / x-www-form-urlencoded per impostazione predefinita. Alcuni web server / applicazioni possono decodificarlo, ma non è un comportamento standardizzato.

Ma non riesco a capire in che modo consentire un + negli URL possa comportare un rischio per la sicurezza, in particolare se viene decodificato in uno spazio. Esistono tecniche di menzionato "attacco SQL o JScript" che funziona senza + o spazio. Suppongo quindi che sia piuttosto una whitelist o una lista nera di determinati caratteri, incluso il + .

    
risposta data 11.07.2013 - 06:34
fonte
0
+  is an arithmetic operator in the sql language. 

Se il tuo asp.net genera un errore anche quando usi quegli operatori matematici: +, -, /. Allora potrebbe essere il motivo per cui!

    
risposta data 10.07.2013 - 20:56
fonte

Leggi altre domande sui tag