Skip to content

HttpClient

Msf::Exploit::Remote::HttpClient is the main HTTP(S) client mixin. Its implementation is lib/msf/core/exploit/remote/http_client.rb.

include Msf::Exploit::Remote::HttpClient

The main options it adds automatically are:

OptionMeaning
RHOST / RPORTDestination
VHOSTHost header / virtual host
SSLWhether to use TLS
ProxiesProxy settings
UserAgentUser-Agent
HttpUsername / HttpPasswordClient authentication
HttpClientTimeoutTimeout
HttpTraceShow raw requests and responses
DOMAINNTLM / Kerberos
HTTP::*Evasion settings
MethodPurpose
send_request_cgi(opts, timeout=20, disconnect=true)CGI-compatible request
send_request_raw(opts, timeout=20, disconnect=false)Raw or nonstandard request
send_request_cgi!(opts, timeout=20, redirect_depth=1)Follow redirects
basic_auth(user, pass)Authorization value for Basic authentication
normalize_uri(*parts)Join path components
target_uriURI object for TARGETURI
full_uriAbsolute URL string
connect / disconnectExplicit connection management
rhost / rport / peer / vhost / sslConnection-information helpers
http_fingerprintServer fingerprint
def check
res = send_request_cgi(
'method' => 'GET',
'uri' => normalize_uri(target_uri.path, 'index.php')
)
return CheckCode::Unknown('no response') if res.nil?
return CheckCode::Appears if res.body.include?('ExampleApp')
CheckCode::Safe
end
# When reusing a connection
connect
res1 = send_request_cgi('uri' => '/', 'method' => 'GET')
res2 = send_request_cgi('uri' => '/admin', 'method' => 'GET')
disconnect
# Debugging
# set HttpTrace true
# set HttpTraceHeadersOnly true
PatternApproach
Single GETsend_request_cgi('method'=>'GET', 'uri'=>...)
Continued form loginSet keep_cookies: true, then send regular requests
Basic authentication'authorization' => basic_auth(u, p)
JSON API'ctype'=>'application/json', 'data'=>hash.to_json
Multipart uploadvars_form_data or Rex::MIME::Message
Follow redirectssend_request_cgi!
Nonstandard HTTPsend_request_raw
Reuse a connectionconnect → Multiple requests → disconnect
Fingerprinthttp_fingerprint / HttpFingerprint constant

For all request options, see send_request_cgi. URI helpers are covered in URI Helpers.