Escrevi em
meu site um artigo sobre
força bruta em
HTTP.
Para o artigo completo, segue o link:
Vou demonstrar aqui como fazer posts, uploads para páginas Web através de linha de comando. Para posts simples existe o comando:
$ echo "nome=danilo&idade=20" | \
>
lynx –post-data http://www.meusite.com.br/meu_post.php
Mas você fica limitado ao Lynx e aos seus padrões. Já pensou se precisasse fazer upload de arquivo por exemplo? Solução: manipular os headers do HTTP.
Para isso, utilizarei o pacote TCPUtils do Debian (existe
outra dica minha falando sobre ele).
Como exemplo: quero enviar meu sources.list para uma página PHP manipular.
Crie um arquivo chamado headers.txt, com o seguinte conteúdo:
POST /CAMINHO/PAGINA.php HTTP/1.1
Host: www.meu_dominio.com.br
User-Agent: Mozilla/5.0 (X11; U;
Linux i686; en-US; rv:1.8.0.1) Gecko/20060209 Debian/1.5.dfsg+1.5.0.1-2 Firefox/1.5.0.1
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,
image/png,*/*;q=0.5
Accept-Language: pt-br
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: multipart/form-data; boundary=–BoRdEr_Signature-00253658974569–
Content-Length: 700
—-BoRdEr_Signature-00253658974569–
Content-Disposition: form-data; name=”teste”; filename=”source.list”
Content-Type: text/plain
#deb cdrom:[Debian
GNU/Linux testing _Etch_ - Official Snapshot i386 Binary-1 (20051212)]/ etch contrib main
#deb cdrom:[Debian GNU/Linux testing _Etch_ - Official Snapshot i386 Binary-1 (20051212)]/ etch contrib main
#deb file:/ apt/
#deb http://security.debian.org/ testing/updates main contrib
deb http://security.debian.org/ etch/updates main contrib non-free
#deb http://ftp.debian.org/debian/ unstable main
#deb-src http://ftp.pucpr.br/debian/ testing main
deb http://ftp.debian.org/debian/ testing main
deb-src http://ftp.debian.org/debian/ testing main
—-BoRdEr_Signature-00253658974569—-
Algumas informações que podem mudar de programador para programador:
- /CAMINHO/PAGINA.php: é a página que vai receber meu upload;
- meudominio.com.br: o domínio do seu site;
- Content-Length: 700: tamanho do meu arquivo;
- filename=”source.list”: nome do meu arquivo;
- Content-Type: text/plain: tipo do meu arquivo;
- E, lógico, o conteúdo do arquivo (no meu caso, está o meu source.list).
Depois disso, utilize o comando tcpconnect da seguinte forma:
$ tcpconnect meu_host 80 < headers.txt
E será feita uma requisição HTTP da mesma forma como um browser o faria, com a vantagem de se manipular tudo: cookies, sessões, referers e até mesmo uploads.
Da mesma forma pode ser usado para testar segurança dos seus sites. Para a matéria completa, repito o link: