First stab at axis2 login scanner
parent
85737d1235
commit
3ac2182984
|
@ -0,0 +1,54 @@
|
||||||
|
|
||||||
|
require 'metasploit/framework/login_scanner/http'
|
||||||
|
|
||||||
|
module Metasploit
|
||||||
|
module Framework
|
||||||
|
module LoginScanner
|
||||||
|
|
||||||
|
# Tomcat Manager login scanner
|
||||||
|
class Axis2 < HTTP
|
||||||
|
|
||||||
|
DEFAULT_PORT = 8080
|
||||||
|
|
||||||
|
# (see Base#attempt_login)
|
||||||
|
def attempt_login(credential)
|
||||||
|
http_client = Rex::Proto::Http::Client.new(
|
||||||
|
host, port, {}, ssl, ssl_version
|
||||||
|
)
|
||||||
|
|
||||||
|
begin
|
||||||
|
http_client.connect
|
||||||
|
body = "userName=#{Rex::Text.uri_encode(credential.public)}&password=#{Rex::Text.uri_encode(credential.private)}&submit=+Login+"
|
||||||
|
request = http_client.request_cgi(
|
||||||
|
'uri' => uri,
|
||||||
|
'method' => "POST",
|
||||||
|
'data' => body,
|
||||||
|
)
|
||||||
|
response = http_client.send_recv(request)
|
||||||
|
end
|
||||||
|
|
||||||
|
if response && response.code == 200 && response.body.include?("upload")
|
||||||
|
result = Result.new(result_opts)
|
||||||
|
end
|
||||||
|
result
|
||||||
|
end
|
||||||
|
|
||||||
|
# (see Base#set_sane_defaults)
|
||||||
|
def set_sane_defaults
|
||||||
|
self.uri = "/axis2/axis2-admin/login" if self.uri.nil?
|
||||||
|
@method = "POST".freeze
|
||||||
|
|
||||||
|
super
|
||||||
|
end
|
||||||
|
|
||||||
|
# The method *must* be "POST", so don't let the user change it
|
||||||
|
# @raise [RuntimeError]
|
||||||
|
def method=(_)
|
||||||
|
raise RuntimeError, "Method must be POST for Axis2"
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in New Issue