CRLF se refiere a un retorno de carro (CR, ASCII 13, \ r,% 0d) y de avance de línea (LF, ASCII 10, \ n,% 0a), el sistema operativo se realiza basándose en esta identificación envolver su teclado de entrada Introduzca clave es la salida de este personaje, pero ganar identificar y sistema Linux no utiliza de la misma manera.
Está separada por un CRLF entre dos HTTP cabecera y el cuerpo entre los protocolos HTTP, el encabezado del mensaje HTTP si los caracteres de control, inyección inyecte un poco de abrigo malicioso, por lo que la cookie de sesión y puede inyectar algo de código HTML, y así CRLF llamada la división de respuesta HTTP, referido como el HRS. vulnerabilidades CRLF pueden causar Cookie会话固定
y 反射型XSS(可过waf)
peligros, inyección XSS Uso de: el uso de dos consecutivo% 0d% OA resultará en la separación entre la cabecera y el cuerpo, que se puede insertar en el código que forma el tipo reflectante XSS vulnerabilidad XSS.
prueba
detección vulnerabilidad de inyección CRLF y detección de vulnerabilidades XSS son también de la misma. O mediante la modificación de los parámetros de URL HTTP, inyecte CRLF malicioso, ver los datos maliciosos se configura en respuesta a la primera salida. Principalmente en el cambio de dirección o ver dónde saltar, se puede agregar la dirección del salto ?url=http://baidu.com/xxx%0a%0dSet-Cookie: test123=123
de prueba, el paquete para ver los resultados observando la respuesta.
GET /index.php?c=rpzy&a=query&type=all&value=123&datatype=json&r=X1MU6E86%0a%0dSet-Cookie: test123=123 HTTP/1.1
Host: www.xxxxyou.net
Aquí no nos aprovechamos del éxito, si el uso de éxito, habrá paquete de respuesta de una línea Set-Cookie: test123=123
de datos.
Análisis principio
Existe una vulnerabilidad de HRS en la premisa de que: url carácter de entrada que afectará al archivo, como la reubicación de ellos pueden tratar% 0d% 0a como CRLF.
Sitio general se añadirá en la cabecera HTTP Location: http://baidu.com
de la manera de 302 saltos, así que podemos controlar el contenido es Ubicación: XXX URL atrás, para hacer frente a esta contaminación.
Suponiendo que el servidor (PHP) es manejado:
if($_COOKIE("security_level") == 1)
{
header("Location: ". $_GET['url']);
exit;
}
Los medios de código que cuando se cumple la condición, el valor del parámetro url paquete de solicitud de empalmado en la cadena de ubicación, y el pelo está dispuesto para responder al cliente.
En este punto se recibe el valor del parámetro de URL en el servidor después modificamos:
http://baidu.com/xxx%0a%0dSet-Cookie: test123=123
Después de que el valor del parámetro se empalma a la cadena de dirección URL de ubicación, en respuesta a la primera serie, verá la cabecera de respuesta:
Set-Cookie: test123=123
restauraciones
Server recibe parámetros sobre el extremo frontal, antes de la adición de Ubicación, se filtró necesario \ r, \ n terminador de línea o similares, a la contaminación evitar de la entrada de datos a otro campo de cabecera HTTP.
referencias
https://www.jianshu.com/p/2f2e311e797b
https://blog.csdn.net/shakeyin1998/article/details/88411756