Há bastante tempo, o pink noise me disse que era possível criar um PortScanner apenas usando HTML (na verdade, o uso de Javascript é necessário). Segundo ele, bastava setar imagens para os servidores, já nas portas requeridas, e com Javascript (não disse?) se calculava o tempo que a imagem levou para carregar.
Hoje à noite, estive pensando nisso e resolvi por em prática. Porém, se eu fizesse desse jeito, provavelmente encontraria problemas, já que a diferença entre o tempo que o navegador leva para descobrir que a porta está fechada e o tempo para descobrir que está aberta, principalmente em servidores locais ou internos, é irrelevante. Assim, resolvi criar de outra forma: setando tags <scripts> e adicionando no evento Onload a chamada à função que relata as portas abertas.
Utilizei o PHP apenas como auxiliar, para montar o teste com base nas respostas do usuário ao primeiro formulário. O que realmente manda neste caso é o Javascript e o HTML. Veja:
Claro que isso é só um exemplo, não é bem utilizável quando se há ferramentas bem mais completas, como o Nmap.
Hoje à noite, estive pensando nisso e resolvi por em prática. Porém, se eu fizesse desse jeito, provavelmente encontraria problemas, já que a diferença entre o tempo que o navegador leva para descobrir que a porta está fechada e o tempo para descobrir que está aberta, principalmente em servidores locais ou internos, é irrelevante. Assim, resolvi criar de outra forma: setando tags <scripts> e adicionando no evento Onload a chamada à função que relata as portas abertas.
Utilizei o PHP apenas como auxiliar, para montar o teste com base nas respostas do usuário ao primeiro formulário. O que realmente manda neste caso é o Javascript e o HTML. Veja:
Código:
<?php set_time_limit(0); ?> <!DOCTYPE html> <html> <head> <title>(PoC) HTML/JS Portscan by 0KaL</title> <script type="text/javascript"> function aberta(porta) { alert(porta+" opened"); document.getElementById('results').innerHTML += "<br/>"+porta+" aberta."; } </script> <meta name="pinterest" content="nopin" /></head> <body> <?php if($_SERVER['REQUEST_METHOD']=="POST" AND $_POST['svr']!="") { ?> Aguarde enquanto as portas são testadas pelo seu navegador.<br/> <button Onclick="window.stop()">Parar teste</button> <button Onclick="history.back()">Voltar</button> <div id="results"></div> <?php for($i = (int)$_POST['a']; $i <= (int)$_POST['b']; $i++) { ?> <script src="//<?=$_POST['svr']?>:<?=$i?>" Onload="aberta(<?=$i?>);"></script> <?php } } else { ?> <form method="post"> <p>IP/Name (domain): <br/> <input type="text" name="svr" /></p> <p>Ports range: <br/> <input type="number" name="a" /> to <input type="number" name="b" /></p> <p><input type="submit" /></p> </form> <?php } ?> </body> </html>
Comment