1763 lines
125 KiB
HTML
1763 lines
125 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>
|
|
Module: Msf::Exploit::Remote::LDAP::Queries
|
|
|
|
— 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::Exploit::Remote::LDAP::Queries";
|
|
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 (Q)</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="../../../Exploit.html" title="Msf::Exploit (class)">Exploit</a></span></span> » <span class='title'><span class='object_link'><a href="../../Remote.html" title="Msf::Exploit::Remote (class)">Remote</a></span></span> » <span class='title'><span class='object_link'><a href="../LDAP.html" title="Msf::Exploit::Remote::LDAP (module)">LDAP</a></span></span>
|
|
»
|
|
<span class="title">Queries</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::Exploit::Remote::LDAP::Queries
|
|
|
|
|
|
|
|
</h1>
|
|
<div class="box_info">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<dl>
|
|
<dt>Included in:</dt>
|
|
<dd><span class='object_link'><a href="../../../../Rex/Post/LDAP/Ui/Console/CommandDispatcher/Client.html" title="Rex::Post::LDAP::Ui::Console::CommandDispatcher::Client (class)">Rex::Post::LDAP::Ui::Console::CommandDispatcher::Client</a></span></dd>
|
|
</dl>
|
|
|
|
|
|
|
|
<dl>
|
|
<dt>Defined in:</dt>
|
|
<dd>lib/msf/core/exploit/remote/ldap/queries.rb</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<h2>
|
|
Constant Summary
|
|
<small><a href="#" class="constants_summary_toggle">collapse</a></small>
|
|
</h2>
|
|
|
|
<dl class="constants">
|
|
|
|
<dt id="FLAG_DISALLOW_DELETE-constant" class="">FLAG_DISALLOW_DELETE =
|
|
<div class="docstring">
|
|
<div class="discussion">
|
|
|
|
<p>Taken from <a href="https://www.powershellgallery.com/packages/S.DS.P/2.1.3/Content/Transforms%5CsystemFlags.ps1">www.powershellgallery.com/packages/S.DS.P/2.1.3/Content/Transforms%5CsystemFlags.ps1</a> and from <a href="https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/1e38247d-8234-4273-9de3-bbf313548631">docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/1e38247d-8234-4273-9de3-bbf313548631</a></p>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
<div class="tags">
|
|
|
|
|
|
</div>
|
|
</dt>
|
|
<dd><pre class="code"><span class='int'>0x80000000</span></pre></dd>
|
|
|
|
<dt id="FLAG_CONFIG_ALLOW_RENAME-constant" class="">FLAG_CONFIG_ALLOW_RENAME =
|
|
|
|
</dt>
|
|
<dd><pre class="code"><span class='int'>0x40000000</span></pre></dd>
|
|
|
|
<dt id="FLAG_CONFIG_ALLOW_MOVE-constant" class="">FLAG_CONFIG_ALLOW_MOVE =
|
|
|
|
</dt>
|
|
<dd><pre class="code"><span class='int'>0x20000000</span></pre></dd>
|
|
|
|
<dt id="FLAG_CONFIG_ALLOW_LIMITED_MOVE-constant" class="">FLAG_CONFIG_ALLOW_LIMITED_MOVE =
|
|
|
|
</dt>
|
|
<dd><pre class="code"><span class='int'>0x10000000</span></pre></dd>
|
|
|
|
<dt id="FLAG_DOMAIN_DISALLOW_RENAME-constant" class="">FLAG_DOMAIN_DISALLOW_RENAME =
|
|
|
|
</dt>
|
|
<dd><pre class="code"><span class='int'>0x8000000</span></pre></dd>
|
|
|
|
<dt id="FLAG_DOMAIN_DISALLOW_MOVE-constant" class="">FLAG_DOMAIN_DISALLOW_MOVE =
|
|
|
|
</dt>
|
|
<dd><pre class="code"><span class='int'>0x4000000</span></pre></dd>
|
|
|
|
<dt id="FLAG_DISALLOW_MOVE_ON_DELETE-constant" class="">FLAG_DISALLOW_MOVE_ON_DELETE =
|
|
|
|
</dt>
|
|
<dd><pre class="code"><span class='int'>0x2000000</span></pre></dd>
|
|
|
|
<dt id="FLAG_ATTR_IS_RDN-constant" class="">FLAG_ATTR_IS_RDN =
|
|
|
|
</dt>
|
|
<dd><pre class="code"><span class='int'>0x20</span></pre></dd>
|
|
|
|
<dt id="FLAG_SCHEMA_BASE_OBJECT-constant" class="">FLAG_SCHEMA_BASE_OBJECT =
|
|
|
|
</dt>
|
|
<dd><pre class="code"><span class='int'>0x10</span></pre></dd>
|
|
|
|
<dt id="FLAG_ATTR_IS_OPERATIONAL-constant" class="">FLAG_ATTR_IS_OPERATIONAL =
|
|
|
|
</dt>
|
|
<dd><pre class="code"><span class='int'>0x8</span></pre></dd>
|
|
|
|
<dt id="FLAG_ATTR_IS_CONSTRUCTED-constant" class="">FLAG_ATTR_IS_CONSTRUCTED =
|
|
|
|
</dt>
|
|
<dd><pre class="code"><span class='int'>0x4</span></pre></dd>
|
|
|
|
<dt id="FLAG_ATTR_REQ_PARTIAL_SET_MEMBER-constant" class="">FLAG_ATTR_REQ_PARTIAL_SET_MEMBER =
|
|
|
|
</dt>
|
|
<dd><pre class="code"><span class='int'>0x2</span></pre></dd>
|
|
|
|
<dt id="FLAG_NOT_REPLICATED-constant" class="">FLAG_NOT_REPLICATED =
|
|
|
|
</dt>
|
|
<dd><pre class="code"><span class='int'>0x1</span></pre></dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h2>
|
|
Instance Method Summary
|
|
<small><a href="#" class="summary_toggle">collapse</a></small>
|
|
</h2>
|
|
|
|
<ul class="summary">
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#convert_nt_timestamp_to_time_string-instance_method" title="#convert_nt_timestamp_to_time_string (instance method)">#<strong>convert_nt_timestamp_to_time_string</strong>(nt_timestamp) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#convert_pwd_age_to_time_string-instance_method" title="#convert_pwd_age_to_time_string (instance method)">#<strong>convert_pwd_age_to_time_string</strong>(timestamp) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#convert_system_flags_to_string-instance_method" title="#convert_system_flags_to_string (instance method)">#<strong>convert_system_flags_to_string</strong>(flags) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#generate_rex_tables-instance_method" title="#generate_rex_tables (instance method)">#<strong>generate_rex_tables</strong>(entry, format) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#normalize_entry-instance_method" title="#normalize_entry (instance method)">#<strong>normalize_entry</strong>(entry, attribute_properties) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#output_data_csv-instance_method" title="#output_data_csv (instance method)">#<strong>output_data_csv</strong>(entry) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#output_data_table-instance_method" title="#output_data_table (instance method)">#<strong>output_data_table</strong>(entry) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#output_json_data-instance_method" title="#output_json_data (instance method)">#<strong>output_json_data</strong>(entry) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#perform_ldap_query-instance_method" title="#perform_ldap_query (instance method)">#<strong>perform_ldap_query</strong>(ldap, filter, attributes, base, schema_dn, scope: nil) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#perform_ldap_query_streaming-instance_method" title="#perform_ldap_query_streaming (instance method)">#<strong>perform_ldap_query_streaming</strong>(ldap, filter, attributes, base, schema_dn, scope: nil, controls: []) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#query_attributes_data-instance_method" title="#query_attributes_data (instance method)">#<strong>query_attributes_data</strong>(ldap, attributes, schema_dn) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#read_der_certificate_file-instance_method" title="#read_der_certificate_file (instance method)">#<strong>read_der_certificate_file</strong>(cert) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'>
|
|
<p>Read in a DER formatted certificate file and transform it into a OpenSSL::X509::Certificate object before then using that object to read the properties of the certificate and return this info as a string.</p>
|
|
</div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#run_builtin_ldap_query-instance_method" title="#run_builtin_ldap_query (instance method)">#<strong>run_builtin_ldap_query</strong>(queryname) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#run_ldap_query-instance_method" title="#run_ldap_query (instance method)">#<strong>run_ldap_query</strong>(filter_string, attributes) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#run_queries_from_file-instance_method" title="#run_queries_from_file (instance method)">#<strong>run_queries_from_file</strong>(ldap, queries, schema_dn, output_format, base_dn: nil) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#safe_load_queries-instance_method" title="#safe_load_queries (instance method)">#<strong>safe_load_queries</strong>(filename) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#show_output-instance_method" title="#show_output (instance method)">#<strong>show_output</strong>(entry, output_format) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></div></span>
|
|
|
|
</li>
|
|
|
|
|
|
<li class="public ">
|
|
<span class="summary_signature">
|
|
|
|
<a href="#validate_result!-instance_method" title="#validate_result! (instance method)">#<strong>validate_result!</strong>(operation_result) ⇒ Object </a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="summary_desc"><div class='inline'></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="convert_nt_timestamp_to_time_string-instance_method">
|
|
|
|
#<strong>convert_nt_timestamp_to_time_string</strong>(nt_timestamp) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
148
|
|
149
|
|
150</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 148</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_convert_nt_timestamp_to_time_string'>convert_nt_timestamp_to_time_string</span><span class='lparen'>(</span><span class='id identifier rubyid_nt_timestamp'>nt_timestamp</span><span class='rparen'>)</span>
|
|
<span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_at'>at</span><span class='lparen'>(</span><span class='lparen'>(</span><span class='id identifier rubyid_nt_timestamp'>nt_timestamp</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>-</span> <span class='int'>116444736000000000</span><span class='rparen'>)</span> <span class='op'>/</span> <span class='int'>10000000</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_utc'>utc</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="convert_pwd_age_to_time_string-instance_method">
|
|
|
|
#<strong>convert_pwd_age_to_time_string</strong>(timestamp) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
152
|
|
153
|
|
154
|
|
155
|
|
156
|
|
157
|
|
158
|
|
159</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 152</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_convert_pwd_age_to_time_string'>convert_pwd_age_to_time_string</span><span class='lparen'>(</span><span class='id identifier rubyid_timestamp'>timestamp</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_seconds'>seconds</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_timestamp'>timestamp</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>/</span> <span class='op'>-</span><span class='int'>1</span><span class='rparen'>)</span> <span class='op'>/</span> <span class='int'>10000000</span> <span class='comment'># Convert always negative number to positive then convert to seconds from tick count.
|
|
</span> <span class='id identifier rubyid_days'>days</span> <span class='op'>=</span> <span class='id identifier rubyid_seconds'>seconds</span> <span class='op'>/</span> <span class='int'>86400</span>
|
|
<span class='id identifier rubyid_hours'>hours</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_seconds'>seconds</span> <span class='op'>%</span> <span class='int'>86400</span><span class='rparen'>)</span> <span class='op'>/</span> <span class='int'>3600</span>
|
|
<span class='id identifier rubyid_minutes'>minutes</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='lparen'>(</span><span class='id identifier rubyid_seconds'>seconds</span> <span class='op'>%</span> <span class='int'>86400</span><span class='rparen'>)</span> <span class='op'>%</span> <span class='int'>3600</span><span class='rparen'>)</span> <span class='op'>/</span> <span class='int'>60</span>
|
|
<span class='id identifier rubyid_real_seconds'>real_seconds</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='lparen'>(</span><span class='lparen'>(</span><span class='id identifier rubyid_seconds'>seconds</span> <span class='op'>%</span> <span class='int'>86400</span><span class='rparen'>)</span> <span class='op'>%</span> <span class='int'>3600</span><span class='rparen'>)</span> <span class='op'>%</span> <span class='int'>60</span><span class='rparen'>)</span>
|
|
<span class='kw'>return</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_days'>days</span><span class='embexpr_end'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_hours'>hours</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_rjust'>rjust</span><span class='lparen'>(</span><span class='int'>2</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>0</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_minutes'>minutes</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_rjust'>rjust</span><span class='lparen'>(</span><span class='int'>2</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>0</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_real_seconds'>real_seconds</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_rjust'>rjust</span><span class='lparen'>(</span><span class='int'>2</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>0</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="convert_system_flags_to_string-instance_method">
|
|
|
|
#<strong>convert_system_flags_to_string</strong>(flags) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
192
|
|
193
|
|
194
|
|
195
|
|
196
|
|
197
|
|
198
|
|
199
|
|
200
|
|
201
|
|
202
|
|
203
|
|
204
|
|
205
|
|
206
|
|
207
|
|
208
|
|
209</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 192</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_convert_system_flags_to_string'>convert_system_flags_to_string</span><span class='lparen'>(</span><span class='id identifier rubyid_flags'>flags</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_flags_converted'>flags_converted</span> <span class='op'>=</span> <span class='id identifier rubyid_flags'>flags</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
|
|
<span class='id identifier rubyid_flag_string'>flag_string</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span>
|
|
<span class='id identifier rubyid_flag_string'>flag_string</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>FLAG_DISALLOW_DELETE | </span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_flags_converted'>flags_converted</span> <span class='op'>&</span> <span class='const'><span class='object_link'><a href="#FLAG_DISALLOW_DELETE-constant" title="Msf::Exploit::Remote::LDAP::Queries::FLAG_DISALLOW_DELETE (constant)">FLAG_DISALLOW_DELETE</a></span></span> <span class='op'>></span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_flag_string'>flag_string</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>FLAG_CONFIG_ALLOW_RENAME | </span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_flags_converted'>flags_converted</span> <span class='op'>&</span> <span class='const'><span class='object_link'><a href="#FLAG_CONFIG_ALLOW_RENAME-constant" title="Msf::Exploit::Remote::LDAP::Queries::FLAG_CONFIG_ALLOW_RENAME (constant)">FLAG_CONFIG_ALLOW_RENAME</a></span></span> <span class='op'>></span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_flag_string'>flag_string</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>FLAG_CONFIG_ALLOW_MOVE | </span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_flags_converted'>flags_converted</span> <span class='op'>&</span> <span class='const'><span class='object_link'><a href="#FLAG_CONFIG_ALLOW_MOVE-constant" title="Msf::Exploit::Remote::LDAP::Queries::FLAG_CONFIG_ALLOW_MOVE (constant)">FLAG_CONFIG_ALLOW_MOVE</a></span></span> <span class='op'>></span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_flag_string'>flag_string</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>FLAG_CONFIG_ALLOW_LIMITED_MOVE | </span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_flags_converted'>flags_converted</span> <span class='op'>&</span> <span class='const'><span class='object_link'><a href="#FLAG_CONFIG_ALLOW_LIMITED_MOVE-constant" title="Msf::Exploit::Remote::LDAP::Queries::FLAG_CONFIG_ALLOW_LIMITED_MOVE (constant)">FLAG_CONFIG_ALLOW_LIMITED_MOVE</a></span></span> <span class='op'>></span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_flag_string'>flag_string</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>FLAG_DOMAIN_DISALLOW_RENAME | </span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_flags_converted'>flags_converted</span> <span class='op'>&</span> <span class='const'><span class='object_link'><a href="#FLAG_DOMAIN_DISALLOW_RENAME-constant" title="Msf::Exploit::Remote::LDAP::Queries::FLAG_DOMAIN_DISALLOW_RENAME (constant)">FLAG_DOMAIN_DISALLOW_RENAME</a></span></span> <span class='op'>></span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_flag_string'>flag_string</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>FLAG_DOMAIN_DISALLOW_MOVE | </span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_flags_converted'>flags_converted</span> <span class='op'>&</span> <span class='const'><span class='object_link'><a href="#FLAG_DOMAIN_DISALLOW_MOVE-constant" title="Msf::Exploit::Remote::LDAP::Queries::FLAG_DOMAIN_DISALLOW_MOVE (constant)">FLAG_DOMAIN_DISALLOW_MOVE</a></span></span> <span class='op'>></span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_flag_string'>flag_string</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>FLAG_DISALLOW_MOVE_ON_DELETE | </span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_flags_converted'>flags_converted</span> <span class='op'>&</span> <span class='const'><span class='object_link'><a href="#FLAG_DISALLOW_MOVE_ON_DELETE-constant" title="Msf::Exploit::Remote::LDAP::Queries::FLAG_DISALLOW_MOVE_ON_DELETE (constant)">FLAG_DISALLOW_MOVE_ON_DELETE</a></span></span> <span class='op'>></span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_flag_string'>flag_string</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>FLAG_ATTR_IS_RDN | </span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_flags_converted'>flags_converted</span> <span class='op'>&</span> <span class='const'><span class='object_link'><a href="#FLAG_ATTR_IS_RDN-constant" title="Msf::Exploit::Remote::LDAP::Queries::FLAG_ATTR_IS_RDN (constant)">FLAG_ATTR_IS_RDN</a></span></span> <span class='op'>></span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_flag_string'>flag_string</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>FLAG_SCHEMA_BASE_OBJECT | </span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_flags_converted'>flags_converted</span> <span class='op'>&</span> <span class='const'><span class='object_link'><a href="#FLAG_SCHEMA_BASE_OBJECT-constant" title="Msf::Exploit::Remote::LDAP::Queries::FLAG_SCHEMA_BASE_OBJECT (constant)">FLAG_SCHEMA_BASE_OBJECT</a></span></span> <span class='op'>></span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_flag_string'>flag_string</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>FLAG_ATTR_IS_OPERATIONAL | </span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_flags_converted'>flags_converted</span> <span class='op'>&</span> <span class='const'><span class='object_link'><a href="#FLAG_ATTR_IS_OPERATIONAL-constant" title="Msf::Exploit::Remote::LDAP::Queries::FLAG_ATTR_IS_OPERATIONAL (constant)">FLAG_ATTR_IS_OPERATIONAL</a></span></span> <span class='op'>></span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_flag_string'>flag_string</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>FLAG_ATTR_IS_CONSTRUCTED | </span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_flags_converted'>flags_converted</span> <span class='op'>&</span> <span class='const'><span class='object_link'><a href="#FLAG_ATTR_IS_CONSTRUCTED-constant" title="Msf::Exploit::Remote::LDAP::Queries::FLAG_ATTR_IS_CONSTRUCTED (constant)">FLAG_ATTR_IS_CONSTRUCTED</a></span></span> <span class='op'>></span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_flag_string'>flag_string</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>FLAG_ATTR_REQ_PARTIAL_SET_MEMBER | </span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_flags_converted'>flags_converted</span> <span class='op'>&</span> <span class='const'><span class='object_link'><a href="#FLAG_ATTR_REQ_PARTIAL_SET_MEMBER-constant" title="Msf::Exploit::Remote::LDAP::Queries::FLAG_ATTR_REQ_PARTIAL_SET_MEMBER (constant)">FLAG_ATTR_REQ_PARTIAL_SET_MEMBER</a></span></span> <span class='op'>></span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_flag_string'>flag_string</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>FLAG_NOT_REPLICATED | </span><span class='tstring_end'>'</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_flags_converted'>flags_converted</span> <span class='op'>&</span> <span class='const'><span class='object_link'><a href="#FLAG_NOT_REPLICATED-constant" title="Msf::Exploit::Remote::LDAP::Queries::FLAG_NOT_REPLICATED (constant)">FLAG_NOT_REPLICATED</a></span></span> <span class='op'>></span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_flag_string'>flag_string</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span><span class='period'>.</span><span class='id identifier rubyid_gsub!'>gsub!</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'> \|$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="generate_rex_tables-instance_method">
|
|
|
|
#<strong>generate_rex_tables</strong>(entry, format) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
110
|
|
111
|
|
112
|
|
113
|
|
114
|
|
115
|
|
116
|
|
117
|
|
118
|
|
119
|
|
120
|
|
121
|
|
122
|
|
123
|
|
124
|
|
125
|
|
126
|
|
127
|
|
128
|
|
129
|
|
130
|
|
131
|
|
132
|
|
133
|
|
134
|
|
135
|
|
136
|
|
137
|
|
138
|
|
139
|
|
140
|
|
141
|
|
142
|
|
143
|
|
144
|
|
145
|
|
146</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 110</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_generate_rex_tables'>generate_rex_tables</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='comma'>,</span> <span class='id identifier rubyid_format'>format</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_tbl'>tbl</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='op'>::</span><span class='const'>Table</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'>Header</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='symbol'>:dn</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='comma'>,</span>
|
|
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Indent</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='int'>1</span><span class='comma'>,</span>
|
|
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Columns</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='qwords_beg'>%w[</span><span class='tstring_content'>Name</span><span class='words_sep'> </span><span class='tstring_content'>Attributes</span><span class='tstring_end'>]</span></span><span class='comma'>,</span>
|
|
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ColProps</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Name</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Strip</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='kw'>false</span> <span class='rbrace'>}</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
|
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>SortIndex</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='op'>-</span><span class='int'>1</span><span class='comma'>,</span>
|
|
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>WordWrap</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='kw'>false</span>
|
|
<span class='rparen'>)</span>
|
|
|
|
<span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_sort'>sort</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_attr'>attr</span><span class='op'>|</span>
|
|
<span class='kw'>if</span> <span class='id identifier rubyid_format'>format</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>table</span><span class='tstring_end'>'</span></span>
|
|
<span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_attr'>attr</span> <span class='op'>==</span> <span class='symbol'>:dn</span> <span class='comment'># Skip over DN entries for tables since DN information is shown in header.
|
|
</span>
|
|
<span class='id identifier rubyid_tbl'>tbl</span> <span class='op'><<</span> <span class='lbracket'>[</span><span class='id identifier rubyid_attr'>attr</span><span class='comma'>,</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attr'>attr</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='rbracket'>]</span>
|
|
<span class='kw'>if</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attr'>attr</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>></span> <span class='int'>1</span>
|
|
<span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attr'>attr</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>1</span><span class='op'>...</span><span class='rbracket'>]</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_additional_attr'>additional_attr</span><span class='op'>|</span>
|
|
<span class='id identifier rubyid_tbl'>tbl</span> <span class='op'><<</span> <span class='lbracket'>[</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'> \\_</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_additional_attr'>additional_attr</span><span class='rbracket'>]</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>else</span>
|
|
<span class='id identifier rubyid_tbl'>tbl</span> <span class='op'><<</span> <span class='lbracket'>[</span><span class='id identifier rubyid_attr'>attr</span><span class='comma'>,</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attr'>attr</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_join'><span class='object_link'><a href="../../../../top-level-namespace.html#join-instance_method" title="#join (method)">join</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'> || </span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='rbracket'>]</span> <span class='comment'># DN information is not shown in CSV output as a header so keep DN entries in.
|
|
</span> <span class='kw'>end</span>
|
|
<span class='kw'>end</span>
|
|
|
|
<span class='kw'>case</span> <span class='id identifier rubyid_format'>format</span>
|
|
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>table</span><span class='tstring_end'>'</span></span>
|
|
<span class='id identifier rubyid_print_line'>print_line</span><span class='lparen'>(</span><span class='id identifier rubyid_tbl'>tbl</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span>
|
|
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>csv</span><span class='tstring_end'>'</span></span>
|
|
<span class='id identifier rubyid_print_line'>print_line</span><span class='lparen'>(</span><span class='id identifier rubyid_tbl'>tbl</span><span class='period'>.</span><span class='id identifier rubyid_to_csv'>to_csv</span><span class='rparen'>)</span>
|
|
<span class='kw'>else</span>
|
|
<span class='id identifier rubyid_print_warning'>print_warning</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Invalid format: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_format'>format</span><span class='embexpr_end'>}</span><span class='tstring_content'> Supported OUTPUT_FORMAT values are csv and table</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
<span class='comment'># Default to table output, seems reasonable to output something if we have it rather than blow up
|
|
</span> <span class='id identifier rubyid_print_status'>print_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Defaulting to table output</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_print_line'>print_line</span><span class='lparen'>(</span><span class='id identifier rubyid_tbl'>tbl</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="normalize_entry-instance_method">
|
|
|
|
#<strong>normalize_entry</strong>(entry, attribute_properties) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
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
|
|
287
|
|
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
|
|
335
|
|
336
|
|
337
|
|
338
|
|
339
|
|
340
|
|
341
|
|
342
|
|
343
|
|
344
|
|
345
|
|
346
|
|
347
|
|
348
|
|
349
|
|
350</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 256</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_normalize_entry'>normalize_entry</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='comma'>,</span> <span class='id identifier rubyid_attribute_properties'>attribute_properties</span><span class='rparen'>)</span>
|
|
<span class='comment'># Convert to a hash so we get the raw data we need from within the Net::LDAP::Entry object
|
|
</span> <span class='id identifier rubyid_entry'>entry</span> <span class='op'>=</span> <span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_to_h'>to_h</span>
|
|
<span class='id identifier rubyid_normalized_entry'>normalized_entry</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='label'>dn:</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='symbol'>:dn</span><span class='rbracket'>]</span> <span class='rbrace'>}</span>
|
|
<span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_each_key'>each_key</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='op'>|</span>
|
|
<span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span> <span class='op'>==</span> <span class='symbol'>:dn</span> <span class='comment'># Skip the DN case as there will be no attributes_properties entry for it.
|
|
</span>
|
|
<span class='id identifier rubyid_normalized_attribute'>normalized_attribute</span> <span class='op'>=</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_v'>v</span><span class='op'>|</span> <span class='const'><span class='object_link'><a href="../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>Text</span><span class='period'>.</span><span class='id identifier rubyid_to_hex_ascii'>to_hex_ascii</span><span class='lparen'>(</span><span class='id identifier rubyid_v'>v</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
|
|
<span class='id identifier rubyid_attribute_property'>attribute_property</span> <span class='op'>=</span> <span class='id identifier rubyid_attribute_properties'>attribute_properties</span><span class='lbracket'>[</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='rbracket'>]</span>
|
|
<span class='kw'>unless</span> <span class='id identifier rubyid_attribute_property'>attribute_property</span>
|
|
<span class='id identifier rubyid_normalized_entry'>normalized_entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_normalized_attribute'>normalized_attribute</span>
|
|
<span class='kw'>next</span>
|
|
<span class='kw'>end</span>
|
|
|
|
<span class='kw'>case</span> <span class='id identifier rubyid_attribute_property'>attribute_property</span><span class='lbracket'>[</span><span class='symbol'>:omsyntax</span><span class='rbracket'>]</span>
|
|
<span class='kw'>when</span> <span class='int'>1</span> <span class='comment'># Boolean
|
|
</span> <span class='id identifier rubyid_normalized_attribute'>normalized_attribute</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>!=</span> <span class='int'>0</span>
|
|
<span class='kw'>when</span> <span class='int'>2</span> <span class='comment'># Integer
|
|
</span> <span class='kw'>if</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span> <span class='op'>==</span> <span class='symbol'>:systemflags</span>
|
|
<span class='id identifier rubyid_flags'>flags</span> <span class='op'>=</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span>
|
|
<span class='id identifier rubyid_converted_flags_string'>converted_flags_string</span> <span class='op'>=</span> <span class='id identifier rubyid_convert_system_flags_to_string'>convert_system_flags_to_string</span><span class='lparen'>(</span><span class='id identifier rubyid_flags'>flags</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_normalized_attribute'>normalized_attribute</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_converted_flags_string'>converted_flags_string</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>when</span> <span class='int'>4</span> <span class='comment'># OctetString or SID String
|
|
</span> <span class='kw'>if</span> <span class='id identifier rubyid_attribute_property'>attribute_property</span><span class='lbracket'>[</span><span class='symbol'>:attributesyntax</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>2.5.5.17</span><span class='tstring_end'>'</span></span> <span class='comment'># SID String
|
|
</span> <span class='comment'># Advice taken from https://ldapwiki.com/wiki/ObjectSID
|
|
</span> <span class='id identifier rubyid_object_sid_raw'>object_sid_raw</span> <span class='op'>=</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span>
|
|
<span class='kw'>begin</span>
|
|
<span class='id identifier rubyid_sid_data'>sid_data</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../Rex/Proto.html" title="Rex::Proto (module)">Proto</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../Rex/Proto/MsDtyp.html" title="Rex::Proto::MsDtyp (module)">MsDtyp</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../Rex/Proto/MsDtyp/MsDtypSid.html" title="Rex::Proto::MsDtyp::MsDtypSid (class)">MsDtypSid</a></span></span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='id identifier rubyid_object_sid_raw'>object_sid_raw</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_sid_string'>sid_string</span> <span class='op'>=</span> <span class='id identifier rubyid_sid_data'>sid_data</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
|
|
<span class='kw'>rescue</span> <span class='const'>IOError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
|
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../../../../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Failed to read SID. Error was </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
<span class='kw'>next</span>
|
|
<span class='kw'>end</span>
|
|
<span class='id identifier rubyid_normalized_attribute'>normalized_attribute</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_sid_string'>sid_string</span>
|
|
<span class='kw'>elsif</span> <span class='id identifier rubyid_attribute_property'>attribute_property</span><span class='lbracket'>[</span><span class='symbol'>:attributesyntax</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>2.5.5.10</span><span class='tstring_end'>'</span></span> <span class='comment'># OctetString
|
|
</span> <span class='kw'>if</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>guid$</span><span class='regexp_end'>/i</span></span><span class='rparen'>)</span>
|
|
<span class='comment'># Get the entry[attribute_name] object will be an array containing a single string entry,
|
|
</span> <span class='comment'># so reach in and extract that string, which will contain binary data.
|
|
</span> <span class='id identifier rubyid_bin_guid'>bin_guid</span> <span class='op'>=</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span>
|
|
<span class='kw'>if</span> <span class='id identifier rubyid_bin_guid'>bin_guid</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>16</span> <span class='comment'># Length of binary data in bytes since this is what .length uses. In bits its 128 bits.
|
|
</span> <span class='kw'>begin</span>
|
|
<span class='id identifier rubyid_decoded_guid'>decoded_guid</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../Rex/Proto.html" title="Rex::Proto (module)">Proto</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../Rex/Proto/MsDtyp.html" title="Rex::Proto::MsDtyp (module)">MsDtyp</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../Rex/Proto/MsDtyp/MsDtypGuid.html" title="Rex::Proto::MsDtyp::MsDtypGuid (class)">MsDtypGuid</a></span></span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='id identifier rubyid_bin_guid'>bin_guid</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_decoded_guid_string'>decoded_guid_string</span> <span class='op'>=</span> <span class='id identifier rubyid_decoded_guid'>decoded_guid</span><span class='period'>.</span><span class='id identifier rubyid_get'>get</span>
|
|
<span class='kw'>rescue</span> <span class='const'>IOError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
|
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../../../../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Failed to read GUID. Error was </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
<span class='kw'>next</span>
|
|
<span class='kw'>end</span>
|
|
<span class='id identifier rubyid_normalized_attribute'>normalized_attribute</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_decoded_guid_string'>decoded_guid_string</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>elsif</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span> <span class='op'>==</span> <span class='symbol'>:cacertificate</span> <span class='op'>||</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span> <span class='op'>==</span> <span class='symbol'>:usercertificate</span>
|
|
<span class='id identifier rubyid_normalized_attribute'>normalized_attribute</span> <span class='op'>=</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_raw_key_data'>raw_key_data</span><span class='op'>|</span>
|
|
<span class='id identifier rubyid__certificate_file'>_certificate_file</span><span class='comma'>,</span> <span class='id identifier rubyid_read_data'>read_data</span> <span class='op'>=</span> <span class='id identifier rubyid_read_der_certificate_file'>read_der_certificate_file</span><span class='lparen'>(</span><span class='id identifier rubyid_raw_key_data'>raw_key_data</span><span class='rparen'>)</span>
|
|
|
|
<span class='id identifier rubyid_read_data'>read_data</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>when</span> <span class='int'>6</span> <span class='comment'># String (Object-Identifier)
|
|
</span> <span class='kw'>when</span> <span class='int'>10</span> <span class='comment'># Enumeration
|
|
</span> <span class='kw'>when</span> <span class='int'>18</span> <span class='comment'># NumbericString
|
|
</span> <span class='kw'>when</span> <span class='int'>19</span> <span class='comment'># PrintableString
|
|
</span> <span class='kw'>when</span> <span class='int'>20</span> <span class='comment'># Case-Ignore String
|
|
</span> <span class='kw'>when</span> <span class='int'>22</span> <span class='comment'># IA5String
|
|
</span> <span class='kw'>when</span> <span class='int'>23</span> <span class='comment'># GeneralizedTime String (UTC-Time)
|
|
</span> <span class='kw'>when</span> <span class='int'>24</span> <span class='comment'># GeneralizedTime String (GeneralizedTime)
|
|
</span> <span class='kw'>when</span> <span class='int'>27</span> <span class='comment'># Case Sensitive String
|
|
</span> <span class='kw'>when</span> <span class='int'>64</span> <span class='comment'># DirectoryString String(Unicode)
|
|
</span> <span class='kw'>when</span> <span class='int'>65</span> <span class='comment'># LargeInteger
|
|
</span> <span class='kw'>if</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span> <span class='op'>==</span> <span class='symbol'>:creationtime</span> <span class='op'>||</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>lastlog(?:on|off)</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_timestamp'>timestamp</span> <span class='op'>=</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span>
|
|
<span class='id identifier rubyid_time_string'>time_string</span> <span class='op'>=</span> <span class='id identifier rubyid_convert_nt_timestamp_to_time_string'>convert_nt_timestamp_to_time_string</span><span class='lparen'>(</span><span class='id identifier rubyid_timestamp'>timestamp</span><span class='rparen'>)</span>
|
|
<span class='kw'>elsif</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>lockoutduration$</span><span class='regexp_end'>/i</span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>pwdage$</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_timestamp'>timestamp</span> <span class='op'>=</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span>
|
|
<span class='id identifier rubyid_time_string'>time_string</span> <span class='op'>=</span> <span class='id identifier rubyid_convert_pwd_age_to_time_string'>convert_pwd_age_to_time_string</span><span class='lparen'>(</span><span class='id identifier rubyid_timestamp'>timestamp</span><span class='rparen'>)</span>
|
|
<span class='kw'>end</span>
|
|
<span class='id identifier rubyid_normalized_attribute'>normalized_attribute</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_time_string'>time_string</span>
|
|
<span class='kw'>when</span> <span class='int'>66</span> <span class='comment'># String (Nt Security Descriptor)
|
|
</span> <span class='kw'>if</span> <span class='id identifier rubyid_attribute_property'>attribute_property</span><span class='lbracket'>[</span><span class='symbol'>:attributesyntax</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>2.5.5.15</span><span class='tstring_end'>'</span></span>
|
|
<span class='kw'>begin</span>
|
|
<span class='id identifier rubyid_sd'>sd</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../Rex/Proto.html" title="Rex::Proto (module)">Proto</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../Rex/Proto/MsDtyp.html" title="Rex::Proto::MsDtyp (module)">MsDtyp</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../../Rex/Proto/MsDtyp/MsDtypSecurityDescriptor.html" title="Rex::Proto::MsDtyp::MsDtypSecurityDescriptor (class)">MsDtypSecurityDescriptor</a></span></span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_normalized_attribute'>normalized_attribute</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_sd'>sd</span><span class='period'>.</span><span class='id identifier rubyid_to_sddl_text'>to_sddl_text</span><span class='lparen'>(</span><span class='label'>domain_sid:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
|
<span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
|
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../../../../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>failed to parse a binary security descriptor to SDDL</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>when</span> <span class='int'>127</span> <span class='comment'># Object
|
|
</span> <span class='kw'>else</span>
|
|
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Unknown oMSyntax entry: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_attribute_property'>attribute_property</span><span class='lbracket'>[</span><span class='symbol'>:omsyntax</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
<span class='kw'>end</span>
|
|
<span class='id identifier rubyid_normalized_entry'>normalized_entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_normalized_attribute'>normalized_attribute</span>
|
|
<span class='kw'>end</span>
|
|
|
|
<span class='id identifier rubyid_normalized_entry'>normalized_entry</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="output_data_csv-instance_method">
|
|
|
|
#<strong>output_data_csv</strong>(entry) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
224
|
|
225
|
|
226</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 224</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_output_data_csv'>output_data_csv</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_generate_rex_tables'>generate_rex_tables</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>csv</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="output_data_table-instance_method">
|
|
|
|
#<strong>output_data_table</strong>(entry) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
220
|
|
221
|
|
222</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 220</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_output_data_table'>output_data_table</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_generate_rex_tables'>generate_rex_tables</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>table</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="output_json_data-instance_method">
|
|
|
|
#<strong>output_json_data</strong>(entry) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
211
|
|
212
|
|
213
|
|
214
|
|
215
|
|
216
|
|
217
|
|
218</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 211</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_output_json_data'>output_json_data</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
|
|
<span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_each_key'>each_key</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_attr'>attr</span><span class='op'>|</span>
|
|
<span class='id identifier rubyid_data'>data</span><span class='lbracket'>[</span><span class='id identifier rubyid_attr'>attr</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attr'>attr</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>?</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attr'>attr</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='id identifier rubyid_attr'>attr</span><span class='rbracket'>]</span>
|
|
<span class='kw'>end</span>
|
|
<span class='id identifier rubyid_print_status'>print_status</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='symbol'>:dn</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>,</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_join'><span class='object_link'><a href="../../../../top-level-namespace.html#join-instance_method" title="#join (method)">join</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'> </span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_print_line'>print_line</span><span class='lparen'>(</span><span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_pretty_generate'>pretty_generate</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="perform_ldap_query-instance_method">
|
|
|
|
#<strong>perform_ldap_query</strong>(ldap, filter, attributes, base, schema_dn, scope: nil) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
70
|
|
71
|
|
72
|
|
73
|
|
74
|
|
75
|
|
76
|
|
77
|
|
78
|
|
79
|
|
80
|
|
81
|
|
82
|
|
83
|
|
84
|
|
85</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 70</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_perform_ldap_query'>perform_ldap_query</span><span class='lparen'>(</span><span class='id identifier rubyid_ldap'>ldap</span><span class='comma'>,</span> <span class='id identifier rubyid_filter'>filter</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='comma'>,</span> <span class='id identifier rubyid_base'>base</span><span class='comma'>,</span> <span class='id identifier rubyid_schema_dn'>schema_dn</span><span class='comma'>,</span> <span class='label'>scope:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_results'>results</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
|
<span class='id identifier rubyid_perform_ldap_query_streaming'>perform_ldap_query_streaming</span><span class='lparen'>(</span><span class='id identifier rubyid_ldap'>ldap</span><span class='comma'>,</span> <span class='id identifier rubyid_filter'>filter</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='comma'>,</span> <span class='id identifier rubyid_base'>base</span><span class='comma'>,</span> <span class='id identifier rubyid_schema_dn'>schema_dn</span><span class='comma'>,</span> <span class='label'>scope:</span> <span class='id identifier rubyid_scope'>scope</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_result'>result</span><span class='op'>|</span>
|
|
<span class='id identifier rubyid_results'>results</span> <span class='op'><<</span> <span class='id identifier rubyid_result'>result</span>
|
|
<span class='kw'>end</span>
|
|
|
|
<span class='id identifier rubyid_query_result_table'>query_result_table</span> <span class='op'>=</span> <span class='id identifier rubyid_ldap'>ldap</span><span class='period'>.</span><span class='id identifier rubyid_get_operation_result'>get_operation_result</span><span class='period'>.</span><span class='id identifier rubyid_table'>table</span>
|
|
<span class='id identifier rubyid_validate_result!'>validate_result!</span><span class='lparen'>(</span><span class='id identifier rubyid_query_result_table'>query_result_table</span><span class='comma'>,</span> <span class='id identifier rubyid_filter'>filter</span><span class='rparen'>)</span>
|
|
|
|
<span class='kw'>if</span> <span class='id identifier rubyid_results'>results</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_results'>results</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
|
|
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>No results found for </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filter'>filter</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
<span class='kw'>return</span> <span class='kw'>nil</span>
|
|
<span class='kw'>end</span>
|
|
|
|
<span class='id identifier rubyid_results'>results</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="perform_ldap_query_streaming-instance_method">
|
|
|
|
#<strong>perform_ldap_query_streaming</strong>(ldap, filter, attributes, base, schema_dn, scope: nil, controls: []) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
87
|
|
88
|
|
89
|
|
90
|
|
91
|
|
92
|
|
93
|
|
94
|
|
95
|
|
96
|
|
97
|
|
98
|
|
99
|
|
100
|
|
101
|
|
102
|
|
103
|
|
104
|
|
105
|
|
106
|
|
107
|
|
108</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 87</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_perform_ldap_query_streaming'>perform_ldap_query_streaming</span><span class='lparen'>(</span><span class='id identifier rubyid_ldap'>ldap</span><span class='comma'>,</span> <span class='id identifier rubyid_filter'>filter</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='comma'>,</span> <span class='id identifier rubyid_base'>base</span><span class='comma'>,</span> <span class='id identifier rubyid_schema_dn'>schema_dn</span><span class='comma'>,</span> <span class='label'>scope:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>controls:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
|
<span class='kw'>if</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_schema_dn'>schema_dn</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
|
<span class='id identifier rubyid_attribute_properties'>attribute_properties</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
|
|
<span class='kw'>else</span>
|
|
<span class='kw'>begin</span>
|
|
<span class='id identifier rubyid_attribute_properties'>attribute_properties</span> <span class='op'>=</span> <span class='id identifier rubyid_query_attributes_data'>query_attributes_data</span><span class='lparen'>(</span><span class='id identifier rubyid_ldap'>ldap</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:to_sym</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_schema_dn'>schema_dn</span><span class='rparen'>)</span>
|
|
<span class='kw'>rescue</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="../../../Exploit.html" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Remote.html" title="Msf::Exploit::Remote (class)">Remote</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../LDAP.html" title="Msf::Exploit::Remote::LDAP (module)">LDAP</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Error.html" title="Msf::Exploit::Remote::LDAP::Error (class)">Error</a></span></span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
|
<span class='id identifier rubyid_wlog'><span class='object_link'><a href="../../../../top-level-namespace.html#wlog-instance_method" title="#wlog (method)">wlog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Failed getting attribute properties: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
|
|
<span class='kw'>ensure</span>
|
|
<span class='id identifier rubyid_attribute_properties'>attribute_properties</span> <span class='op'>||=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>end</span>
|
|
|
|
<span class='id identifier rubyid_scope'>scope</span> <span class='op'>||=</span> <span class='const'>Net</span><span class='op'>::</span><span class='const'>LDAP</span><span class='op'>::</span><span class='const'>SearchScope_WholeSubtree</span>
|
|
<span class='id identifier rubyid_result_count'>result_count</span> <span class='op'>=</span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_ldap'>ldap</span><span class='period'>.</span><span class='id identifier rubyid_search'>search</span><span class='lparen'>(</span><span class='label'>base:</span> <span class='id identifier rubyid_base'>base</span><span class='comma'>,</span> <span class='label'>filter:</span> <span class='id identifier rubyid_filter'>filter</span><span class='comma'>,</span> <span class='label'>attributes:</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='comma'>,</span> <span class='label'>scope:</span> <span class='id identifier rubyid_scope'>scope</span><span class='comma'>,</span> <span class='label'>controls:</span> <span class='id identifier rubyid_controls'>controls</span><span class='comma'>,</span> <span class='label'>return_result:</span> <span class='kw'>false</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_result'>result</span><span class='op'>|</span>
|
|
<span class='id identifier rubyid_result_count'>result_count</span> <span class='op'>+=</span> <span class='int'>1</span>
|
|
<span class='kw'>yield</span> <span class='id identifier rubyid_result'>result</span><span class='comma'>,</span> <span class='id identifier rubyid_attribute_properties'>attribute_properties</span> <span class='kw'>if</span> <span class='id identifier rubyid_block_given?'>block_given?</span>
|
|
<span class='kw'>end</span>
|
|
|
|
<span class='id identifier rubyid_result_count'>result_count</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="query_attributes_data-instance_method">
|
|
|
|
#<strong>query_attributes_data</strong>(ldap, attributes, schema_dn) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
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</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 228</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_query_attributes_data'>query_attributes_data</span><span class='lparen'>(</span><span class='id identifier rubyid_ldap'>ldap</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='comma'>,</span> <span class='id identifier rubyid_schema_dn'>schema_dn</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_attribute_properties'>attribute_properties</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
|
|
|
|
<span class='id identifier rubyid_filter'>filter</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>(|</span><span class='tstring_end'>'</span></span>
|
|
<span class='id identifier rubyid_attributes'>attributes</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_key'>key</span><span class='op'>|</span>
|
|
<span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_attribute_properties'>attribute_properties</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span> <span class='comment'># Skip if we already have this one
|
|
</span> <span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_key'>key</span> <span class='op'>==</span> <span class='symbol'>:dn</span> <span class='comment'># Skip DN as it will never have a schema entry
|
|
</span>
|
|
<span class='id identifier rubyid_filter'>filter</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>(LDAPDisplayName=</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>"</span></span>
|
|
<span class='kw'>end</span>
|
|
<span class='id identifier rubyid_filter'>filter</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>)</span><span class='tstring_end'>'</span></span>
|
|
<span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_filter'>filter</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>LDAPDisplayName=</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
|
|
|
<span class='id identifier rubyid_attributes_data'>attributes_data</span> <span class='op'>=</span> <span class='id identifier rubyid_ldap'>ldap</span><span class='period'>.</span><span class='id identifier rubyid_search'>search</span><span class='lparen'>(</span><span class='label'>base:</span> <span class='id identifier rubyid_schema_dn'>schema_dn</span><span class='comma'>,</span> <span class='label'>filter:</span> <span class='id identifier rubyid_filter'>filter</span><span class='comma'>,</span> <span class='label'>attributes:</span> <span class='qsymbols_beg'>%i[</span><span class='tstring_content'>LDAPDisplayName</span><span class='words_sep'> </span><span class='tstring_content'>isSingleValued</span><span class='words_sep'> </span><span class='tstring_content'>oMSyntax</span><span class='words_sep'> </span><span class='tstring_content'>attributeSyntax</span><span class='tstring_end'>]</span></span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_validate_result!'>validate_result!</span><span class='lparen'>(</span><span class='id identifier rubyid_ldap'>ldap</span><span class='period'>.</span><span class='id identifier rubyid_get_operation_result'>get_operation_result</span><span class='rparen'>)</span>
|
|
|
|
<span class='id identifier rubyid_attributes_data'>attributes_data</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_entry'>entry</span><span class='op'>|</span>
|
|
<span class='id identifier rubyid_ldap_display_name'>ldap_display_name</span> <span class='op'>=</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='symbol'>:ldapdisplayname</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</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_downcase'>downcase</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
|
|
<span class='id identifier rubyid_attribute_properties'>attribute_properties</span><span class='lbracket'>[</span><span class='id identifier rubyid_ldap_display_name'>ldap_display_name</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lbrace'>{</span>
|
|
<span class='label'>issinglevalued:</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='symbol'>:issinglevalued</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>TRUE</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
|
<span class='label'>omsyntax:</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='symbol'>:omsyntax</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span><span class='comma'>,</span>
|
|
<span class='label'>attributesyntax:</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='symbol'>:attributesyntax</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span>
|
|
<span class='rbrace'>}</span>
|
|
<span class='kw'>end</span>
|
|
|
|
<span class='id identifier rubyid_attribute_properties'>attribute_properties</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="read_der_certificate_file-instance_method">
|
|
|
|
#<strong>read_der_certificate_file</strong>(cert) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><div class="docstring">
|
|
<div class="discussion">
|
|
|
|
<p>Read in a DER formatted certificate file and transform it into a OpenSSL::X509::Certificate object before then using that object to read the properties of the certificate and return this info as a string.</p>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
<div class="tags">
|
|
|
|
|
|
</div><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
164
|
|
165
|
|
166
|
|
167
|
|
168
|
|
169
|
|
170
|
|
171
|
|
172
|
|
173
|
|
174</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 164</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_read_der_certificate_file'>read_der_certificate_file</span><span class='lparen'>(</span><span class='id identifier rubyid_cert'>cert</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_openssl_certificate'>openssl_certificate</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>X509</span><span class='op'>::</span><span class='const'>Certificate</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_cert'>cert</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='id identifier rubyid_openssl_certificate'>openssl_certificate</span><span class='period'>.</span><span class='id identifier rubyid_version'>version</span>
|
|
<span class='id identifier rubyid_subject'>subject</span> <span class='op'>=</span> <span class='id identifier rubyid_openssl_certificate'>openssl_certificate</span><span class='period'>.</span><span class='id identifier rubyid_subject'>subject</span>
|
|
<span class='id identifier rubyid_issuer'>issuer</span> <span class='op'>=</span> <span class='id identifier rubyid_openssl_certificate'>openssl_certificate</span><span class='period'>.</span><span class='id identifier rubyid_issuer'>issuer</span>
|
|
<span class='id identifier rubyid_algorithm'>algorithm</span> <span class='op'>=</span> <span class='id identifier rubyid_openssl_certificate'>openssl_certificate</span><span class='period'>.</span><span class='id identifier rubyid_signature_algorithm'>signature_algorithm</span>
|
|
<span class='id identifier rubyid_extensions'>extensions</span> <span class='op'>=</span> <span class='id identifier rubyid_openssl_certificate'>openssl_certificate</span><span class='period'>.</span><span class='id identifier rubyid_extensions'>extensions</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'> | </span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_extensions'>extensions</span><span class='period'>.</span><span class='id identifier rubyid_strip!'>strip!</span>
|
|
<span class='id identifier rubyid_extensions'>extensions</span><span class='period'>.</span><span class='id identifier rubyid_gsub!'>gsub!</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'> \|$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='comment'># Strip whitespace and then strip trailing | from end of string.
|
|
</span> <span class='lbracket'>[</span><span class='id identifier rubyid_openssl_certificate'>openssl_certificate</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Version: 0x</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_version'>version</span><span class='embexpr_end'>}</span><span class='tstring_content'>, Subject: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_subject'>subject</span><span class='embexpr_end'>}</span><span class='tstring_content'>, Issuer: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_issuer'>issuer</span><span class='embexpr_end'>}</span><span class='tstring_content'>, Signature Algorithm: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_algorithm'>algorithm</span><span class='embexpr_end'>}</span><span class='tstring_content'>, Extensions: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_extensions'>extensions</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="run_builtin_ldap_query-instance_method">
|
|
|
|
#<strong>run_builtin_ldap_query</strong>(queryname) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
10
|
|
11
|
|
12
|
|
13
|
|
14
|
|
15
|
|
16
|
|
17
|
|
18
|
|
19
|
|
20
|
|
21
|
|
22
|
|
23
|
|
24
|
|
25
|
|
26
|
|
27
|
|
28
|
|
29
|
|
30
|
|
31</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 10</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_run_builtin_ldap_query'>run_builtin_ldap_query</span><span class='lparen'>(</span><span class='id identifier rubyid_queryname'>queryname</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_missing_username'>missing_username</span> <span class='op'>=</span> <span class='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>LDAPUsername</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
|
|
<span class='id identifier rubyid_session_missing_or_wrong_type'>session_missing_or_wrong_type</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_session'>session</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_is_a?'>is_a?</span><span class='lparen'>(</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="../../../Sessions.html" title="Msf::Sessions (module)">Sessions</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../Sessions/LDAP.html" title="Msf::Sessions::LDAP (class)">LDAP</a></span></span><span class='rparen'>)</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_bad_config'>bad_config</span> <span class='op'>=</span> <span class='id identifier rubyid_missing_username'>missing_username</span> <span class='op'>&&</span> <span class='id identifier rubyid_session_missing_or_wrong_type'>session_missing_or_wrong_type</span>
|
|
<span class='id identifier rubyid_fail_with'>fail_with</span><span class='lparen'>(</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="../../../Module.html" title="Msf::Module (class)">Module</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../Module/Failure.html#BadConfig-constant" title="Msf::Module::Failure::BadConfig (constant)">BadConfig</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Must provide a username for connecting to LDAP, or have an already existing LDAP session</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_bad_config'>bad_config</span>
|
|
|
|
<span class='id identifier rubyid_default_config_file_path'>default_config_file_path</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</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="../../../Config.html" title="Msf::Config (class)">Config</a></span></span><span class='period'>.</span><span class='id identifier rubyid_data_directory'><span class='object_link'><a href="../../../Config.html#data_directory-class_method" title="Msf::Config.data_directory (method)">data_directory</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>auxiliary</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>gather</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ldap_query</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ldap_queries_default.yaml</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_loaded_queries'>loaded_queries</span> <span class='op'>=</span> <span class='id identifier rubyid_safe_load_queries'>safe_load_queries</span><span class='lparen'>(</span><span class='id identifier rubyid_default_config_file_path'>default_config_file_path</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
|
<span class='id identifier rubyid_query'>query</span> <span class='op'>=</span> <span class='id identifier rubyid_loaded_queries'>loaded_queries</span><span class='period'>.</span><span class='id identifier rubyid_select'>select</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_entry'>entry</span><span class='op'>|</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>action</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='id identifier rubyid_queryname'>queryname</span> <span class='rbrace'>}</span>
|
|
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_ldap_query'>ldap_query</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span>
|
|
<span class='id identifier rubyid_print_line'>print_line</span>
|
|
<span class='id identifier rubyid_result_count'>result_count</span> <span class='op'>=</span> <span class='id identifier rubyid_run_ldap_query'>run_ldap_query</span><span class='lparen'>(</span><span class='id identifier rubyid_ldap_query'>ldap_query</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>filter</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_ldap_query'>ldap_query</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>attributes</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_result'>result</span><span class='op'>|</span>
|
|
<span class='kw'>yield</span> <span class='id identifier rubyid_result'>result</span>
|
|
<span class='kw'>end</span>
|
|
|
|
<span class='kw'>if</span> <span class='id identifier rubyid_result_count'>result_count</span> <span class='op'>==</span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_print_error'>print_error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>No entries could be found for </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_ldap_query'>ldap_query</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>filter</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'>!</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
<span class='kw'>else</span>
|
|
<span class='id identifier rubyid_print_line'>print_line</span>
|
|
<span class='id identifier rubyid_print_good'>print_good</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Query returned </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_result_count'>result_count</span><span class='embexpr_end'>}</span><span class='tstring_content'> </span><span class='embexpr_beg'>#{</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>result</span><span class='tstring_end'>'</span></span><span class='period'>.</span><span class='id identifier rubyid_pluralize'>pluralize</span><span class='lparen'>(</span><span class='id identifier rubyid_result_count'>result_count</span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="run_ldap_query-instance_method">
|
|
|
|
#<strong>run_ldap_query</strong>(filter_string, attributes) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
33
|
|
34
|
|
35
|
|
36
|
|
37
|
|
38
|
|
39
|
|
40
|
|
41
|
|
42
|
|
43
|
|
44
|
|
45
|
|
46
|
|
47
|
|
48
|
|
49
|
|
50
|
|
51
|
|
52
|
|
53
|
|
54
|
|
55</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 33</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_run_ldap_query'>run_ldap_query</span><span class='lparen'>(</span><span class='id identifier rubyid_filter_string'>filter_string</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
|
|
<span class='kw'>begin</span>
|
|
<span class='id identifier rubyid_ldap_connect'>ldap_connect</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_ldap'>ldap</span><span class='op'>|</span>
|
|
<span class='id identifier rubyid_validate_bind_success!'>validate_bind_success!</span><span class='lparen'>(</span><span class='id identifier rubyid_ldap'>ldap</span><span class='rparen'>)</span>
|
|
<span class='kw'>unless</span> <span class='lparen'>(</span><span class='id identifier rubyid_base_dn'>base_dn</span> <span class='op'>=</span> <span class='id identifier rubyid_ldap'>ldap</span><span class='period'>.</span><span class='id identifier rubyid_base_dn'>base_dn</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_fail_with'>fail_with</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../../../Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../Module/Failure.html#UnexpectedReply-constant" title="Msf::Module::Failure::UnexpectedReply (constant)">UnexpectedReply</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Couldn't discover base DN!</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
<span class='kw'>end</span>
|
|
|
|
<span class='id identifier rubyid_schema_dn'>schema_dn</span> <span class='op'>=</span> <span class='id identifier rubyid_ldap'>ldap</span><span class='period'>.</span><span class='id identifier rubyid_schema_dn'>schema_dn</span>
|
|
<span class='kw'>begin</span>
|
|
<span class='id identifier rubyid_filter'>filter</span> <span class='op'>=</span> <span class='const'>Net</span><span class='op'>::</span><span class='const'>LDAP</span><span class='op'>::</span><span class='const'>Filter</span><span class='period'>.</span><span class='id identifier rubyid_construct'>construct</span><span class='lparen'>(</span><span class='id identifier rubyid_filter_string'>filter_string</span><span class='rparen'>)</span>
|
|
<span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
|
<span class='id identifier rubyid_fail_with'>fail_with</span><span class='lparen'>(</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="../../../Module.html" title="Msf::Module (class)">Module</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../Module/Failure.html#BadConfig-constant" title="Msf::Module::Failure::BadConfig (constant)">BadConfig</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Could not compile the filter </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filter_string'>filter_string</span><span class='embexpr_end'>}</span><span class='tstring_content'>. Error was </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
<span class='kw'>end</span>
|
|
|
|
<span class='id identifier rubyid_result_count'>result_count</span> <span class='op'>=</span> <span class='id identifier rubyid_perform_ldap_query_streaming'>perform_ldap_query_streaming</span><span class='lparen'>(</span><span class='id identifier rubyid_ldap'>ldap</span><span class='comma'>,</span> <span class='id identifier rubyid_filter'>filter</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='comma'>,</span> <span class='id identifier rubyid_base_dn'>base_dn</span><span class='comma'>,</span> <span class='id identifier rubyid_schema_dn'>schema_dn</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_result'>result</span><span class='comma'>,</span> <span class='id identifier rubyid__attribute_properties'>_attribute_properties</span><span class='op'>|</span>
|
|
<span class='kw'>yield</span> <span class='id identifier rubyid_result'>result</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="../../../../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'>ConnectionTimeout</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
|
<span class='id identifier rubyid_fail_with'>fail_with</span><span class='lparen'>(</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="../../../Module.html" title="Msf::Module (class)">Module</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../../Module/Failure.html#Unreachable-constant" title="Msf::Module::Failure::Unreachable (constant)">Unreachable</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Could not connect. </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="run_queries_from_file-instance_method">
|
|
|
|
#<strong>run_queries_from_file</strong>(ldap, queries, schema_dn, output_format, base_dn: nil) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
368
|
|
369
|
|
370
|
|
371
|
|
372
|
|
373
|
|
374
|
|
375
|
|
376
|
|
377
|
|
378
|
|
379
|
|
380
|
|
381
|
|
382
|
|
383
|
|
384
|
|
385
|
|
386
|
|
387
|
|
388
|
|
389
|
|
390</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 368</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_run_queries_from_file'>run_queries_from_file</span><span class='lparen'>(</span><span class='id identifier rubyid_ldap'>ldap</span><span class='comma'>,</span> <span class='id identifier rubyid_queries'>queries</span><span class='comma'>,</span> <span class='id identifier rubyid_schema_dn'>schema_dn</span><span class='comma'>,</span> <span class='id identifier rubyid_output_format'>output_format</span><span class='comma'>,</span> <span class='label'>base_dn:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_base_dn'>base_dn</span> <span class='op'>||=</span> <span class='id identifier rubyid_ldap'>ldap</span><span class='period'>.</span><span class='id identifier rubyid_base_dn'>base_dn</span>
|
|
<span class='id identifier rubyid_queries'>queries</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_query'>query</span><span class='op'>|</span>
|
|
<span class='kw'>unless</span> <span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>action</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>&&</span> <span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>filter</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>&&</span> <span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>attributes</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
|
<span class='id identifier rubyid_print_warning'>print_warning</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Each query in the query file must at least contain a 'action', 'filter' and 'attributes' attribute!</span><span class='tstring_end'>"</span></span>
|
|
<span class='kw'>next</span>
|
|
<span class='kw'>end</span>
|
|
<span class='id identifier rubyid_attributes'>attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>attributes</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
|
<span class='kw'>if</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
|
|
<span class='id identifier rubyid_print_warning'>print_warning</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>At least one attribute needs to be specified per query in the query file for entries to work!</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
|
<span class='kw'>next</span>
|
|
<span class='kw'>end</span>
|
|
<span class='id identifier rubyid_filter'>filter</span> <span class='op'>=</span> <span class='const'>Net</span><span class='op'>::</span><span class='const'>LDAP</span><span class='op'>::</span><span class='const'>Filter</span><span class='period'>.</span><span class='id identifier rubyid_construct'>construct</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>filter</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_print_status'>print_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Running </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>action</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'>...</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_query_base'>query_base</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>base_dn_prefix</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>?</span> <span class='lbracket'>[</span><span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>base_dn_prefix</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_base_dn'>base_dn</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_join'><span class='object_link'><a href="../../../../top-level-namespace.html#join-instance_method" title="#join (method)">join</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>,</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_base_dn'>base_dn</span>
|
|
|
|
<span class='id identifier rubyid_result_count'>result_count</span> <span class='op'>=</span> <span class='id identifier rubyid_perform_ldap_query_streaming'>perform_ldap_query_streaming</span><span class='lparen'>(</span><span class='id identifier rubyid_ldap'>ldap</span><span class='comma'>,</span> <span class='id identifier rubyid_filter'>filter</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span><span class='comma'>,</span> <span class='id identifier rubyid_query_base'>query_base</span><span class='comma'>,</span> <span class='id identifier rubyid_schema_dn'>schema_dn</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_result'>result</span><span class='comma'>,</span> <span class='id identifier rubyid_attribute_properties'>attribute_properties</span><span class='op'>|</span>
|
|
<span class='id identifier rubyid_show_output'>show_output</span><span class='lparen'>(</span><span class='id identifier rubyid_normalize_entry'>normalize_entry</span><span class='lparen'>(</span><span class='id identifier rubyid_result'>result</span><span class='comma'>,</span> <span class='id identifier rubyid_attribute_properties'>attribute_properties</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_output_format'>output_format</span><span class='rparen'>)</span>
|
|
<span class='kw'>end</span>
|
|
|
|
<span class='id identifier rubyid_print_warning'>print_warning</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Query </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>filter</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'> from </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_query'>query</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>action</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'> didn't return any results!</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_result_count'>result_count</span> <span class='op'>==</span> <span class='int'>0</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="safe_load_queries-instance_method">
|
|
|
|
#<strong>safe_load_queries</strong>(filename) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
57
|
|
58
|
|
59
|
|
60
|
|
61
|
|
62
|
|
63
|
|
64
|
|
65
|
|
66
|
|
67
|
|
68</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 57</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_safe_load_queries'>safe_load_queries</span><span class='lparen'>(</span><span class='id identifier rubyid_filename'>filename</span><span class='rparen'>)</span>
|
|
<span class='kw'>begin</span>
|
|
<span class='id identifier rubyid_settings'>settings</span> <span class='op'>=</span> <span class='const'>YAML</span><span class='period'>.</span><span class='id identifier rubyid_safe_load'>safe_load</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_binread'>binread</span><span class='lparen'>(</span><span class='id identifier rubyid_filename'>filename</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
|
<span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
|
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../../../../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Couldn't parse </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
|
|
<span class='kw'>return</span>
|
|
<span class='kw'>end</span>
|
|
|
|
<span class='kw'>return</span> <span class='kw'>unless</span> <span class='id identifier rubyid_settings'>settings</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>queries</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span> <span class='const'>Array</span>
|
|
|
|
<span class='id identifier rubyid_settings'>settings</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>queries</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="show_output-instance_method">
|
|
|
|
#<strong>show_output</strong>(entry, output_format) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
352
|
|
353
|
|
354
|
|
355
|
|
356
|
|
357
|
|
358
|
|
359
|
|
360
|
|
361
|
|
362
|
|
363
|
|
364
|
|
365
|
|
366</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 352</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_show_output'>show_output</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='comma'>,</span> <span class='id identifier rubyid_output_format'>output_format</span><span class='rparen'>)</span>
|
|
<span class='kw'>case</span> <span class='id identifier rubyid_output_format'>output_format</span>
|
|
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>csv</span><span class='tstring_end'>'</span></span>
|
|
<span class='id identifier rubyid_output_data_csv'>output_data_csv</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='rparen'>)</span>
|
|
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>table</span><span class='tstring_end'>'</span></span>
|
|
<span class='id identifier rubyid_output_data_table'>output_data_table</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='rparen'>)</span>
|
|
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>json</span><span class='tstring_end'>'</span></span>
|
|
<span class='id identifier rubyid_output_json_data'>output_json_data</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='rparen'>)</span>
|
|
<span class='kw'>else</span>
|
|
<span class='id identifier rubyid_print_warning'>print_warning</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Invalid format: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_output_format'>output_format</span><span class='embexpr_end'>}</span><span class='tstring_content'> Supported OUTPUT_FORMAT values are csv, table and json</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
<span class='comment'># Default to table output, seems reasonable to output something if we have it rather than blow up
|
|
</span> <span class='id identifier rubyid_print_status'>print_status</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Defaulting to table output</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_output_data_table'>output_data_table</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='rparen'>)</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="method_details ">
|
|
<h3 class="signature " id="validate_result!-instance_method">
|
|
|
|
#<strong>validate_result!</strong>(operation_result) ⇒ <tt>Object</tt>
|
|
|
|
|
|
|
|
|
|
|
|
</h3><table class="source_code">
|
|
<tr>
|
|
<td>
|
|
<pre class="lines">
|
|
|
|
|
|
392
|
|
393
|
|
394
|
|
395
|
|
396
|
|
397
|
|
398
|
|
399</pre>
|
|
</td>
|
|
<td>
|
|
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/ldap/queries.rb', line 392</span>
|
|
|
|
<span class='kw'>def</span> <span class='id identifier rubyid_validate_result!'>validate_result!</span><span class='lparen'>(</span><span class='id identifier rubyid_operation_result'>operation_result</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_code'>code</span> <span class='op'>=</span> <span class='id identifier rubyid_operation_result'>operation_result</span><span class='period'>.</span><span class='id identifier rubyid_table'>table</span><span class='lbracket'>[</span><span class='symbol'>:code</span><span class='rbracket'>]</span>
|
|
<span class='kw'>if</span> <span class='id identifier rubyid_code'>code</span> <span class='op'>==</span> <span class='int'>0</span>
|
|
<span class='id identifier rubyid_dlog'><span class='object_link'><a href="../../../../top-level-namespace.html#dlog-instance_method" title="#dlog (method)">dlog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Operation was successful</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
|
<span class='kw'>else</span>
|
|
<span class='id identifier rubyid_raise'>raise</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="../../../Exploit.html" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../Remote.html" title="Msf::Exploit::Remote (class)">Remote</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../LDAP.html" title="Msf::Exploit::Remote::LDAP (module)">LDAP</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Error.html" title="Msf::Exploit::Remote::LDAP::Error (class)">Error</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Error.html#initialize-instance_method" title="Msf::Exploit::Remote::LDAP::Error#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='label'>error_code:</span> <span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='label'>operation_result:</span> <span class='id identifier rubyid_operation_result'>operation_result</span><span class='rparen'>)</span>
|
|
<span class='kw'>end</span>
|
|
<span class='kw'>end</span></pre>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="footer">
|
|
Generated on Fri May 8 17:02:06 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> |