È possibile sfruttare questo feed di linea?

9

Durante una valutazione della sicurezza su un sito web ho trovato un link di reindirizzamento che rifletteva i valori nell'intestazione Location. La prima cosa che mi è venuta in mente è stata l'iniezione CRLF, quindi ho provato alcune variazioni di "%0a" e sono riuscito a includere il mio carico utile nella risposta:

Richiesta:

"https://ads.example.com/promoredir?redirect=http%3A%2F%2Fmain.example.com%2F%E5%98%8A%E5%98%8DSet-Cookie:%20test"

Risposta:

HTTP/1.1 302 Moved Temporarily 
Date: Sun, 12 Jul 2015 14:18:41 GMT 
Server: Apache 
Set-Cookie: JSESSIONID=5C24F2C96CE37DAA026591F5CAD91900; Path=/; Secure; HttpOnly 
Location: mail.example.com

Set-Cookie: test

Content-Length: 0 
X-Content-Type-Options: nosniff 
Strict-Transport-Security: max-age=31536000 
Vary: User-Agent 
Connection: close 
Content-Type: text/plain; charset=UTF-8

Tuttavia, quando seguo il reindirizzamento, la mia richiesta cambia in:

GET /Set-Cookie:%20test" HTTP/1.1
Host: main.example.com
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close

Dove sto andando male qui?

    
posta Mico 31.07.2015 - 17:38
fonte

4 risposte

1

Vorrei provare a fare qualcosa del genere:

http://www.example.com/somepage.php?page=%0d%0aContent-Type: text/html%0d%0aHTTP/1.1 200 OK%0d%0aContent-Type: text/html%0d%0a%0d%0a%3Chtml%3E TEST TEXT %3C/html%3E

per iniziare. Quindi, se vedi 2 risposte diverse e una di queste è una 200, e se vedi il testo, puoi provare qualsiasi cosa con i cookie.

    
risposta data 04.08.2015 - 22:18
fonte
0

È impossibile dire dal tuo "screenshot" sopra, ma direi che non stai tornando indietro 0x0D 0x0A dopo il percorso, ma invece i byte alti che hai inviato (0x8A 0x8D), incluso il tuo Set-Cookie .

E non stai interpretando i byte alti restituiti come CRLF, quindi il tuo interprete interpreta Set-Cookie come parte non host dell'URL.

Prova a cambiare l'ordine di CR e LF e guarda un dump esadecimale della risposta dal server web.

    
risposta data 03.08.2015 - 15:28
fonte
0

Penso che dovresti inviare% E5% 98% 8D% E5% 98% 8A, non% E5% 98% 8A% E5% 98% 8D. Altrimenti entrambi i token verranno espansi e probabilmente avrai una newline in più.

D'altro canto, la newline in più apparentemente non viene interpretata affatto, quindi mi chiedo se il tuo exploit stia funzionando, o se vedi che il tuo payload ti è tornato inoffensivo e allora interpretato come una nuova riga spuria.

Ie., tu mandi

location=(...omitted...)%E5%98%8A%E5%98%8D(...)cookie%20test

e il server restituisce una singola riga

Location: (same as above)

e questo è il motivo per cui il tuo browser invia GET. apparirà per vedere una nuova riga nella tua risposta perché la singola riga sopra viene interpretata come due linee dal tuo terminale.

    
risposta data 07.08.2015 - 17:01
fonte
0

Ho provato molto sullo stesso tipo di bug di cui stai parlando. Ma lo stesso problema che sto affrontando è che puoi facilmente iniettare un cookie o un Set-Cookie ma non puoi sfruttare ulteriormente come XSS, Content Injection ecc. Puoi inserire il contenuto HTML nella pagina di reindirizzamento 302 ma non lo fa senso perché molto dopo sarai reindirizzato alla pagina.

In questo caso solo% E5% 98% 8D% E5% 98% 8A funzionerà per l'iniezione di cookie. Inoltre, suppongo che tu non possa dividere l'intestazione della risposta in due intestazioni di risposta di lavoro.

    
risposta data 08.04.2016 - 18:25
fonte

Leggi altre domande sui tag