1844 lines
94 KiB
HTML
1844 lines
94 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>
|
||
Module: Msf::DBManager::Session
|
||
|
||
— Documentation by YARD 0.9.37
|
||
|
||
</title>
|
||
|
||
<link rel="stylesheet" href="../../css/style.css" type="text/css" />
|
||
|
||
<link rel="stylesheet" href="../../css/common.css" type="text/css" />
|
||
|
||
<script type="text/javascript">
|
||
pathId = "Msf::DBManager::Session";
|
||
relpath = '../../';
|
||
</script>
|
||
|
||
|
||
<script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
|
||
|
||
<script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
|
||
|
||
|
||
</head>
|
||
<body>
|
||
<div class="nav_wrap">
|
||
<iframe id="nav" src="../../class_list.html?1"></iframe>
|
||
<div id="resizer"></div>
|
||
</div>
|
||
|
||
<div id="main" tabindex="-1">
|
||
<div id="header">
|
||
<div id="menu">
|
||
|
||
<a href="../../_index.html">Index (S)</a> »
|
||
<span class='title'><span class='object_link'><a href="../../Msf.html" title="Msf (module)">Msf</a></span></span> » <span class='title'><span class='object_link'><a href="../DBManager.html" title="Msf::DBManager (class)">DBManager</a></span></span>
|
||
»
|
||
<span class="title">Session</span>
|
||
|
||
</div>
|
||
|
||
<div id="search">
|
||
|
||
<a class="full_list_link" id="class_list_link"
|
||
href="../../class_list.html">
|
||
|
||
<svg width="24" height="24">
|
||
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
||
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
||
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
||
</svg>
|
||
</a>
|
||
|
||
</div>
|
||
<div class="clear"></div>
|
||
</div>
|
||
|
||
<div id="content"><h1>Module: Msf::DBManager::Session
|
||
|
||
|
||
|
||
</h1>
|
||
<div class="box_info">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<dl>
|
||
<dt>Included in:</dt>
|
||
<dd><span class='object_link'><a href="../DBManager.html" title="Msf::DBManager (class)">Msf::DBManager</a></span></dd>
|
||
</dl>
|
||
|
||
|
||
|
||
<dl>
|
||
<dt>Defined in:</dt>
|
||
<dd>lib/msf/core/db_manager/session.rb</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h2>
|
||
Instance Method Summary
|
||
<small><a href="#" class="summary_toggle">collapse</a></small>
|
||
</h2>
|
||
|
||
<ul class="summary">
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#create_mdm_session_from_host-instance_method" title="#create_mdm_session_from_host (instance method)">#<strong>create_mdm_session_from_host</strong>(opts) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#create_mdm_session_from_session-instance_method" title="#create_mdm_session_from_session (instance method)">#<strong>create_mdm_session_from_session</strong>(opts) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#get_session-instance_method" title="#get_session (instance method)">#<strong>get_session</strong>(opts) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns a session based on opened_time, host address, and workspace (or returns nil).</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#infer_vuln_from_session-instance_method" title="#infer_vuln_from_session (instance method)">#<strong>infer_vuln_from_session</strong>(session, wspace) ⇒ void </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#infer_vuln_from_session_dto-instance_method" title="#infer_vuln_from_session_dto (instance method)">#<strong>infer_vuln_from_session_dto</strong>(session_dto, session_db_record, workspace) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#remove_stale_sessions-instance_method" title="#remove_stale_sessions (instance method)">#<strong>remove_stale_sessions</strong>(last_seen_interval) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Clean out any stale sessions that have been orphaned by a dead framework instance.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#report_session-instance_method" title="#report_session (instance method)">#<strong>report_session</strong>(opts) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#report_session_dto-instance_method" title="#report_session_dto (instance method)">#<strong>report_session_dto</strong>(session_dto) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#report_session_host_dto-instance_method" title="#report_session_host_dto (instance method)">#<strong>report_session_host_dto</strong>(host_dto) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#sessions-instance_method" title="#sessions (instance method)">#<strong>sessions</strong>(opts) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns a list of all sessions in the database that are selected via the key-value pairs in the specified options.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#update_session-instance_method" title="#update_session (instance method)">#<strong>update_session</strong>(opts) ⇒ Mdm::Session </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Update the attributes of a session entry with the values in opts.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
<div id="instance_method_details" class="method_details_list">
|
||
<h2>Instance Method Details</h2>
|
||
|
||
|
||
<div class="method_details first">
|
||
<h3 class="signature first" id="create_mdm_session_from_host-instance_method">
|
||
|
||
#<strong>create_mdm_session_from_host</strong>(opts) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
336
|
||
337
|
||
338
|
||
339
|
||
340
|
||
341
|
||
342
|
||
343
|
||
344
|
||
345
|
||
346
|
||
347
|
||
348
|
||
349
|
||
350
|
||
351
|
||
352
|
||
353
|
||
354
|
||
355
|
||
356
|
||
357
|
||
358
|
||
359</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/db_manager/session.rb', line 336</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_create_mdm_session_from_host'>create_mdm_session_from_host</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
||
<span class='op'>::</span><span class='const'><span class='object_link'><a href="../../ApplicationRecord.html" title="ApplicationRecord (class)">ApplicationRecord</a></span></span><span class='period'>.</span><span class='id identifier rubyid_connection_pool'>connection_pool</span><span class='period'>.</span><span class='id identifier rubyid_with_connection'>with_connection</span> <span class='lbrace'>{</span>
|
||
<span class='id identifier rubyid_host'>host</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:host</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Invalid :host, expected Host object</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span> <span class='op'>::</span><span class='const'>Mdm</span><span class='op'>::</span><span class='const'>Host</span>
|
||
<span class='id identifier rubyid_sess_data'>sess_data</span> <span class='op'>=</span> <span class='lbrace'>{</span>
|
||
<span class='label'>host_id:</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span>
|
||
<span class='label'>stype:</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:stype</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>desc:</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:desc</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>platform:</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:platform</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>via_payload:</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:via_payload</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>via_exploit:</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:via_exploit</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>routes:</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:routes</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>datastore:</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:datastore</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>opened_at:</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:opened_at</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>closed_at:</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:closed_at</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>last_seen:</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:last_seen</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:closed_at</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>close_reason:</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:close_reason</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='rbrace'>}</span>
|
||
|
||
|
||
<span class='id identifier rubyid_s'>s</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>Mdm</span><span class='op'>::</span><span class='const'>Session</span><span class='period'>.</span><span class='id identifier rubyid_create!'>create!</span><span class='lparen'>(</span><span class='id identifier rubyid_sess_data'>sess_data</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_s'>s</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="create_mdm_session_from_session-instance_method">
|
||
|
||
#<strong>create_mdm_session_from_session</strong>(opts) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
288
|
||
289
|
||
290
|
||
291
|
||
292
|
||
293
|
||
294
|
||
295
|
||
296
|
||
297
|
||
298
|
||
299
|
||
300
|
||
301
|
||
302
|
||
303
|
||
304
|
||
305
|
||
306
|
||
307
|
||
308
|
||
309
|
||
310
|
||
311
|
||
312
|
||
313
|
||
314
|
||
315
|
||
316
|
||
317
|
||
318
|
||
319
|
||
320
|
||
321
|
||
322
|
||
323
|
||
324
|
||
325
|
||
326
|
||
327
|
||
328
|
||
329
|
||
330
|
||
331
|
||
332
|
||
333
|
||
334</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/db_manager/session.rb', line 288</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_create_mdm_session_from_session'>create_mdm_session_from_session</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
||
<span class='op'>::</span><span class='const'><span class='object_link'><a href="../../ApplicationRecord.html" title="ApplicationRecord (class)">ApplicationRecord</a></span></span><span class='period'>.</span><span class='id identifier rubyid_connection_pool'>connection_pool</span><span class='period'>.</span><span class='id identifier rubyid_with_connection'>with_connection</span> <span class='lbrace'>{</span>
|
||
<span class='id identifier rubyid_session'>session</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:session</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Invalid :session, expected Msf::Session</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span> <span class='const'><span class='object_link'><a href="../../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Session.html" title="Msf::Session (module)">Session</a></span></span>
|
||
|
||
<span class='id identifier rubyid_wspace'>wspace</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:workspace</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='id identifier rubyid_find_workspace'>find_workspace</span><span class='lparen'>(</span><span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_workspace'>workspace</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_h_opts'>h_opts</span> <span class='op'>=</span> <span class='lbrace'>{</span>
|
||
<span class='label'>host:</span> <span class='const'><span class='object_link'><a href="../../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Util.html" title="Msf::Util (module)">Util</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Util/Host.html" title="Msf::Util::Host (module)">Host</a></span></span><span class='period'>.</span><span class='id identifier rubyid_normalize_host'><span class='object_link'><a href="../Util/Host.html#normalize_host-class_method" title="Msf::Util::Host.normalize_host (method)">normalize_host</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_session'>session</span><span class='rparen'>)</span><span class='comma'>,</span>
|
||
<span class='label'>workspace:</span> <span class='id identifier rubyid_wspace'>wspace</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='id identifier rubyid_h_opts'>h_opts</span><span class='lbracket'>[</span><span class='symbol'>:arch</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span> <span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:arch</span><span class='rparen'>)</span> <span class='op'>&&</span> <span class='op'>!</span><span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>&&</span> <span class='op'>!</span><span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
|
||
|
||
<span class='id identifier rubyid_host'>host</span> <span class='op'>=</span> <span class='id identifier rubyid_find_or_create_host'>find_or_create_host</span><span class='lparen'>(</span><span class='id identifier rubyid_h_opts'>h_opts</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_sess_data'>sess_data</span> <span class='op'>=</span> <span class='lbrace'>{</span>
|
||
<span class='label'>datastore:</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_exploit_datastore'>exploit_datastore</span><span class='period'>.</span><span class='id identifier rubyid_to_h'>to_h</span><span class='comma'>,</span>
|
||
<span class='label'>desc:</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span><span class='comma'>,</span>
|
||
<span class='label'>host_id:</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span>
|
||
<span class='label'>last_seen:</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_utc'>utc</span><span class='comma'>,</span>
|
||
<span class='label'>local_id:</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_sid'>sid</span><span class='comma'>,</span>
|
||
<span class='label'>opened_at:</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_utc'>utc</span><span class='comma'>,</span>
|
||
<span class='label'>platform:</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_session_type'>session_type</span><span class='comma'>,</span>
|
||
<span class='label'>port:</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_session_port'>session_port</span><span class='comma'>,</span>
|
||
<span class='label'>routes:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>stype:</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span>
|
||
<span class='label'>via_exploit:</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_via_exploit'>via_exploit</span><span class='comma'>,</span>
|
||
<span class='label'>via_payload:</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_via_payload'>via_payload</span><span class='comma'>,</span>
|
||
<span class='rbrace'>}</span>
|
||
|
||
<span class='comment'># In the case of exploit/multi/handler we cannot yet determine the true
|
||
</span> <span class='comment'># exploit responsible. But we can at least show the parent versus
|
||
</span> <span class='comment'># just the generic handler:
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_via_exploit'>via_exploit</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>exploit/multi/handler</span><span class='tstring_end'>"</span></span> <span class='kw'>and</span> <span class='id identifier rubyid_sess_data'>sess_data</span><span class='lbracket'>[</span><span class='symbol'>:datastore</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ParentModule</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_sess_data'>sess_data</span><span class='lbracket'>[</span><span class='symbol'>:via_exploit</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_sess_data'>sess_data</span><span class='lbracket'>[</span><span class='symbol'>:datastore</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ParentModule</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_s'>s</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>Mdm</span><span class='op'>::</span><span class='const'>Session</span><span class='period'>.</span><span class='id identifier rubyid_create!'>create!</span><span class='lparen'>(</span><span class='id identifier rubyid_sess_data'>sess_data</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_exploit_task'>exploit_task</span> <span class='kw'>and</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_exploit_task'>exploit_task</span><span class='period'>.</span><span class='id identifier rubyid_record'>record</span>
|
||
<span class='id identifier rubyid_session_task'>session_task</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_exploit_task'>exploit_task</span><span class='period'>.</span><span class='id identifier rubyid_record'>record</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session_task'>session_task</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>==</span> <span class='const'>Mdm</span><span class='op'>::</span><span class='const'>Task</span>
|
||
<span class='const'>Mdm</span><span class='op'>::</span><span class='const'>TaskSession</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='label'>task:</span> <span class='id identifier rubyid_session_task'>session_task</span><span class='comma'>,</span> <span class='label'>session:</span> <span class='id identifier rubyid_s'>s</span> <span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_s'>s</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="get_session-instance_method">
|
||
|
||
#<strong>get_session</strong>(opts) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns a session based on opened_time, host address, and workspace (or returns nil)</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
32
|
||
33
|
||
34
|
||
35
|
||
36
|
||
37
|
||
38
|
||
39
|
||
40
|
||
41</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/db_manager/session.rb', line 32</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_get_session'>get_session</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_active'>active</span>
|
||
<span class='op'>::</span><span class='const'><span class='object_link'><a href="../../ApplicationRecord.html" title="ApplicationRecord (class)">ApplicationRecord</a></span></span><span class='period'>.</span><span class='id identifier rubyid_connection_pool'>connection_pool</span><span class='period'>.</span><span class='id identifier rubyid_with_connection'>with_connection</span> <span class='lbrace'>{</span>
|
||
<span class='id identifier rubyid_wspace'>wspace</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Util.html" title="Msf::Util (module)">Util</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Util/DBManager.html" title="Msf::Util::DBManager (module)">DBManager</a></span></span><span class='period'>.</span><span class='id identifier rubyid_process_opts_workspace'><span class='object_link'><a href="../Util/DBManager.html#process_opts_workspace-class_method" title="Msf::Util::DBManager.process_opts_workspace (method)">process_opts_workspace</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='comma'>,</span> <span class='id identifier rubyid_framework'>framework</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_addr'>addr</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:addr</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:address</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:host</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='kw'>return</span>
|
||
<span class='id identifier rubyid_host'>host</span> <span class='op'>=</span> <span class='id identifier rubyid_get_host'>get_host</span><span class='lparen'>(</span><span class='symbol'>:workspace</span> <span class='op'>=></span> <span class='id identifier rubyid_wspace'>wspace</span><span class='comma'>,</span> <span class='symbol'>:host</span> <span class='op'>=></span> <span class='id identifier rubyid_addr'>addr</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_time'>time</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:opened_at</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:created_at</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:time</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='kw'>return</span>
|
||
<span class='op'>::</span><span class='const'>Mdm</span><span class='op'>::</span><span class='const'>Session</span><span class='period'>.</span><span class='id identifier rubyid_find_by_host_id_and_opened_at'>find_by_host_id_and_opened_at</span><span class='lparen'>(</span><span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='id identifier rubyid_time'>time</span><span class='rparen'>)</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="infer_vuln_from_session-instance_method">
|
||
|
||
#<strong>infer_vuln_from_session</strong>(session, wspace) ⇒ <tt>void</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
<p class="note returns_void">This method returns an undefined value.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>session</span>
|
||
|
||
|
||
<span class='type'>(<tt><span class='object_link'><a href="../Session.html" title="Msf::Session (module)">Msf::Session</a></span></tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>A session with a db_record Msf::Session#db_record</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>wspace</span>
|
||
|
||
|
||
<span class='type'>(<tt>Mdm::Workspace</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
222
|
||
223
|
||
224
|
||
225
|
||
226
|
||
227
|
||
228
|
||
229
|
||
230
|
||
231
|
||
232
|
||
233
|
||
234
|
||
235
|
||
236
|
||
237
|
||
238
|
||
239
|
||
240
|
||
241
|
||
242
|
||
243
|
||
244
|
||
245
|
||
246
|
||
247
|
||
248
|
||
249
|
||
250
|
||
251
|
||
252
|
||
253
|
||
254
|
||
255
|
||
256
|
||
257
|
||
258
|
||
259
|
||
260
|
||
261
|
||
262
|
||
263
|
||
264
|
||
265
|
||
266
|
||
267
|
||
268
|
||
269
|
||
270
|
||
271
|
||
272
|
||
273
|
||
274
|
||
275
|
||
276
|
||
277
|
||
278
|
||
279
|
||
280
|
||
281
|
||
282
|
||
283
|
||
284
|
||
285
|
||
286</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/db_manager/session.rb', line 222</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_infer_vuln_from_session'>infer_vuln_from_session</span><span class='lparen'>(</span><span class='id identifier rubyid_session'>session</span><span class='comma'>,</span> <span class='id identifier rubyid_wspace'>wspace</span><span class='rparen'>)</span>
|
||
<span class='op'>::</span><span class='const'><span class='object_link'><a href="../../ApplicationRecord.html" title="ApplicationRecord (class)">ApplicationRecord</a></span></span><span class='period'>.</span><span class='id identifier rubyid_connection_pool'>connection_pool</span><span class='period'>.</span><span class='id identifier rubyid_with_connection'>with_connection</span> <span class='lbrace'>{</span>
|
||
<span class='id identifier rubyid_s'>s</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_db_record'>db_record</span>
|
||
<span class='id identifier rubyid_host'>host</span> <span class='op'>=</span> <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_host'>host</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_via_exploit'>via_exploit</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>exploit/multi/handler</span><span class='tstring_end'>"</span></span> <span class='kw'>and</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_exploit_datastore'>exploit_datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ParentModule</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_mod_fullname'>mod_fullname</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_exploit_datastore'>exploit_datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ParentModule</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_mod_fullname'>mod_fullname</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_via_exploit'>via_exploit</span>
|
||
<span class='kw'>end</span>
|
||
<span class='id identifier rubyid_mod_detail'>mod_detail</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>Mdm</span><span class='op'>::</span><span class='const'>Module</span><span class='op'>::</span><span class='const'>Detail</span><span class='period'>.</span><span class='id identifier rubyid_find_by_fullname'>find_by_fullname</span><span class='lparen'>(</span><span class='id identifier rubyid_mod_fullname'>mod_fullname</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_mod_detail'>mod_detail</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
||
<span class='comment'># Then the cache isn't built yet, take the hit for instantiating the
|
||
</span> <span class='comment'># module
|
||
</span> <span class='id identifier rubyid_mod_detail'>mod_detail</span> <span class='op'>=</span> <span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_modules'>modules</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_mod_fullname'>mod_fullname</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_refs'>refs</span> <span class='op'>=</span> <span class='id identifier rubyid_mod_detail'>mod_detail</span><span class='period'>.</span><span class='id identifier rubyid_references'>references</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_refs'>refs</span> <span class='op'>=</span> <span class='id identifier rubyid_mod_detail'>mod_detail</span><span class='period'>.</span><span class='id identifier rubyid_refs'>refs</span>
|
||
<span class='kw'>end</span>
|
||
<span class='id identifier rubyid_mod_name'>mod_name</span> <span class='op'>=</span> <span class='id identifier rubyid_mod_detail'>mod_detail</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span>
|
||
|
||
<span class='id identifier rubyid_vuln_info'>vuln_info</span> <span class='op'>=</span> <span class='lbrace'>{</span>
|
||
<span class='label'>exploited_at:</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_utc'>utc</span><span class='comma'>,</span>
|
||
<span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span>
|
||
<span class='label'>info:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Exploited by </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_mod_fullname'>mod_fullname</span><span class='embexpr_end'>}</span><span class='tstring_content'> to create Session </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
||
<span class='label'>name:</span> <span class='id identifier rubyid_mod_name'>mod_name</span><span class='comma'>,</span>
|
||
<span class='label'>refs:</span> <span class='id identifier rubyid_refs'>refs</span><span class='comma'>,</span>
|
||
<span class='label'>workspace:</span> <span class='id identifier rubyid_wspace'>wspace</span><span class='comma'>,</span>
|
||
<span class='rbrace'>}</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_exploit'>exploit</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:service_details</span><span class='rparen'>)</span> <span class='op'>&&</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_exploit'>exploit</span><span class='period'>.</span><span class='id identifier rubyid_service_details'>service_details</span>
|
||
<span class='id identifier rubyid_service_details'>service_details</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_exploit'>exploit</span><span class='period'>.</span><span class='id identifier rubyid_service_details'>service_details</span>
|
||
<span class='id identifier rubyid_service_name'>service_name</span> <span class='op'>=</span> <span class='id identifier rubyid_service_details'>service_details</span><span class='lbracket'>[</span><span class='symbol'>:service_name</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_port'>port</span> <span class='op'>=</span> <span class='id identifier rubyid_service_details'>service_details</span><span class='lbracket'>[</span><span class='symbol'>:port</span><span class='rbracket'>]</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_port'>port</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
||
<span class='id identifier rubyid_port'>port</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:target_port</span><span class='rparen'>)</span> <span class='op'>&&</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_target_port'>target_port</span> <span class='op'>?</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_target_port'>target_port</span> <span class='op'>:</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_exploit_datastore'>exploit_datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>RPORT</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
<span class='id identifier rubyid_proto'>proto</span> <span class='op'>=</span> <span class='id identifier rubyid_service_details'>service_details</span><span class='lbracket'>[</span><span class='symbol'>:protocol</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_vuln_info'>vuln_info</span><span class='lbracket'>[</span><span class='symbol'>:service</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_services'>services</span><span class='period'>.</span><span class='id identifier rubyid_find_or_create_by'>find_or_create_by</span><span class='lparen'>(</span><span class='label'>name:</span> <span class='id identifier rubyid_service_name'>service_name</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span><span class='comma'>,</span> <span class='label'>proto:</span> <span class='id identifier rubyid_proto'>proto</span><span class='comma'>,</span> <span class='label'>state:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>open</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>unless</span> <span class='id identifier rubyid_vuln_info'>vuln_info</span><span class='lbracket'>[</span><span class='symbol'>:service</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_port'>port</span> <span class='op'>=</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:target_port</span><span class='rparen'>)</span> <span class='op'>&&</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_target_port'>target_port</span> <span class='op'>?</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_target_port'>target_port</span> <span class='op'>:</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_exploit_datastore'>exploit_datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>RPORT</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_vuln_info'>vuln_info</span><span class='lbracket'>[</span><span class='symbol'>:service</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_services'>services</span><span class='period'>.</span><span class='id identifier rubyid_find_by_port'>find_by_port</span><span class='lparen'>(</span><span class='id identifier rubyid_port'>port</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_port'>port</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_vuln'>vuln</span> <span class='op'>=</span> <span class='id identifier rubyid_report_vuln'>report_vuln</span><span class='lparen'>(</span><span class='id identifier rubyid_vuln_info'>vuln_info</span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_attempt_info'>attempt_info</span> <span class='op'>=</span> <span class='lbrace'>{</span>
|
||
<span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span>
|
||
<span class='label'>module:</span> <span class='id identifier rubyid_mod_fullname'>mod_fullname</span><span class='comma'>,</span>
|
||
<span class='label'>refs:</span> <span class='id identifier rubyid_refs'>refs</span><span class='comma'>,</span>
|
||
<span class='label'>session_id:</span> <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span>
|
||
<span class='label'>timestamp:</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_utc'>utc</span><span class='comma'>,</span>
|
||
<span class='label'>username:</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_username'>username</span><span class='comma'>,</span>
|
||
<span class='label'>vuln:</span> <span class='id identifier rubyid_vuln'>vuln</span><span class='comma'>,</span>
|
||
<span class='label'>workspace:</span> <span class='id identifier rubyid_wspace'>wspace</span><span class='comma'>,</span>
|
||
<span class='label'>run_id:</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_exploit'>exploit</span><span class='period'>.</span><span class='id identifier rubyid_user_data'>user_data</span><span class='period'>.</span><span class='id identifier rubyid_try'>try</span><span class='lparen'>(</span><span class='symbol'>:[]</span><span class='comma'>,</span> <span class='symbol'>:run_id</span><span class='rparen'>)</span>
|
||
<span class='rbrace'>}</span>
|
||
|
||
<span class='id identifier rubyid_report_exploit_success'>report_exploit_success</span><span class='lparen'>(</span><span class='id identifier rubyid_attempt_info'>attempt_info</span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_vuln'>vuln</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="infer_vuln_from_session_dto-instance_method">
|
||
|
||
#<strong>infer_vuln_from_session_dto</strong>(session_dto, session_db_record, workspace) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
361
|
||
362
|
||
363
|
||
364
|
||
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
|
||
390
|
||
391
|
||
392
|
||
393
|
||
394
|
||
395
|
||
396
|
||
397
|
||
398
|
||
399
|
||
400
|
||
401
|
||
402</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/db_manager/session.rb', line 361</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_infer_vuln_from_session_dto'>infer_vuln_from_session_dto</span><span class='lparen'>(</span><span class='id identifier rubyid_session_dto'>session_dto</span><span class='comma'>,</span> <span class='id identifier rubyid_session_db_record'>session_db_record</span><span class='comma'>,</span> <span class='id identifier rubyid_workspace'>workspace</span><span class='rparen'>)</span>
|
||
<span class='op'>::</span><span class='const'><span class='object_link'><a href="../../ApplicationRecord.html" title="ApplicationRecord (class)">ApplicationRecord</a></span></span><span class='period'>.</span><span class='id identifier rubyid_connection_pool'>connection_pool</span><span class='period'>.</span><span class='id identifier rubyid_with_connection'>with_connection</span> <span class='lbrace'>{</span>
|
||
|
||
<span class='id identifier rubyid_vuln_info_dto'>vuln_info_dto</span> <span class='op'>=</span> <span class='id identifier rubyid_session_dto'>session_dto</span><span class='lbracket'>[</span><span class='symbol'>:vuln_info</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_host'>host</span> <span class='op'>=</span> <span class='id identifier rubyid_session_db_record'>session_db_record</span><span class='period'>.</span><span class='id identifier rubyid_host'>host</span>
|
||
<span class='id identifier rubyid_mod_name'>mod_name</span> <span class='op'>=</span> <span class='id identifier rubyid_vuln_info_dto'>vuln_info_dto</span><span class='lbracket'>[</span><span class='symbol'>:mod_name</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>unknown</span><span class='tstring_end'>'</span></span>
|
||
<span class='id identifier rubyid_refs'>refs</span> <span class='op'>=</span> <span class='id identifier rubyid_vuln_info_dto'>vuln_info_dto</span><span class='lbracket'>[</span><span class='symbol'>:mod_references</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
||
|
||
<span class='id identifier rubyid_vuln_info'>vuln_info</span> <span class='op'>=</span> <span class='lbrace'>{</span>
|
||
<span class='label'>exploited_at:</span> <span class='id identifier rubyid_session_dto'>session_dto</span><span class='lbracket'>[</span><span class='symbol'>:time_stamp</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span>
|
||
<span class='label'>info:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Exploited by </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_vuln_info_dto'>vuln_info_dto</span><span class='lbracket'>[</span><span class='symbol'>:mod_fullname</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'> to create Session </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_session_db_record'>session_db_record</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
||
<span class='label'>name:</span> <span class='id identifier rubyid_mod_name'>mod_name</span><span class='comma'>,</span>
|
||
<span class='label'>refs:</span> <span class='id identifier rubyid_refs'>refs</span><span class='comma'>,</span>
|
||
<span class='label'>workspace:</span> <span class='id identifier rubyid_workspace'>workspace</span><span class='comma'>,</span>
|
||
<span class='rbrace'>}</span>
|
||
|
||
<span class='id identifier rubyid_port'>port</span> <span class='op'>=</span> <span class='id identifier rubyid_vuln_info_dto'>vuln_info_dto</span><span class='lbracket'>[</span><span class='symbol'>:remote_port</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_service'>service</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_port'>port</span> <span class='op'>?</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_services'>services</span><span class='period'>.</span><span class='id identifier rubyid_find_by_port'>find_by_port</span><span class='lparen'>(</span><span class='id identifier rubyid_port'>port</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_vuln_info'>vuln_info</span><span class='lbracket'>[</span><span class='symbol'>:service</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_service'>service</span> <span class='kw'>if</span> <span class='id identifier rubyid_service'>service</span>
|
||
|
||
<span class='id identifier rubyid_vuln'>vuln</span> <span class='op'>=</span> <span class='id identifier rubyid_report_vuln'>report_vuln</span><span class='lparen'>(</span><span class='id identifier rubyid_vuln_info'>vuln_info</span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_attempt_info'>attempt_info</span> <span class='op'>=</span> <span class='lbrace'>{</span>
|
||
<span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span>
|
||
<span class='label'>module:</span> <span class='id identifier rubyid_vuln_info_dto'>vuln_info_dto</span><span class='lbracket'>[</span><span class='symbol'>:mod_fullname</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>refs:</span> <span class='id identifier rubyid_refs'>refs</span><span class='comma'>,</span>
|
||
<span class='label'>service:</span> <span class='id identifier rubyid_service'>service</span><span class='comma'>,</span>
|
||
<span class='label'>session_id:</span> <span class='id identifier rubyid_session_db_record'>session_db_record</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span>
|
||
<span class='label'>timestamp:</span> <span class='id identifier rubyid_session_dto'>session_dto</span><span class='lbracket'>[</span><span class='symbol'>:time_stamp</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>username:</span> <span class='id identifier rubyid_vuln_info_dto'>vuln_info_dto</span><span class='lbracket'>[</span><span class='symbol'>:username</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>vuln:</span> <span class='id identifier rubyid_vuln'>vuln</span><span class='comma'>,</span>
|
||
<span class='label'>workspace:</span> <span class='id identifier rubyid_workspace'>workspace</span><span class='comma'>,</span>
|
||
<span class='label'>run_id:</span> <span class='id identifier rubyid_vuln_info_dto'>vuln_info_dto</span><span class='lbracket'>[</span><span class='symbol'>:run_id</span><span class='rbracket'>]</span>
|
||
<span class='rbrace'>}</span>
|
||
|
||
<span class='id identifier rubyid_report_exploit_success'>report_exploit_success</span><span class='lparen'>(</span><span class='id identifier rubyid_attempt_info'>attempt_info</span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_vuln'>vuln</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="remove_stale_sessions-instance_method">
|
||
|
||
#<strong>remove_stale_sessions</strong>(last_seen_interval) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Clean out any stale sessions that have been orphaned by a dead framework instance.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>last_seen_interval</span>
|
||
|
||
|
||
<span class='type'>(<tt>Integer</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>interval, in seconds, open sessions are marked as alive</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
202
|
||
203
|
||
204
|
||
205
|
||
206
|
||
207
|
||
208
|
||
209
|
||
210
|
||
211
|
||
212
|
||
213</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/db_manager/session.rb', line 202</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_remove_stale_sessions'>remove_stale_sessions</span><span class='lparen'>(</span><span class='id identifier rubyid_last_seen_interval'>last_seen_interval</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_active'>active</span>
|
||
|
||
<span class='op'>::</span><span class='const'><span class='object_link'><a href="../../ApplicationRecord.html" title="ApplicationRecord (class)">ApplicationRecord</a></span></span><span class='period'>.</span><span class='id identifier rubyid_connection_pool'>connection_pool</span><span class='period'>.</span><span class='id identifier rubyid_with_connection'>with_connection</span> <span class='lbrace'>{</span>
|
||
<span class='op'>::</span><span class='const'>Mdm</span><span class='op'>::</span><span class='const'>Session</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='label'>closed_at:</span> <span class='kw'>nil</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_db_session'>db_session</span><span class='op'>|</span>
|
||
<span class='kw'>next</span> <span class='kw'>unless</span> <span class='id identifier rubyid_db_session'>db_session</span><span class='period'>.</span><span class='id identifier rubyid_last_seen'>last_seen</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='kw'>or</span> <span class='lparen'>(</span><span class='lparen'>(</span><span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_utc'>utc</span> <span class='op'>-</span> <span class='id identifier rubyid_db_session'>db_session</span><span class='period'>.</span><span class='id identifier rubyid_last_seen'>last_seen</span><span class='rparen'>)</span> <span class='op'>></span> <span class='lparen'>(</span><span class='int'>2</span> <span class='op'>*</span> <span class='id identifier rubyid_last_seen_interval'>last_seen_interval</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_db_session'>db_session</span><span class='period'>.</span><span class='id identifier rubyid_closed_at'>closed_at</span> <span class='op'>=</span> <span class='id identifier rubyid_db_session'>db_session</span><span class='period'>.</span><span class='id identifier rubyid_last_seen'>last_seen</span> <span class='op'>||</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_now'>now</span><span class='period'>.</span><span class='id identifier rubyid_utc'>utc</span>
|
||
<span class='id identifier rubyid_db_session'>db_session</span><span class='period'>.</span><span class='id identifier rubyid_close_reason'>close_reason</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Orphaned</span><span class='tstring_end'>"</span></span>
|
||
<span class='id identifier rubyid_db_session'>db_session</span><span class='period'>.</span><span class='id identifier rubyid_save'>save</span>
|
||
<span class='kw'>end</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="report_session-instance_method">
|
||
|
||
|
||
<span class="overload">#<strong>report_session</strong>(opts) ⇒ <tt>nil</tt>, <tt>Mdm::Session</tt> </span>
|
||
|
||
<span class="overload">#<strong>report_session</strong>(opts) ⇒ <tt>nil</tt>, <tt>Mdm::Session</tt> </span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<div class="note todo">
|
||
<strong>TODO:</strong>
|
||
<div class='inline'>
|
||
<p><a href="https://www.pivotaltracker.com/story/show/48249739">www.pivotaltracker.com/story/show/48249739</a></p>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="note notetag">
|
||
<strong>Note:</strong>
|
||
<div class='inline'>
|
||
<p>The Mdm::Session#desc will be truncated to 255 characters.</p>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
<p class="tag_title">Overloads:</p>
|
||
<ul class="overload">
|
||
|
||
|
||
<li class="overload_item">
|
||
<span class="signature">#<strong>report_session</strong>(opts) ⇒ <tt>nil</tt>, <tt>Mdm::Session</tt> </span>
|
||
<div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Creates an Mdm::Session from Msf::Session. If <code>via_exploit</code> is set on the <code>session</code>, then an Mdm::Vuln and Mdm::ExploitAttempt is created for the session’s host. The Mdm::Host for the <code>session_host</code> is created using The session.session_host, <code>session.arch</code> (if <code>session</code> responds to arch), and the workspace derived from opts or the <code>session</code>. The Mdm::Session is assumed to be <code>last_seen</code> and <code>opened_at</code> at the time report_session is called. <tt><a href="'ParentModule'">session.exploit_datastore</a></tt> is used for the Mdm::Session#via_exploit if <code>session.via_exploit</code> is ‘exploit/multi/handler’.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>opts</span>
|
||
|
||
|
||
<span class='type'>(<tt>Hash{Symbol => Object}</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>options</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
<p class="tag_title">Options Hash (<tt>opts</tt>):</p>
|
||
<ul class="option">
|
||
|
||
<li>
|
||
<span class="name">:workspace</span>
|
||
<span class="type">(<tt>Mdm::Workspace</tt>)</span>
|
||
<span class="default">
|
||
|
||
</span>
|
||
|
||
— <div class='inline'>
|
||
<p>The workspace for in which the :session host is contained. Also used as the workspace for the Mdm::ExploitAttempt and Mdm::Vuln. Defaults to Mdm::Worksapce with Mdm::Workspace#name equal to <code>session.workspace</code>.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>nil</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>if Msf::DBManager#active is <code>false</code>.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Mdm::Session</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>if session is saved</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
<p class="tag_title">Raises:</p>
|
||
<ul class="raise">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>ArgumentError</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>if :session is not an <span class='object_link'><a href="../Session.html" title="Msf::Session (module)">Session</a></span>.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>ActiveRecord::RecordInvalid</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>if session is invalid and cannot be saved, in which case, the Mdm::ExploitAttempt and Mdm::Vuln will not be created, but the Mdm::Host will have been. (There is no transaction</p>
|
||
|
||
<pre class="code ruby"><code class="ruby">to rollback the Mdm::Host creation.)
|
||
</code></pre>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">See Also:</p>
|
||
<ul class="see">
|
||
|
||
<li><span class='object_link'><a href="Host.html#find_or_create_host-instance_method" title="Msf::DBManager::Host#find_or_create_host (method)">Host#find_or_create_host</a></span></li>
|
||
|
||
<li>Msf::DBManager::Session#Msf#Msf::Util#Msf::Util::Host#Msf::Util::Host.normalize_host</li>
|
||
|
||
<li><span class='object_link'><a href="ExploitAttempt.html#report_exploit_success-instance_method" title="Msf::DBManager::ExploitAttempt#report_exploit_success (method)">ExploitAttempt#report_exploit_success</a></span></li>
|
||
|
||
<li><span class='object_link'><a href="Vuln.html#report_vuln-instance_method" title="Msf::DBManager::Vuln#report_vuln (method)">Vuln#report_vuln</a></span></li>
|
||
|
||
</ul>
|
||
|
||
</div>
|
||
</li>
|
||
|
||
|
||
<li class="overload_item">
|
||
<span class="signature">#<strong>report_session</strong>(opts) ⇒ <tt>nil</tt>, <tt>Mdm::Session</tt> </span>
|
||
<div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Creates an Mdm::Session from Mdm::Host.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>opts</span>
|
||
|
||
|
||
<span class='type'>(<tt>Hash{Symbol => Object}</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>options</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
<p class="tag_title">Options Hash (<tt>opts</tt>):</p>
|
||
<ul class="option">
|
||
|
||
<li>
|
||
<span class="name">:closed_at</span>
|
||
<span class="type">(<tt>DateTime</tt>, <tt>Time</tt>)</span>
|
||
<span class="default">
|
||
|
||
</span>
|
||
|
||
— <div class='inline'>
|
||
<p>The date and time the session was closed.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
<span class="name">:close_reason</span>
|
||
<span class="type">(<tt>String</tt>)</span>
|
||
<span class="default">
|
||
|
||
</span>
|
||
|
||
— <div class='inline'>
|
||
<p>Reason the session was closed.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
<span class="name">:datastore</span>
|
||
<span class="type">(<tt>Hash</tt>)</span>
|
||
<span class="default">
|
||
|
||
</span>
|
||
|
||
— <div class='inline'>
|
||
<p><span class='object_link'><a href="../DataStore.html#to_h-instance_method" title="Msf::DataStore#to_h (method)">Msf::DataStore#to_h</a></span>.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
<span class="name">:desc</span>
|
||
<span class="type">(<tt>String</tt>)</span>
|
||
<span class="default">
|
||
|
||
</span>
|
||
|
||
— <div class='inline'>
|
||
<p>Session description. Will be truncated to 255 characters.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
<span class="name">:host</span>
|
||
<span class="type">(<tt>Mdm::Host</tt>)</span>
|
||
<span class="default">
|
||
|
||
</span>
|
||
|
||
— <div class='inline'>
|
||
<p>The host on which the session was opened.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
<span class="name">:last_seen</span>
|
||
<span class="type">(<tt>DateTime</tt>, <tt>Time</tt>)</span>
|
||
<span class="default">
|
||
|
||
</span>
|
||
|
||
— <div class='inline'>
|
||
<p>The last date and time the session was seen to be open. Defaults to :closed_at’s value.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
<span class="name">:opened_at</span>
|
||
<span class="type">(<tt>DateTime</tt>, <tt>Time</tt>)</span>
|
||
<span class="default">
|
||
|
||
</span>
|
||
|
||
— <div class='inline'>
|
||
<p>The date and time that the session was opened.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
<span class="name">:platform</span>
|
||
<span class="type">(<tt>String</tt>)</span>
|
||
<span class="default">
|
||
|
||
</span>
|
||
|
||
— <div class='inline'>
|
||
<p>The platform of the host.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
<span class="name">:routes</span>
|
||
<span class="type">(<tt>Array</tt>)</span>
|
||
<span class="default">
|
||
|
||
— default:
|
||
<tt>[]</tt>
|
||
|
||
</span>
|
||
|
||
— <div class='inline'>
|
||
<p>The routes through the session for pivoting.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
<span class="name">:stype</span>
|
||
<span class="type">(<tt>String</tt>)</span>
|
||
<span class="default">
|
||
|
||
</span>
|
||
|
||
— <div class='inline'>
|
||
<p>Session type.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
<span class="name">:via_exploit</span>
|
||
<span class="type">(<tt>String</tt>)</span>
|
||
<span class="default">
|
||
|
||
</span>
|
||
|
||
— <div class='inline'>
|
||
<p>The Module#fullname of the exploit that was used to open the session.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>nil</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>if Msf::DBManager#active is <code>false</code>.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Mdm::Session</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>if session is saved.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
<p class="tag_title">Raises:</p>
|
||
<ul class="raise">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>ArgumentError</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>if :host is not an Mdm::Host.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>ActiveRecord::RecordInvalid</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>if session is invalid and cannot be saved.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div>
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Raises:</p>
|
||
<ul class="raise">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'></span>
|
||
|
||
|
||
|
||
|
||
<div class='inline'>
|
||
<p>ArgumentError if :host and :session are both <code>nil</code></p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
106
|
||
107
|
||
108
|
||
109
|
||
110
|
||
111
|
||
112
|
||
113
|
||
114
|
||
115
|
||
116
|
||
117
|
||
118
|
||
119
|
||
120
|
||
121
|
||
122
|
||
123
|
||
124
|
||
125
|
||
126
|
||
127
|
||
128
|
||
129
|
||
130</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/db_manager/session.rb', line 106</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_report_session'>report_session</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_active'>active</span>
|
||
|
||
<span class='op'>::</span><span class='const'><span class='object_link'><a href="../../ApplicationRecord.html" title="ApplicationRecord (class)">ApplicationRecord</a></span></span><span class='period'>.</span><span class='id identifier rubyid_connection_pool'>connection_pool</span><span class='period'>.</span><span class='id identifier rubyid_with_connection'>with_connection</span> <span class='lbrace'>{</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:session</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_session'>session</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:session</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_s'>s</span> <span class='op'>=</span> <span class='id identifier rubyid_create_mdm_session_from_session'>create_mdm_session_from_session</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_db_record'>db_record</span> <span class='op'>=</span> <span class='id identifier rubyid_s'>s</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:host</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_s'>s</span> <span class='op'>=</span> <span class='id identifier rubyid_create_mdm_session_from_host'>create_mdm_session_from_host</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Missing option :session or :host</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_wspace'>wspace</span> <span class='op'>=</span> <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_workspace'>workspace</span>
|
||
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_session'>session</span> <span class='kw'>and</span> <span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_via_exploit'>via_exploit</span>
|
||
<span class='comment'># This is a live session, we know the host is vulnerable to something.
|
||
</span> <span class='id identifier rubyid_infer_vuln_from_session'>infer_vuln_from_session</span><span class='lparen'>(</span><span class='id identifier rubyid_session'>session</span><span class='comma'>,</span> <span class='id identifier rubyid_wspace'>wspace</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_s'>s</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="report_session_dto-instance_method">
|
||
|
||
#<strong>report_session_dto</strong>(session_dto) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
137
|
||
138
|
||
139
|
||
140
|
||
141
|
||
142
|
||
143
|
||
144
|
||
145
|
||
146
|
||
147
|
||
148
|
||
149
|
||
150
|
||
151
|
||
152
|
||
153
|
||
154
|
||
155
|
||
156
|
||
157
|
||
158
|
||
159
|
||
160
|
||
161
|
||
162
|
||
163
|
||
164
|
||
165
|
||
166
|
||
167
|
||
168
|
||
169
|
||
170
|
||
171
|
||
172
|
||
173
|
||
174
|
||
175
|
||
176
|
||
177
|
||
178
|
||
179
|
||
180
|
||
181</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/db_manager/session.rb', line 137</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_report_session_dto'>report_session_dto</span><span class='lparen'>(</span><span class='id identifier rubyid_session_dto'>session_dto</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_active'>active</span>
|
||
|
||
<span class='op'>::</span><span class='const'><span class='object_link'><a href="../../ApplicationRecord.html" title="ApplicationRecord (class)">ApplicationRecord</a></span></span><span class='period'>.</span><span class='id identifier rubyid_connection_pool'>connection_pool</span><span class='period'>.</span><span class='id identifier rubyid_with_connection'>with_connection</span> <span class='lbrace'>{</span>
|
||
<span class='id identifier rubyid_host_data'>host_data</span> <span class='op'>=</span> <span class='id identifier rubyid_session_dto'>session_dto</span><span class='lbracket'>[</span><span class='symbol'>:host_data</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_workspace'>workspace</span> <span class='op'>=</span> <span class='id identifier rubyid_workspaces'>workspaces</span><span class='lparen'>(</span><span class='lbrace'>{</span> <span class='label'>name:</span> <span class='id identifier rubyid_host_data'>host_data</span><span class='lbracket'>[</span><span class='symbol'>:workspace</span><span class='rbracket'>]</span> <span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
|
||
<span class='id identifier rubyid_h_opts'>h_opts</span> <span class='op'>=</span> <span class='lbrace'>{</span>
|
||
<span class='label'>host:</span> <span class='id identifier rubyid_host_data'>host_data</span><span class='lbracket'>[</span><span class='symbol'>:host</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>workspace:</span> <span class='id identifier rubyid_workspace'>workspace</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='id identifier rubyid_h_opts'>h_opts</span><span class='lbracket'>[</span><span class='symbol'>:arch</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_host_data'>host_data</span><span class='lbracket'>[</span><span class='symbol'>:arch</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_host_data'>host_data</span><span class='lbracket'>[</span><span class='symbol'>:arch</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>&&</span> <span class='op'>!</span><span class='id identifier rubyid_host_data'>host_data</span><span class='lbracket'>[</span><span class='symbol'>:arch</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
|
||
<span class='id identifier rubyid_host'>host</span> <span class='op'>=</span> <span class='id identifier rubyid_find_or_create_host'>find_or_create_host</span><span class='lparen'>(</span><span class='id identifier rubyid_h_opts'>h_opts</span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_session_data'>session_data</span> <span class='op'>=</span> <span class='id identifier rubyid_session_dto'>session_dto</span><span class='lbracket'>[</span><span class='symbol'>:session_data</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_sess_data'>sess_data</span> <span class='op'>=</span> <span class='lbrace'>{</span>
|
||
<span class='label'>datastore:</span> <span class='id identifier rubyid_session_data'>session_data</span><span class='lbracket'>[</span><span class='symbol'>:datastore</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>desc:</span> <span class='id identifier rubyid_session_data'>session_data</span><span class='lbracket'>[</span><span class='symbol'>:desc</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>host_id:</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span>
|
||
<span class='label'>last_seen:</span> <span class='id identifier rubyid_session_dto'>session_dto</span><span class='lbracket'>[</span><span class='symbol'>:time_stamp</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>local_id:</span> <span class='id identifier rubyid_session_data'>session_data</span><span class='lbracket'>[</span><span class='symbol'>:local_id</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>opened_at:</span> <span class='id identifier rubyid_session_dto'>session_dto</span><span class='lbracket'>[</span><span class='symbol'>:time_stamp</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>platform:</span> <span class='id identifier rubyid_session_data'>session_data</span><span class='lbracket'>[</span><span class='symbol'>:platform</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>port:</span> <span class='id identifier rubyid_session_data'>session_data</span><span class='lbracket'>[</span><span class='symbol'>:port</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>routes:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>stype:</span> <span class='id identifier rubyid_session_data'>session_data</span><span class='lbracket'>[</span><span class='symbol'>:stype</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>via_exploit:</span> <span class='id identifier rubyid_session_data'>session_data</span><span class='lbracket'>[</span><span class='symbol'>:via_exploit</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='label'>via_payload:</span> <span class='id identifier rubyid_session_data'>session_data</span><span class='lbracket'>[</span><span class='symbol'>:via_payload</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='rbrace'>}</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_sess_data'>sess_data</span><span class='lbracket'>[</span><span class='symbol'>:via_exploit</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>exploit/multi/handler</span><span class='tstring_end'>'</span></span> <span class='kw'>and</span> <span class='id identifier rubyid_sess_data'>sess_data</span><span class='lbracket'>[</span><span class='symbol'>:datastore</span><span class='rbracket'>]</span> <span class='kw'>and</span> <span class='id identifier rubyid_sess_data'>sess_data</span><span class='lbracket'>[</span><span class='symbol'>:datastore</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ParentModule</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_sess_data'>sess_data</span><span class='lbracket'>[</span><span class='symbol'>:via_exploit</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_sess_data'>sess_data</span><span class='lbracket'>[</span><span class='symbol'>:datastore</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ParentModule</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_session_db_record'>session_db_record</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>Mdm</span><span class='op'>::</span><span class='const'>Session</span><span class='period'>.</span><span class='id identifier rubyid_create!'>create!</span><span class='lparen'>(</span><span class='id identifier rubyid_sess_data'>sess_data</span><span class='rparen'>)</span>
|
||
|
||
<span class='comment'># TODO: Figure out task stuff
|
||
</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_sess_data'>sess_data</span><span class='lbracket'>[</span><span class='symbol'>:via_exploit</span><span class='rbracket'>]</span>
|
||
<span class='comment'># This is a live session, we know the host is vulnerable to something.
|
||
</span> <span class='id identifier rubyid_infer_vuln_from_session_dto'>infer_vuln_from_session_dto</span><span class='lparen'>(</span><span class='id identifier rubyid_session_dto'>session_dto</span><span class='comma'>,</span> <span class='id identifier rubyid_session_db_record'>session_db_record</span><span class='comma'>,</span> <span class='id identifier rubyid_workspace'>workspace</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='id identifier rubyid_session_db_record'>session_db_record</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="report_session_host_dto-instance_method">
|
||
|
||
#<strong>report_session_host_dto</strong>(host_dto) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
132
|
||
133
|
||
134
|
||
135</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/db_manager/session.rb', line 132</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_report_session_host_dto'>report_session_host_dto</span><span class='lparen'>(</span><span class='id identifier rubyid_host_dto'>host_dto</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_host_dto'>host_dto</span><span class='lbracket'>[</span><span class='symbol'>:host</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_get_host'>get_host</span><span class='lparen'>(</span><span class='id identifier rubyid_host_dto'>host_dto</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_create_mdm_session_from_host'>create_mdm_session_from_host</span><span class='lparen'>(</span><span class='id identifier rubyid_host_dto'>host_dto</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="sessions-instance_method">
|
||
|
||
#<strong>sessions</strong>(opts) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns a list of all sessions in the database that are selected via the key-value pairs in the specified options.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
7
|
||
8
|
||
9
|
||
10
|
||
11
|
||
12
|
||
13
|
||
14
|
||
15
|
||
16
|
||
17
|
||
18
|
||
19
|
||
20
|
||
21
|
||
22
|
||
23
|
||
24
|
||
25
|
||
26
|
||
27
|
||
28</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/db_manager/session.rb', line 7</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_sessions'>sessions</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_active'>active</span>
|
||
|
||
<span class='op'>::</span><span class='const'><span class='object_link'><a href="../../ApplicationRecord.html" title="ApplicationRecord (class)">ApplicationRecord</a></span></span><span class='period'>.</span><span class='id identifier rubyid_connection_pool'>connection_pool</span><span class='period'>.</span><span class='id identifier rubyid_with_connection'>with_connection</span> <span class='lbrace'>{</span>
|
||
<span class='comment'># If we have the ID, there is no point in creating a complex query.
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:id</span><span class='rbracket'>]</span> <span class='op'>&&</span> <span class='op'>!</span><span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:id</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
|
||
<span class='kw'>return</span> <span class='const'>Array</span><span class='period'>.</span><span class='id identifier rubyid_wrap'>wrap</span><span class='lparen'>(</span><span class='const'>Mdm</span><span class='op'>::</span><span class='const'>Session</span><span class='period'>.</span><span class='id identifier rubyid_find'>find</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:id</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_wspace'>wspace</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Util.html" title="Msf::Util (module)">Util</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Util/DBManager.html" title="Msf::Util::DBManager (module)">DBManager</a></span></span><span class='period'>.</span><span class='id identifier rubyid_process_opts_workspace'><span class='object_link'><a href="../Util/DBManager.html#process_opts_workspace-class_method" title="Msf::Util::DBManager.process_opts_workspace (method)">process_opts_workspace</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='comma'>,</span> <span class='id identifier rubyid_framework'>framework</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_opts'>opts</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_clone'>clone</span><span class='lparen'>(</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='symbol'>:workspace</span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_search_term'>search_term</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='symbol'>:search_term</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_search_term'>search_term</span> <span class='op'>&&</span> <span class='op'>!</span><span class='id identifier rubyid_search_term'>search_term</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
|
||
<span class='id identifier rubyid_column_search_conditions'>column_search_conditions</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Util.html" title="Msf::Util (module)">Util</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Util/DBManager.html" title="Msf::Util::DBManager (module)">DBManager</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create_all_column_search_conditions'><span class='object_link'><a href="../Util/DBManager.html#create_all_column_search_conditions-class_method" title="Msf::Util::DBManager.create_all_column_search_conditions (method)">create_all_column_search_conditions</a></span></span><span class='lparen'>(</span><span class='const'>Mdm</span><span class='op'>::</span><span class='const'>Session</span><span class='comma'>,</span> <span class='id identifier rubyid_search_term'>search_term</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_wspace'>wspace</span><span class='period'>.</span><span class='id identifier rubyid_sessions'>sessions</span><span class='period'>.</span><span class='id identifier rubyid_includes'>includes</span><span class='lparen'>(</span><span class='symbol'>:host</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='id identifier rubyid_column_search_conditions'>column_search_conditions</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_wspace'>wspace</span><span class='period'>.</span><span class='id identifier rubyid_sessions'>sessions</span><span class='period'>.</span><span class='id identifier rubyid_includes'>includes</span><span class='lparen'>(</span><span class='symbol'>:host</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="update_session-instance_method">
|
||
|
||
#<strong>update_session</strong>(opts) ⇒ <tt>Mdm::Session</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Update the attributes of a session entry with the values in opts. The values in opts should match the attributes to update.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>opts</span>
|
||
|
||
|
||
<span class='type'>(<tt>Hash</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Hash containing the updated values. Key should match the attribute to update. Must contain :id of record to update.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Mdm::Session</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>The updated Mdm::Session object.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
188
|
||
189
|
||
190
|
||
191
|
||
192
|
||
193
|
||
194
|
||
195
|
||
196
|
||
197
|
||
198</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/db_manager/session.rb', line 188</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_update_session'>update_session</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_active'>active</span>
|
||
|
||
<span class='op'>::</span><span class='const'><span class='object_link'><a href="../../ApplicationRecord.html" title="ApplicationRecord (class)">ApplicationRecord</a></span></span><span class='period'>.</span><span class='id identifier rubyid_connection_pool'>connection_pool</span><span class='period'>.</span><span class='id identifier rubyid_with_connection'>with_connection</span> <span class='lbrace'>{</span>
|
||
<span class='id identifier rubyid_opts'>opts</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_clone'>clone</span><span class='lparen'>(</span><span class='rparen'>)</span> <span class='comment'># protect the original caller's opts
|
||
</span> <span class='id identifier rubyid_id'>id</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='symbol'>:id</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_session'>session</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>Mdm</span><span class='op'>::</span><span class='const'>Session</span><span class='period'>.</span><span class='id identifier rubyid_find'>find</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_session'>session</span><span class='period'>.</span><span class='id identifier rubyid_update!'>update!</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_session'>session</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div id="footer">
|
||
Generated on Fri May 8 17:01:21 2026 by
|
||
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
||
0.9.37 (ruby-3.1.5).
|
||
</div>
|
||
|
||
</div>
|
||
</body>
|
||
</html> |