Seleccionar página

Hace tiempo se descubrió una vulnerabilidad en WordPress y en general en HTML a través de los links que abren páginas nuevas en otras ventanas, y mediante JavaScript se realizaba un ataque Phising para capturar los datos de la victima haciendo creer a esta que estaba en la página correcta cuando en realidad abrió una creada ad doc con la intención de obtener sus datos.

Para insertar un link en html utilizamos la etiqueta <a> y dentro hacemos referencia al link donde queremos redirigir la web con href y si queremos que se abra una ventana nueva con target=”_blank” tras lo que cerramos etiqueta </a> y si queremos incluimos un texto para indicar un mensaje al visitante como en el caso de abajo “visitar web”.

<!–

<a href=”www.achoweb.es” target=”_blank”>visitar web</a>

–>

Esto es aprovechado por el atacante para incluir código a través de JavaScript a través del objeto window y la propiedad location ejecutamos su método assign() que modifica la url de destino y la suplanta por una falsa para captar los datos del usuario.

Window Object Properties

Property Description
closed Returns a Boolean value indicating whether a window has been closed or not
console Returns a reference to the Console object, which provides methods for logging information to the browser’s console
defaultStatus Sets or returns the default text in the statusbar of a window
document Returns the Document object for the window
frameElement Returns the <iframe> element in which the current window is inserted
frames Returns all <iframe> elements in the current window
history Returns the History object for the window (See History object)
innerHeight Returns the inner height of a window’s content area
innerWidth Returns the inner width of a window’s content area
length Returns the number of <iframe> elements in the current window
localStorage Allows to save key/value pairs in a web browser. Stores the data with no expiration date
location Returns the Location object for the window (See Location object)
name Sets or returns the name of a window
navigator Returns the Navigator object for the window (See Navigator object)
opener Returns a reference to the window that created the window
outerHeight Returns the outer height of a window, including toolbars/scrollbars
outerWidth Returns the outer width of a window, including toolbars/scrollbars
pageXOffset Returns the pixels the current document has been scrolled (horizontally) from the upper left corner of the window
pageYOffset Returns the pixels the current document has been scrolled (vertically) from the upper left corner of the window
parent Returns the parent window of the current window
screen Returns the Screen object for the window (See Screen object)
screenLeft Returns the horizontal coordinate of the window relative to the screen
screenTop Returns the vertical coordinate of the window relative to the screen
screenX Returns the horizontal coordinate of the window relative to the screen
screenY Returns the vertical coordinate of the window relative to the screen
sessionStorage Allows to save key/value pairs in a web browser. Stores the data for one session
scrollX An alias of pageXOffset
scrollY An alias of pageYOffset
self Returns the current window
status Sets or returns the text in the statusbar of a window
top Returns the topmost browser window

Location Object Properties

Property Description
hash Sets or returns the anchor part (#) of a URL
host Sets or returns the hostname and port number of a URL
hostname Sets or returns the hostname of a URL
href Sets or returns the entire URL
origin Returns the protocol, hostname and port number of a URL
pathname Sets or returns the path name of a URL
port Sets or returns the port number of a URL
protocol Sets or returns the protocol of a URL
search Sets or returns the querystring part of a URL

Location Object Methods

Method Description
assign() Loads a new document
reload() Reloads the current document
replace() Replaces the current document with a new one

Los navegadores lo han deshabilitado en su gran mayoría o te avisan de link fraudulento, voy a grabar un video y ejecuarlo de forma local para que veáis como sería el script. A este tipo de ataque general phising se le denomina Pharming – es la explotación de una vulnerabilidad en el software de los servidores DNS (Domain Name System) o en el de los equipos de los propios usuarios, que permite a un atacante redirigir un nombre de dominio (domain name) a otra máquina distinta.

 

 

Para protegernos de este ataque debemos incluir el siguiente código –rel=”noopener noreferrer-en todos los links con el atributo target=”_blank” o bien deshabilitar el objeto window con el método open() cambiando su valor a null.

 

  • De forma manual en nuestra Web o bien actualizando WordPress (es segura pero debemos revisar el código completo por si WordPress se hubiera olvidado de algún link o revisarlo con cada actualización).

<!–

<a href=”www.achoweb.es” target=”_blank” rel=”noopener noreferrer>visitar web</a>

–>

 

  • De forma manual añadiendo código JavaScript (es la más segura pero limita cualquier ventana o link nueva).
varnuevaVentana = window.open();
nuevaVentana.opener = null;

 

A partir de aquí con JavasCript podemos abrir ventanas desde la ventana padre y desde la ventana hija abierta modificar el contenido de la padre para cuando el usuario vuelva se encuentre la web del atacante que simula otra web. A través del objeto window hacemos uso de la propiedad opener para modificar contenido en el padre o incluir una web distinta.

<!DOCTYPE html>
<html>
<body>

<button onclick=”myFunction()”>PULSAR</button>

<script>
function myFunction() {
var myWindow = window.open(“”, “myWindow”, “width=200,height=100”);
myWindow.document.write(“<p>Texto en la ventana padre'</p>”);
myWindow.opener.document.write(“<p>Texto escrito desde la ventana hija y que se verá en el padre modificando el texto anterior</p>”);
}
</script>

</body>
</html>

En definitiva combinando todas las propiedades de window es decir opener y location podemos crear un código para atacar a una victima. Tan solo nos quedaría capturar con JavasCript desde donde viene la victima con la propiedad location.hostname u otro y acceder a la etiqueta para cambiar el atributo por la función de reemplazo.

El Phising es un riesgo enorme para Internet, ya vimos como otros ataques de este tipo como el RasomWare o similares variaban el ataque a un cifrado del disco dura o carpeta concreta, habitualmente se recibe diariamente ataques de este tipo como spam en los emails por lo que es recomendable un copia externa del disco desvinculada fisicamente del ordenador y no abrir o ejecutar archivos que desconozcamos.

<!DOCTYPE html>
<html>
<body>

<button onclick=”myFunction()”>PULSAR</button>

<script>
function myFunction() {
var myWindow = window.open(“”, “myWindow”, “width=200,height=200”);
myWindow.document.write(“<p>VENTANA PADRE SE CAMBIARÁ POR LA DE GOOGLE (TEXTO VENTANA HIJA)'</p>”);
myWindow.opener.location.assign(“http://www.google.es”);
}
</script>

</body>
</html>


Visita: AchoWeb 

Share This

¡ Gracias por recomendarlo !

Más información en www.ccrabogados.com

¡ Gracias por recomendarlo !

Más información en www.ccrabogados.com