我正在尝试编写/修改metasploit模块以找出服务器支持的密码(用于扫描目的)。我是否必须通过全部尝试来枚举密码,或者我是否可以从服务器请求它支持的密码?
到目前为止,我只能find out我的本地openssl版本支持哪些模块。
当我想阅读有关certificate的信息时,我可以使用:
cert = OpenSSL::X509::Certificate.new(sock.peer_cert)
print_status("#{ip}:#{rport} Public Key: #{cert.public_key}")
密码有类似之处吗?
答案 0 :(得分:2)
所以,除非有一个请求,我仍然不知道 - 我想这里有一个非常好的描述如何枚举服务器支持的密码:
http://gursevkalra.blogspot.ch/2009/09/ruby-and-openssl-based-ssl-cipher.html
答案 1 :(得分:-1)
首先使用openssl_add_all_ciphers
加载所有密码,然后使用EVP_get_cipherbyname
查询单个密码。有一些方法可以枚举密码,例如。 using OBJ_NAME_do_all_sorted
Ruby的OpenSSL模块有一个hardcoded list:
class Cipher
%w(AES CAST5 BF DES IDEA RC2 RC4 RC5).each{|name|
klass = Class.new(Cipher){
define_method(:initialize){|*args|
cipher_name = args.inject(name){|n, arg| "#{n}-#{arg}" }
super(cipher_name)
}
}
PS。显然有ciphers
命令,但这并不好玩。