Method: Msf::Exploit::Remote::HttpClient#send_request_raw

Defined in:
lib/msf/core/exploit/remote/http_client.rb

#send_request_raw(opts = {}, timeout = 20, disconnect = false) ⇒ Object

Connects to the server, creates a request, sends the request, reads the response

Passes opts through directly to Rex::Proto::Http::Client#request_raw.



365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
# File 'lib/msf/core/exploit/remote/http_client.rb', line 365

def send_request_raw(opts = {}, timeout = 20, disconnect = false)
  if datastore['HttpClientTimeout'] && datastore['HttpClientTimeout'] > 0
    actual_timeout = datastore['HttpClientTimeout']
  else
    actual_timeout = opts[:timeout] || timeout
  end

  c = opts['client'] || connect(opts)
  r = opts[:cgi] ? c.request_cgi(opts) : c.request_raw(opts)

  res = c.send_recv(r, actual_timeout)

  disconnect(c) if disconnect

  res
rescue ::Errno::EPIPE, ::Timeout::Error => e
  print_line(e.message) if datastore['HttpTrace']
  nil
rescue Rex::ConnectionError => e
  vprint_error(e.to_s)
  nil
rescue ::Exception => e
  print_line(e.message) if datastore['HttpTrace']
  raise e
end