quarta-feira, 6 de janeiro de 2016

HTTP Dangerous Method - Automatizando exploração com Python

E ai galera, depois de muito rivotril, reconter e pristiq, to de volta no role kkkkk

Bom, o motivo de postar hoje é uma vul que peguei em um cliente hoje.
O titulo já diz o nome da vul, pelo menos é o que o Nessus me trouxe como nome dela, eu achei interessante a falha pq sinceramente, nunca peguei essa falha realmente vul a não ser em LAB, ai como peguei ela hoje eu resolvi escrever um pouco sobre ela.

O que acontece é que está habilitado no servidor web os métodos PUT e DELETE, pra quem não conhece, vou explicar melhor.

PUT:
O método PUT faz uma requisição no servidor web que realiza uma criação de um arquivo remoto, caso já exista, ele é modificado.

DELETE:
Delete o recurso solicitado.

OPTIONS:
Retorna os métodos HTTP que o servidor suporta para a URL especificada.

Bom, sabendo sobre esses 3 métodos já da pra entender como funciona a falha, de grosso modo, eu faço uma requisição OPTIONS e vejo o que está habilitado no servidor como na imagem abaixo:


O que eu fiz ai foi, usar o netcat pra mandar uma solicitação de OPTIONS e ver o que está permitido(Allow) no meu server, veja que no meu apache está apenas OPTIONS, GET, HEAD e POST.

No caso do cliente, estava habilitado o método PUT e DELETE, permitindo eu inserir um arquivo e deletar.

Então eu procurei alguns artigos que mostravam como fazia manualmente o insert, no final do artigo eu vou colocar as fontes de pesquisa que me ajudaram na falha.

Mas por preguiça de fazer manual nos servers que encontrei a falha eu fiz um script que facilita a minha vida, vou postar ele aqui em baixo:



No script, é preciso criar um arquivo vul.htm antes, assim ele faz o upload, mas se quiser, pode melhorar o script, ele é livre.

Bom, basicamente é isso galera, uma outra dica, tem um comando no nmap que ajuda da identificação dessa falha:

nmap --script=http-methods.nse --script-args http-methods.retest=1 127.0.0.1

Obvio, troque o ip de loopback para o ip ou o range que vai testar.
Em um pentest isso pode ser crucial para conseguir uma vul.

É isso galera, tks....e estou de volta no role ;)

[Referencias]
http://pt.stackoverflow.com/questions/9419/quais-s%C3%A3o-os-m%C3%A9todos-de-requisi%C3%A7%C3%A3o-http-e-qual-%C3%A9-a-diferen%C3%A7a-entre-eles
https://tools.ietf.org/html/rfc7231
https://www.owasp.org/index.php/Test_HTTP_Methods_(OTG-CONFIG-006)
http://httpsecure.org/?works=how-to-exploit-http-methods-put-and-delete