¿Por qué no puedo enviar solicitudes HTTP en bruto con encabezados arbitrarios desde una aplicación web? [cerrado]

1

Estoy intentando escribir un script para probar una firma de red Suricata . Para hacer esto necesito simular el mismo agente de usuario que el malware. Intenté lo siguiente.

$.ajaxSetup({
    beforeSend: function(request) {
        request.setRequestHeader("User-Agent","XAgent/1.");
    }
});
$.ajax({
    url: "localhost",
    type: "GET"
});

Pero recibí el error Refused to set unsafe header "User-Agent" .

También probé WebSocket y socket.io.js pero cada uno de ellos no me permite enviar una solicitud HTTP sin procesar.

Lo que quiero es una herramienta como telnet en el navegador, así que solo puedo enviar la solicitud HTTP sin formato y definir todos los campos, pero parece que esto no es posible. ¿Hay alguna manera de que pueda hacer esto?

    
pregunta MikeSchem 09.06.2017 - 20:47
fuente

1 respuesta

2
  

Pero recibí el error Refused to set unsafe header "User-Agent"

El comportamiento del navegador varía aquí. Firefox permite que las aplicaciones web sin privilegios emitan un encabezado User-Agent personalizado para el mismo dominio (u otros orígenes a través de CORS ), pero Google Chrome no.

User-Agent no está en la lista de encabezados prohibidos :

  

Nota: el encabezado User-Agent ya no está prohibido, según la especificación - vea la lista de nombres de encabezados prohibidos (esto se implementó en Firefox 43,) por lo que ahora se puede establecer en Fetch Encabezados objeto, a través de XHR setRequestHeader () , etc.

Pero nunca podrá enviar el encabezado de dominio cruzado sin permiso. Esa es la razón por la que los errores XSS basados en cadenas de usuario-agente modificadas generalmente no son explotables .

Más allá de eso, una aplicación web sin privilegios no puede emitir "solicitudes HTTP sin procesar" reales por razones obvias de seguridad. Incluso si escribe un complemento del navegador, es probable que tenga que pasar por las respectivas API de nivel superior y no pueda completamente controlar las solicitudes HTTP en un nivel de byte, como podría usar netcat .

    
respondido por el Arminius 09.06.2017 - 23:48
fuente

Lea otras preguntas en las etiquetas