Files
metasploit-gs/api/Msf/Exploit/Remote/HTTP/Kubernetes/AuthParser.html
T
jenkins-metasploit c3f5bd3de2 Reboot gh-pages
2026-05-08 17:08:43 +00:00

1114 lines
53 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
Class: Msf::Exploit::Remote::HTTP::Kubernetes::AuthParser
&mdash; 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::HTTP::Kubernetes::AuthParser";
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 (A)</a> &raquo;
<span class='title'><span class='object_link'><a href="../../../../../Msf.html" title="Msf (module)">Msf</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../../../Exploit.html" title="Msf::Exploit (class)">Exploit</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../../Remote.html" title="Msf::Exploit::Remote (class)">Remote</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../HTTP.html" title="Msf::Exploit::Remote::HTTP (module)">HTTP</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Kubernetes.html" title="Msf::Exploit::Remote::HTTP::Kubernetes (module)">Kubernetes</a></span></span>
&raquo;
<span class="title">AuthParser</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>Class: Msf::Exploit::Remote::HTTP::Kubernetes::AuthParser
</h1>
<div class="box_info">
<dl>
<dt>Inherits:</dt>
<dd>
<span class="inheritName">Object</span>
<ul class="fullTree">
<li>Object</li>
<li class="next">Msf::Exploit::Remote::HTTP::Kubernetes::AuthParser</li>
</ul>
<a href="#" class="inheritanceTree">show all</a>
</dd>
</dl>
<dl>
<dt>Defined in:</dt>
<dd>lib/msf/core/exploit/remote/http/kubernetes/auth_parser.rb</dd>
</dl>
</div>
<h2>Overview</h2><div class="docstring">
<div class="discussion">
<p>Parses the succinct Kubernetes authentication API response and converts it into a more consumable format</p>
</div>
</div>
<div class="tags">
</div>
<h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
<ul class="summary">
<li class="protected ">
<span class="summary_signature">
<a href="#auth_response-instance_method" title="#auth_response (instance method)">#<strong>auth_response</strong> &#x21d2; Object </a>
</span>
<span class="note title readonly">readonly</span>
<span class="note title protected">protected</span>
<span class="summary_desc"><div class='inline'>
<p>Returns the value of attribute auth_response.</p>
</div></span>
</li>
</ul>
<h2>
Instance Method Summary
<small><a href="#" class="summary_toggle">collapse</a></small>
</h2>
<ul class="summary">
<li class="protected ">
<span class="summary_signature">
<a href="#as_simple_rule-instance_method" title="#as_simple_rule (instance method)">#<strong>as_simple_rule</strong>(policy_rule) &#x21d2; Object </a>
</span>
<span class="note title protected">protected</span>
<span class="summary_desc"><div class='inline'>
<p>returns nil if its not possible to simplify this rule.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#as_table-instance_method" title="#as_table (instance method)">#<strong>as_table</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Converts the kubernetes auth response into an array of human readable table.</p>
</div></span>
</li>
<li class="protected ">
<span class="summary_signature">
<a href="#breakdown_policy_rule-instance_method" title="#breakdown_policy_rule (instance method)">#<strong>breakdown_policy_rule</strong>(policy_rule) &#x21d2; Object </a>
</span>
<span class="note title protected">protected</span>
<span class="summary_desc"><div class='inline'>
<p>Converts the original policy rule into its smaller policy rules, where there is at most one verb for each rule.</p>
</div></span>
</li>
<li class="protected ">
<span class="summary_signature">
<a href="#combine_resource_groups-instance_method" title="#combine_resource_groups (instance method)">#<strong>combine_resource_groups</strong>(resources, groups) &#x21d2; Object </a>
</span>
<span class="note title protected">protected</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="protected ">
<span class="summary_signature">
<a href="#compact_policy_rules-instance_method" title="#compact_policy_rules (instance method)">#<strong>compact_policy_rules</strong>(policy_rules) &#x21d2; Object </a>
</span>
<span class="note title protected">protected</span>
<span class="summary_desc"><div class='inline'>
<p>Merge policy rules together, by joining rules that are associated with the same resource, but different verbs.</p>
</div></span>
</li>
<li class="protected ">
<span class="summary_signature">
<a href="#find_policy-instance_method" title="#find_policy (instance method)">#<strong>find_policy</strong>(existing_simple_rules, simple_rule) &#x21d2; Object </a>
</span>
<span class="note title protected">protected</span>
<span class="summary_desc"><div class='inline'>
<p>Finds the original policy rule associated with a simplified rule.</p>
</div></span>
</li>
<li class="protected ">
<span class="summary_signature">
<a href="#human_readable_policy_rule-instance_method" title="#human_readable_policy_rule (instance method)">#<strong>human_readable_policy_rule</strong>(rule) &#x21d2; Object </a>
</span>
<span class="note title protected">protected</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(auth_response) &#x21d2; AuthParser </a>
</span>
<span class="note title constructor">constructor</span>
<span class="summary_desc"><div class='inline'>
<p>A new instance of AuthParser.</p>
</div></span>
</li>
<li class="protected ">
<span class="summary_signature">
<a href="#policy_rule_for-instance_method" title="#policy_rule_for (instance method)">#<strong>policy_rule_for</strong>(apiGroups: [], resources: [], verbs: [], resourceNames: [], nonResourceURLs: []) &#x21d2; Object </a>
</span>
<span class="note title protected">protected</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#rules-instance_method" title="#rules (instance method)">#<strong>rules</strong> &#x21d2; Object </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Extracts the list of rules associated with a kubernetes auth response.</p>
</div></span>
</li>
</ul>
<div id="constructor_details" class="method_details_list">
<h2>Constructor Details</h2>
<div class="method_details first">
<h3 class="signature first" id="initialize-instance_method">
#<strong>initialize</strong>(auth_response) &#x21d2; <tt><span class='object_link'><a href="" title="Msf::Exploit::Remote::HTTP::Kubernetes::AuthParser (class)">AuthParser</a></span></tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns a new instance of AuthParser.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
6
7
8</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/http/kubernetes/auth_parser.rb', line 6</span>
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_auth_response'>auth_response</span><span class='rparen'>)</span>
<span class='ivar'>@auth_response</span> <span class='op'>=</span> <span class='id identifier rubyid_auth_response'>auth_response</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
</div>
<div id="instance_attr_details" class="attr_details">
<h2>Instance Attribute Details</h2>
<span id=""></span>
<div class="method_details first">
<h3 class="signature first" id="auth_response-instance_method">
#<strong>auth_response</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly, protected)</span>
</h3><div class="docstring">
<div class="discussion">
<p>Returns the value of attribute auth_response.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
42
43
44</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/http/kubernetes/auth_parser.rb', line 42</span>
<span class='kw'>def</span> <span class='id identifier rubyid_auth_response'>auth_response</span>
<span class='ivar'>@auth_response</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
</div>
<div id="instance_method_details" class="method_details_list">
<h2>Instance Method Details</h2>
<div class="method_details first">
<h3 class="signature first" id="as_simple_rule-instance_method">
#<strong>as_simple_rule</strong>(policy_rule) &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
</h3><div class="docstring">
<div class="discussion">
<p>returns nil if its not possible to simplify this rule</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/http/kubernetes/auth_parser.rb', line 138</span>
<span class='kw'>def</span> <span class='id identifier rubyid_as_simple_rule'>as_simple_rule</span><span class='lparen'>(</span><span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='lbracket'>[</span><span class='symbol'>:resourceNames</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span> <span class='op'>&gt;</span> <span class='int'>1</span> <span class='op'>||</span> <span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='lbracket'>[</span><span class='symbol'>:nonResourceURLs</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span> <span class='op'>&gt;</span> <span class='int'>0</span>
<span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='lbracket'>[</span><span class='symbol'>:apiGroups</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span> <span class='op'>!=</span> <span class='int'>1</span> <span class='op'>||</span> <span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='lbracket'>[</span><span class='symbol'>:resources</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span> <span class='op'>!=</span> <span class='int'>1</span>
<span class='id identifier rubyid_allowed_keys'>allowed_keys</span> <span class='op'>=</span> <span class='qsymbols_beg'>%i[</span><span class='tstring_content'>apiGroups</span><span class='words_sep'> </span><span class='tstring_content'>resources</span><span class='words_sep'> </span><span class='tstring_content'>verbs</span><span class='words_sep'> </span><span class='tstring_content'>resourceNames</span><span class='words_sep'> </span><span class='tstring_content'>nonResourceURLs</span><span class='tstring_end'>]</span></span>
<span class='id identifier rubyid_unsupported_keys'>unsupported_keys</span> <span class='op'>=</span> <span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span> <span class='op'>-</span> <span class='id identifier rubyid_allowed_keys'>allowed_keys</span>
<span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_unsupported_keys'>unsupported_keys</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span>
<span class='id identifier rubyid_simple_rule'>simple_rule</span> <span class='op'>=</span> <span class='lbrace'>{</span>
<span class='label'>group:</span> <span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='lbracket'>[</span><span class='symbol'>:apiGroups</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span>
<span class='label'>resource:</span> <span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='lbracket'>[</span><span class='symbol'>:resources</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'>if</span> <span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='lbracket'>[</span><span class='symbol'>:resourceNames</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span>
<span class='id identifier rubyid_simple_rule'>simple_rule</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span>
<span class='lbrace'>{</span>
<span class='label'>resourceName:</span> <span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='lbracket'>[</span><span class='symbol'>:resourceNames</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span>
<span class='rbrace'>}</span>
<span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_simple_rule'>simple_rule</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="as_table-instance_method">
#<strong>as_table</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Converts the kubernetes auth response into an array of human readable table</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
26
27
28
29
30
31
32
33
34
35
36
37
38</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/http/kubernetes/auth_parser.rb', line 26</span>
<span class='kw'>def</span> <span class='id identifier rubyid_as_table'>as_table</span>
<span class='id identifier rubyid_columns'>columns</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Resources</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Non-Resource URLs</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Resource Names</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Verbs</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='id identifier rubyid_rows'>rows</span> <span class='op'>=</span> <span class='id identifier rubyid_rules'>rules</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_rule'>rule</span><span class='op'>|</span>
<span class='lbracket'>[</span>
<span class='id identifier rubyid_combine_resource_groups'>combine_resource_groups</span><span class='lparen'>(</span><span class='id identifier rubyid_rule'>rule</span><span class='lbracket'>[</span><span class='symbol'>:resources</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_rule'>rule</span><span class='lbracket'>[</span><span class='symbol'>:apiGroups</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='comma'>,</span>
<span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>[</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_rule'>rule</span><span class='lbracket'>[</span><span class='symbol'>:nonResourceURLs</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'>&#39;</span><span class='tstring_content'> </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>]</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
<span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>[</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_rule'>rule</span><span class='lbracket'>[</span><span class='symbol'>:resourceNames</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'>&#39;</span><span class='tstring_content'> </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>]</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
<span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>[</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_rule'>rule</span><span class='lbracket'>[</span><span class='symbol'>:verbs</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'>&#39;</span><span class='tstring_content'> </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>]</span><span class='tstring_end'>&quot;</span></span>
<span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='lbrace'>{</span> <span class='label'>columns:</span> <span class='id identifier rubyid_columns'>columns</span><span class='comma'>,</span> <span class='label'>rows:</span> <span class='id identifier rubyid_rows'>rows</span> <span class='rbrace'>}</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="breakdown_policy_rule-instance_method">
#<strong>breakdown_policy_rule</strong>(policy_rule) &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
</h3><div class="docstring">
<div class="discussion">
<p>Converts the original policy rule into its smaller policy rules, where there is at most one verb for each rule</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/http/kubernetes/auth_parser.rb', line 56</span>
<span class='kw'>def</span> <span class='id identifier rubyid_breakdown_policy_rule'>breakdown_policy_rule</span><span class='lparen'>(</span><span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='rparen'>)</span>
<span class='id identifier rubyid_sub_rules'>sub_rules</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='symbol'>:apiGroups</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_group'>group</span><span class='op'>|</span>
<span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='symbol'>:resources</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_resource'>resource</span><span class='op'>|</span>
<span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='symbol'>:verbs</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_verb'>verb</span><span class='op'>|</span>
<span class='kw'>if</span> <span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='symbol'>:resourceNames</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span>
<span class='id identifier rubyid_sub_rules'>sub_rules</span> <span class='op'>+=</span> <span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='lbracket'>[</span><span class='symbol'>:resourceNames</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_resource_name'>resource_name</span><span class='op'>|</span>
<span class='id identifier rubyid_policy_rule_for'>policy_rule_for</span><span class='lparen'>(</span>
<span class='label'>apiGroups:</span> <span class='lbracket'>[</span><span class='id identifier rubyid_group'>group</span><span class='rbracket'>]</span><span class='comma'>,</span>
<span class='label'>resources:</span> <span class='lbracket'>[</span><span class='id identifier rubyid_resource'>resource</span><span class='rbracket'>]</span><span class='comma'>,</span>
<span class='label'>verbs:</span> <span class='lbracket'>[</span><span class='id identifier rubyid_verb'>verb</span><span class='rbracket'>]</span><span class='comma'>,</span>
<span class='label'>resourceNames:</span> <span class='lbracket'>[</span><span class='id identifier rubyid_resource_name'>resource_name</span><span class='rbracket'>]</span>
<span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_sub_rules'>sub_rules</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_policy_rule_for'>policy_rule_for</span><span class='lparen'>(</span>
<span class='label'>apiGroups:</span> <span class='lbracket'>[</span><span class='id identifier rubyid_group'>group</span><span class='rbracket'>]</span><span class='comma'>,</span>
<span class='label'>resources:</span> <span class='lbracket'>[</span><span class='id identifier rubyid_resource'>resource</span><span class='rbracket'>]</span><span class='comma'>,</span>
<span class='label'>verbs:</span> <span class='lbracket'>[</span><span class='id identifier rubyid_verb'>verb</span><span class='rbracket'>]</span>
<span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_sub_rules'>sub_rules</span> <span class='op'>+=</span> <span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='symbol'>:nonResourceURLs</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_flat_map'>flat_map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_non_resource_url'>non_resource_url</span><span class='op'>|</span>
<span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='lbracket'>[</span><span class='symbol'>:verbs</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_verb'>verb</span><span class='op'>|</span>
<span class='id identifier rubyid_policy_rule_for'>policy_rule_for</span><span class='lparen'>(</span>
<span class='label'>nonResourceURLs:</span> <span class='lbracket'>[</span><span class='id identifier rubyid_non_resource_url'>non_resource_url</span><span class='rbracket'>]</span><span class='comma'>,</span>
<span class='label'>verbs:</span> <span class='lbracket'>[</span><span class='id identifier rubyid_verb'>verb</span><span class='rbracket'>]</span>
<span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_sub_rules'>sub_rules</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="combine_resource_groups-instance_method">
#<strong>combine_resource_groups</strong>(resources, groups) &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/http/kubernetes/auth_parser.rb', line 174</span>
<span class='kw'>def</span> <span class='id identifier rubyid_combine_resource_groups'>combine_resource_groups</span><span class='lparen'>(</span><span class='id identifier rubyid_resources'>resources</span><span class='comma'>,</span> <span class='id identifier rubyid_groups'>groups</span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_resources'>resources</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
<span class='id identifier rubyid_parts'>parts</span> <span class='op'>=</span> <span class='id identifier rubyid_resources'>resources</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'>&#39;</span><span class='tstring_content'>/</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='int'>2</span><span class='rparen'>)</span>
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_parts'>parts</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span>
<span class='kw'>if</span> <span class='id identifier rubyid_groups'>groups</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span> <span class='op'>&gt;</span> <span class='int'>0</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_groups'>groups</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'>&#39;</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_result'>result</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>.</span><span class='tstring_end'>&#39;</span></span> <span class='op'>+</span> <span class='id identifier rubyid_groups'>groups</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='kw'>if</span> <span class='id identifier rubyid_parts'>parts</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span> <span class='op'>==</span> <span class='int'>2</span>
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_result'>result</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>/</span><span class='tstring_end'>&#39;</span></span> <span class='op'>+</span> <span class='id identifier rubyid_parts'>parts</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_result'>result</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="compact_policy_rules-instance_method">
#<strong>compact_policy_rules</strong>(policy_rules) &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
</h3><div class="docstring">
<div class="discussion">
<p>Merge policy rules together, by joining rules that are associated with the same resource, but different verbs</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/http/kubernetes/auth_parser.rb', line 114</span>
<span class='kw'>def</span> <span class='id identifier rubyid_compact_policy_rules'>compact_policy_rules</span><span class='lparen'>(</span><span class='id identifier rubyid_policy_rules'>policy_rules</span><span class='rparen'>)</span>
<span class='id identifier rubyid_compact_rules'>compact_rules</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='id identifier rubyid_simple_rules'>simple_rules</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
<span class='id identifier rubyid_policy_rules'>policy_rules</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_policy_rule'>policy_rule</span><span class='op'>|</span>
<span class='id identifier rubyid_simple_rule'>simple_rule</span> <span class='op'>=</span> <span class='id identifier rubyid_as_simple_rule'>as_simple_rule</span><span class='lparen'>(</span><span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_simple_rule'>simple_rule</span>
<span class='id identifier rubyid_existing_rule'>existing_rule</span> <span class='op'>=</span> <span class='id identifier rubyid_find_policy'>find_policy</span><span class='lparen'>(</span><span class='id identifier rubyid_simple_rules'>simple_rules</span><span class='comma'>,</span> <span class='id identifier rubyid_simple_rule'>simple_rule</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_existing_rule'>existing_rule</span>
<span class='id identifier rubyid_existing_rule'>existing_rule</span><span class='lbracket'>[</span><span class='symbol'>:verbs</span><span class='rbracket'>]</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='id identifier rubyid_existing_rule'>existing_rule</span><span class='lbracket'>[</span><span class='symbol'>:verbs</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_existing_rule'>existing_rule</span><span class='lbracket'>[</span><span class='symbol'>:verbs</span><span class='rbracket'>]</span> <span class='op'>+</span> <span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='lbracket'>[</span><span class='symbol'>:verbs</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_simple_rules'>simple_rules</span><span class='lbracket'>[</span><span class='id identifier rubyid_simple_rule'>simple_rule</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='period'>.</span><span class='id identifier rubyid_clone'>clone</span>
<span class='kw'>end</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_compact_rules'>compact_rules</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_policy_rule'>policy_rule</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_compact_rules'>compact_rules</span> <span class='op'>+=</span> <span class='id identifier rubyid_simple_rules'>simple_rules</span><span class='period'>.</span><span class='id identifier rubyid_values'>values</span>
<span class='id identifier rubyid_compact_rules'>compact_rules</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="find_policy-instance_method">
#<strong>find_policy</strong>(existing_simple_rules, simple_rule) &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
</h3><div class="docstring">
<div class="discussion">
<p>Finds the original policy rule associated with a simplified rule</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/http/kubernetes/auth_parser.rb', line 94</span>
<span class='kw'>def</span> <span class='id identifier rubyid_find_policy'>find_policy</span><span class='lparen'>(</span><span class='id identifier rubyid_existing_simple_rules'>existing_simple_rules</span><span class='comma'>,</span> <span class='id identifier rubyid_simple_rule'>simple_rule</span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_simple_rule'>simple_rule</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
<span class='id identifier rubyid_existing_simple_rules'>existing_simple_rules</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_existing_simple_rule'>existing_simple_rule</span><span class='comma'>,</span> <span class='id identifier rubyid_policy'>policy</span><span class='op'>|</span>
<span class='id identifier rubyid_is_match'>is_match</span> <span class='op'>=</span> <span class='lparen'>(</span>
<span class='id identifier rubyid_existing_simple_rule'>existing_simple_rule</span><span class='lbracket'>[</span><span class='symbol'>:group</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='id identifier rubyid_simple_rule'>simple_rule</span><span class='lbracket'>[</span><span class='symbol'>:group</span><span class='rbracket'>]</span> <span class='op'>&amp;&amp;</span>
<span class='id identifier rubyid_existing_simple_rule'>existing_simple_rule</span><span class='lbracket'>[</span><span class='symbol'>:resource</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='id identifier rubyid_simple_rule'>simple_rule</span><span class='lbracket'>[</span><span class='symbol'>:resource</span><span class='rbracket'>]</span> <span class='op'>&amp;&amp;</span>
<span class='id identifier rubyid_existing_simple_rule'>existing_simple_rule</span><span class='lbracket'>[</span><span class='symbol'>:resourceName</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='id identifier rubyid_simple_rule'>simple_rule</span><span class='lbracket'>[</span><span class='symbol'>:resourceName</span><span class='rbracket'>]</span>
<span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_is_match'>is_match</span>
<span class='kw'>return</span> <span class='id identifier rubyid_policy'>policy</span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='kw'>nil</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="human_readable_policy_rule-instance_method">
#<strong>human_readable_policy_rule</strong>(rule) &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
162
163
164
165
166
167
168
169
170
171
172</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/http/kubernetes/auth_parser.rb', line 162</span>
<span class='kw'>def</span> <span class='id identifier rubyid_human_readable_policy_rule'>human_readable_policy_rule</span><span class='lparen'>(</span><span class='id identifier rubyid_rule'>rule</span><span class='rparen'>)</span>
<span class='id identifier rubyid_parts'>parts</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='id identifier rubyid_parts'>parts</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>APIGroups:[</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_rule'>rule</span><span class='lbracket'>[</span><span class='symbol'>:apiGroups</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'>&#39;</span><span class='tstring_content'> </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>]</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_rule'>rule</span><span class='lbracket'>[</span><span class='symbol'>:apiGroups</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span>
<span class='id identifier rubyid_parts'>parts</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Resources:[</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_rule'>rule</span><span class='lbracket'>[</span><span class='symbol'>:resources</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'>&#39;</span><span class='tstring_content'> </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>]</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_rule'>rule</span><span class='lbracket'>[</span><span class='symbol'>:resources</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span>
<span class='id identifier rubyid_parts'>parts</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>NonResourceURLs:[</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_rule'>rule</span><span class='lbracket'>[</span><span class='symbol'>:nonResourceURLs</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'>&#39;</span><span class='tstring_content'> </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>]</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_rule'>rule</span><span class='lbracket'>[</span><span class='symbol'>:nonResourceURLs</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span>
<span class='id identifier rubyid_parts'>parts</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ResourceNames:[</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_rule'>rule</span><span class='lbracket'>[</span><span class='symbol'>:resourceNames</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'>&#39;</span><span class='tstring_content'> </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>]</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_rule'>rule</span><span class='lbracket'>[</span><span class='symbol'>:resourceNames</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span>
<span class='id identifier rubyid_parts'>parts</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Verbs:[</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_rule'>rule</span><span class='lbracket'>[</span><span class='symbol'>:verbs</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'>&#39;</span><span class='tstring_content'> </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>]</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_rule'>rule</span><span class='lbracket'>[</span><span class='symbol'>:verbs</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span>
<span class='id identifier rubyid_parts'>parts</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>, </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="policy_rule_for-instance_method">
#<strong>policy_rule_for</strong>(apiGroups: [], resources: [], verbs: [], resourceNames: [], nonResourceURLs: []) &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
</h3><table class="source_code">
<tr>
<td>
<pre class="lines">
44
45
46
47
48
49
50
51
52</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/http/kubernetes/auth_parser.rb', line 44</span>
<span class='kw'>def</span> <span class='id identifier rubyid_policy_rule_for'>policy_rule_for</span><span class='lparen'>(</span><span class='label'>apiGroups:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='label'>resources:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='label'>verbs:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='label'>resourceNames:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='label'>nonResourceURLs:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='lbrace'>{</span>
<span class='label'>apiGroups:</span> <span class='id identifier rubyid_apiGroups'>apiGroups</span><span class='comma'>,</span>
<span class='label'>resources:</span> <span class='id identifier rubyid_resources'>resources</span><span class='comma'>,</span>
<span class='label'>verbs:</span> <span class='id identifier rubyid_verbs'>verbs</span><span class='comma'>,</span>
<span class='label'>resourceNames:</span> <span class='id identifier rubyid_resourceNames'>resourceNames</span><span class='comma'>,</span>
<span class='label'>nonResourceURLs:</span> <span class='id identifier rubyid_nonResourceURLs'>nonResourceURLs</span>
<span class='rbrace'>}</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="rules-instance_method">
#<strong>rules</strong> &#x21d2; <tt>Object</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Extracts the list of rules associated with a kubernetes auth response</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
11
12
13
14
15
16
17
18
19
20
21
22
23</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/remote/http/kubernetes/auth_parser.rb', line 11</span>
<span class='kw'>def</span> <span class='id identifier rubyid_rules'>rules</span>
<span class='id identifier rubyid_resource_rules'>resource_rules</span> <span class='op'>=</span> <span class='id identifier rubyid_auth_response'>auth_response</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='symbol'>:status</span><span class='comma'>,</span> <span class='symbol'>:resourceRules</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='id identifier rubyid_non_resource_rules'>non_resource_rules</span> <span class='op'>=</span> <span class='id identifier rubyid_auth_response'>auth_response</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='symbol'>:status</span><span class='comma'>,</span> <span class='symbol'>:nonResourceRules</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='id identifier rubyid_policy_rules'>policy_rules</span> <span class='op'>=</span> <span class='id identifier rubyid_resource_rules'>resource_rules</span> <span class='op'>+</span> <span class='id identifier rubyid_non_resource_rules'>non_resource_rules</span>
<span class='id identifier rubyid_broke_down_policy_rules'>broke_down_policy_rules</span> <span class='op'>=</span> <span class='id identifier rubyid_policy_rules'>policy_rules</span><span class='period'>.</span><span class='id identifier rubyid_flat_map'>flat_map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='op'>|</span>
<span class='id identifier rubyid_breakdown_policy_rule'>breakdown_policy_rule</span><span class='lparen'>(</span><span class='id identifier rubyid_policy_rule'>policy_rule</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_compacted_rules'>compacted_rules</span> <span class='op'>=</span> <span class='id identifier rubyid_compact_policy_rules'>compact_policy_rules</span><span class='lparen'>(</span><span class='id identifier rubyid_broke_down_policy_rules'>broke_down_policy_rules</span><span class='rparen'>)</span>
<span class='id identifier rubyid_sorted_rules'>sorted_rules</span> <span class='op'>=</span> <span class='id identifier rubyid_compacted_rules'>compacted_rules</span><span class='period'>.</span><span class='id identifier rubyid_sort_by'>sort_by</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rule'>rule</span><span class='op'>|</span> <span class='id identifier rubyid_human_readable_policy_rule'>human_readable_policy_rule</span><span class='lparen'>(</span><span class='id identifier rubyid_rule'>rule</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
<span class='id identifier rubyid_sorted_rules'>sorted_rules</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
</div>
</div>
<div id="footer">
Generated on Fri May 8 17:03:47 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>