Recentemente o @akitaonrails fez um post sobre um desafio básico de segurança do @joernchen.

O desafio é realmente básico, mas aproveitei a oportunidade para mostrar como desenvolver um módulo para o Metasploit.

Vamos criar um módulo auxiliar, para isso crie o arquivo metasploit-framework/modules/auxiliary/admin/http/rails_csrf_token_bypass.rb contendo:

 

Importamos primeiramente o core do Metasploit(require 'msf/core') e a gem mechanize (require 'mechanize'), incluimos também o Msf::Exploit::Remote::HttpClient que nos traz algumas coisas úteis como validação de parâmetros e muito mais, após criamos 3 métodos:

initialize : Adicionamos informações do módulo que será usado pelo Metasploit.
check : Faremos a validação se o host está vulneravel.
run : Código que explorará a falha.

initialize

Nesse método adicionamos informações como nome, descrição, autor e licença no super(), e adicionamos algumas opções para usarmos no exploit com register_options.

 

check

Aqui nós verificamos se o alvo está online e vulnerável, então exibimos Exploit::CheckCode::Detected[0] e retornamos Exploit::CheckCode::Vulnerable, se não estiver vulnerável retornamos return Exploit::CheckCode::Safe.

 

 

Tipos de retorno disponível:

 

run

Nesse método temos o código do exploit feito pelo @akitaonrails, modificado um pouco para o módulo.

Nosso exploit completo fica:

 

Adicione o mechanize no Gemfile do metasploit:

 

Agora basta executar:

 

GitHub source code

E usar: