Reboot gh-pages
This commit is contained in:
@@ -0,0 +1,929 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>
|
||||
Module: Msf::Exploit::Java
|
||||
|
||||
— 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::Java";
|
||||
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 (J)</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">Java</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::Java
|
||||
|
||||
|
||||
|
||||
</h1>
|
||||
<div class="box_info">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dl>
|
||||
<dt>Included in:</dt>
|
||||
<dd><span class='object_link'><a href="Remote/JndiInjection.html" title="Msf::Exploit::Remote::JndiInjection (module)">Remote::JndiInjection</a></span></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
<dl>
|
||||
<dt>Defined in:</dt>
|
||||
<dd>lib/msf/core/exploit/java.rb</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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="#build_jar-instance_method" title="#build_jar (instance method)">#<strong>build_jar</strong>(output_jar, in_files) ⇒ Object </a>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="summary_desc"><div class='inline'></div></span>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li class="public ">
|
||||
<span class="summary_signature">
|
||||
|
||||
<a href="#compile-instance_method" title="#compile (instance method)">#<strong>compile</strong>(classnames, codez, compile_options = nil) ⇒ Object </a>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="summary_desc"><div class='inline'></div></span>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li class="public ">
|
||||
<span class="summary_signature">
|
||||
|
||||
<a href="#init_jvm-instance_method" title="#init_jvm (instance method)">#<strong>init_jvm</strong>(jvmoptions = nil) ⇒ Object </a>
|
||||
|
||||
|
||||
|
||||
</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>(info = {}) ⇒ Object </a>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="summary_desc"><div class='inline'></div></span>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li class="public ">
|
||||
<span class="summary_signature">
|
||||
|
||||
<a href="#query_jvm-instance_method" title="#query_jvm (instance method)">#<strong>query_jvm</strong> ⇒ Object </a>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="summary_desc"><div class='inline'></div></span>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li class="public ">
|
||||
<span class="summary_signature">
|
||||
|
||||
<a href="#save_to_file-instance_method" title="#save_to_file (instance method)">#<strong>save_to_file</strong>(classnames, codez, location) ⇒ Object </a>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="summary_desc"><div class='inline'></div></span>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li class="public ">
|
||||
<span class="summary_signature">
|
||||
|
||||
<a href="#serialized_class_from_jar-instance_method" title="#serialized_class_from_jar (instance method)">#<strong>serialized_class_from_jar</strong>(jar, ser_class) ⇒ String </a>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="summary_desc"><div class='inline'>
|
||||
<p>Create a Java-natively-serialized object for use in Ruby.</p>
|
||||
</div></span>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li class="public ">
|
||||
<span class="summary_signature">
|
||||
|
||||
<a href="#sign_jar-instance_method" title="#sign_jar (instance method)">#<strong>sign_jar</strong>(cert_cn, unsiged_jar, signed_jar, cert_alias = "signFiles", msf_keystore = "msfkeystore", msf_store_pass = "msfstorepass", msf_key_pass = "msfkeypass") ⇒ Object </a>
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="summary_desc"><div class='inline'>
|
||||
<p><a href="http://www.defcon.org/images/defcon-17/dc-17-presentations/defcon-17-valsmith-metaphish.pdf">www.defcon.org/images/defcon-17/dc-17-presentations/defcon-17-valsmith-metaphish.pdf</a>.</p>
|
||||
</div></span>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="instance_method_details" class="method_details_list">
|
||||
<h2>Instance Method Details</h2>
|
||||
|
||||
|
||||
<div class="method_details first">
|
||||
<h3 class="signature first" id="build_jar-instance_method">
|
||||
|
||||
#<strong>build_jar</strong>(output_jar, in_files) ⇒ <tt>Object</tt>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</h3><table class="source_code">
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="lines">
|
||||
|
||||
|
||||
127
|
||||
128
|
||||
129
|
||||
130
|
||||
131
|
||||
132
|
||||
133
|
||||
134
|
||||
135
|
||||
136
|
||||
137
|
||||
138
|
||||
139
|
||||
140
|
||||
141
|
||||
142
|
||||
143</pre>
|
||||
</td>
|
||||
<td>
|
||||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/java.rb', line 127</span>
|
||||
|
||||
<span class='kw'>def</span> <span class='id identifier rubyid_build_jar'>build_jar</span><span class='lparen'>(</span><span class='id identifier rubyid_output_jar'>output_jar</span><span class='comma'>,</span> <span class='id identifier rubyid_in_files'>in_files</span><span class='rparen'>)</span>
|
||||
<span class='kw'>if</span> <span class='id identifier rubyid_output_jar'>output_jar</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>!=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_end'>"</span></span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>||</span> <span class='id identifier rubyid_in_files'>in_files</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>!=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span>
|
||||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Building a jar requires an output_jar and an Array of in_files.</span><span class='tstring_end'>"</span></span>
|
||||
<span class='kw'>end</span>
|
||||
|
||||
<span class='comment'># Add paths
|
||||
</span> <span class='id identifier rubyid_in_files'>in_files</span> <span class='op'>=</span> <span class='id identifier rubyid_in_files'>in_files</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_file'>file</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='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>JavaCache</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
|
||||
|
||||
<span class='id identifier rubyid_create_jar_klass'>create_jar_klass</span> <span class='op'>=</span> <span class='const'>Rjb</span><span class='op'>::</span><span class='id identifier rubyid_import'>import</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>javaCompile.CreateJarFile</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_file_class'>file_class</span> <span class='op'>=</span> <span class='const'>Rjb</span><span class='op'>::</span><span class='id identifier rubyid_import'>import</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>java.io.File</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||||
|
||||
<span class='id identifier rubyid_file_out_jar'>file_out_jar</span> <span class='op'>=</span> <span class='id identifier rubyid_file_class'>file_class</span><span class='period'>.</span><span class='id identifier rubyid_new_with_sig'>new_with_sig</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Ljava.lang.String;</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</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'>JavaCache</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_output_jar'>output_jar</span><span class='rparen'>)</span> <span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_files_in'>files_in</span> <span class='op'>=</span> <span class='const'>Array</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
||||
|
||||
<span class='id identifier rubyid_in_files'>in_files</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_file'>file</span><span class='op'>|</span> <span class='id identifier rubyid_files_in'>files_in</span> <span class='op'><<</span> <span class='id identifier rubyid_file_class'>file_class</span><span class='period'>.</span><span class='id identifier rubyid_new_with_sig'>new_with_sig</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Ljava.lang.String;</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
|
||||
<span class='id identifier rubyid_create_jar_klass'>create_jar_klass</span><span class='period'>.</span><span class='id identifier rubyid__invoke'>_invoke</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>createJarArchive</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Ljava.io.File;[Ljava.io.File;</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='id identifier rubyid_file_out_jar'>file_out_jar</span><span class='comma'>,</span> <span class='id identifier rubyid_files_in'>files_in</span><span class='rparen'>)</span>
|
||||
<span class='kw'>end</span></pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="method_details ">
|
||||
<h3 class="signature " id="compile-instance_method">
|
||||
|
||||
#<strong>compile</strong>(classnames, codez, compile_options = nil) ⇒ <tt>Object</tt>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</h3><table class="source_code">
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="lines">
|
||||
|
||||
|
||||
83
|
||||
84
|
||||
85
|
||||
86
|
||||
87
|
||||
88
|
||||
89
|
||||
90
|
||||
91
|
||||
92
|
||||
93
|
||||
94
|
||||
95
|
||||
96
|
||||
97
|
||||
98
|
||||
99
|
||||
100
|
||||
101
|
||||
102
|
||||
103
|
||||
104
|
||||
105
|
||||
106
|
||||
107
|
||||
108
|
||||
109
|
||||
110
|
||||
111
|
||||
112
|
||||
113
|
||||
114
|
||||
115
|
||||
116
|
||||
117
|
||||
118
|
||||
119
|
||||
120
|
||||
121
|
||||
122
|
||||
123
|
||||
124
|
||||
125</pre>
|
||||
</td>
|
||||
<td>
|
||||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/java.rb', line 83</span>
|
||||
|
||||
<span class='kw'>def</span> <span class='id identifier rubyid_compile'>compile</span><span class='lparen'>(</span><span class='id identifier rubyid_classnames'>classnames</span><span class='comma'>,</span> <span class='id identifier rubyid_codez'>codez</span><span class='comma'>,</span> <span class='id identifier rubyid_compile_options'>compile_options</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
|
||||
<span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@rjb_loaded</span> <span class='kw'>or</span> <span class='op'>!</span><span class='ivar'>@jvm_init</span>
|
||||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Could not load rjb and/or the JVM: </span><span class='tstring_end'>"</span></span> <span class='op'>+</span> <span class='ivar'>@java_error</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
|
||||
<span class='kw'>end</span>
|
||||
|
||||
<span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_compile_options'>compile_options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Array</span><span class='rparen'>)</span> <span class='op'>&&</span> <span class='id identifier rubyid_compile_options'>compile_options</span>
|
||||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Compiler options must be of type Array.</span><span class='tstring_end'>"</span></span>
|
||||
<span class='kw'>end</span>
|
||||
|
||||
<span class='id identifier rubyid_compile_options'>compile_options</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='id identifier rubyid_compile_options'>compile_options</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
||||
|
||||
<span class='comment'># Create the directory if it doesn't exist
|
||||
</span> <span class='const'>Dir</span><span class='period'>.</span><span class='id identifier rubyid_mkdir'>mkdir</span><span class='lparen'>(</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'>JavaCache</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_exist?'>exist?</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'>JavaCache</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||||
|
||||
<span class='comment'># For compatibility, some exploits need to have the target and source version
|
||||
</span> <span class='comment'># set to a previous JRE version.
|
||||
</span> <span class='id identifier rubyid_std_compiler_opts'>std_compiler_opts</span> <span class='op'>=</span> <span class='lbracket'>[</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>-target</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>1.3</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>-source</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>1.3</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>-d</span><span class='tstring_end'>"</span></span><span class='comma'>,</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'>JavaCache</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='rbracket'>]</span>
|
||||
|
||||
<span class='id identifier rubyid_compile_options'>compile_options</span> <span class='op'>+=</span> <span class='id identifier rubyid_std_compiler_opts'>std_compiler_opts</span>
|
||||
|
||||
<span class='id identifier rubyid_java_compiler_klass'>java_compiler_klass</span> <span class='op'>=</span> <span class='const'>Rjb</span><span class='op'>::</span><span class='id identifier rubyid_import'>import</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>javaCompile.CompileSourceInMemory</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||||
|
||||
<span class='comment'># If we were passed arrays
|
||||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_classnames'>classnames</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>&&</span> <span class='id identifier rubyid_codez'>codez</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span>
|
||||
<span class='comment'># default compile class
|
||||
</span> <span class='kw'>begin</span>
|
||||
<span class='comment'># Same as java_compiler_klass.CompileFromMemory( String[] classnames,
|
||||
</span> <span class='comment'># String[] codez, String[] compilerOptions)
|
||||
</span> <span class='id identifier rubyid_success'>success</span> <span class='op'>=</span> <span class='id identifier rubyid_java_compiler_klass'>java_compiler_klass</span><span class='period'>.</span><span class='id identifier rubyid__invoke'>_invoke</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>CompileFromMemory</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
||||
<span class='comment'># Signature explained: [ means array, Lpath.to.object; means object
|
||||
</span> <span class='comment'># Thus, this reads as call the method with 3 String[] args.
|
||||
</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>[Ljava.lang.String;[Ljava.lang.String;[Ljava.lang.String;</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
||||
<span class='id identifier rubyid_classnames'>classnames</span><span class='comma'>,</span> <span class='id identifier rubyid_codez'>codez</span><span class='comma'>,</span> <span class='id identifier rubyid_compile_options'>compile_options</span><span class='rparen'>)</span>
|
||||
<span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="../Exception.html" title="Msf::Exception (module)">Exception</a></span></span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
||||
<span class='id identifier rubyid_print_error'>print_error</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Received unknown error: </span><span class='tstring_end'>"</span></span> <span class='op'>+</span> <span class='id identifier rubyid_e'>e</span>
|
||||
<span class='kw'>end</span>
|
||||
<span class='kw'>else</span>
|
||||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>The Java mixin received unknown argument-type combinations and cannot continue.</span><span class='tstring_end'>"</span></span>
|
||||
<span class='kw'>end</span>
|
||||
<span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_success'>success</span>
|
||||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Compile failed.</span><span class='tstring_end'>"</span></span>
|
||||
<span class='kw'>end</span>
|
||||
<span class='kw'>end</span></pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="method_details ">
|
||||
<h3 class="signature " id="init_jvm-instance_method">
|
||||
|
||||
#<strong>init_jvm</strong>(jvmoptions = nil) ⇒ <tt>Object</tt>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</h3><table class="source_code">
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="lines">
|
||||
|
||||
|
||||
40
|
||||
41
|
||||
42
|
||||
43
|
||||
44
|
||||
45
|
||||
46
|
||||
47
|
||||
48
|
||||
49
|
||||
50
|
||||
51
|
||||
52
|
||||
53
|
||||
54
|
||||
55
|
||||
56
|
||||
57
|
||||
58
|
||||
59</pre>
|
||||
</td>
|
||||
<td>
|
||||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/java.rb', line 40</span>
|
||||
|
||||
<span class='kw'>def</span> <span class='id identifier rubyid_init_jvm'>init_jvm</span><span class='lparen'>(</span><span class='id identifier rubyid_jvmoptions'>jvmoptions</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='kw'>not</span> <span class='const'>ENV</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>JAVA_HOME</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>JAVA_HOME is not set</span><span class='tstring_end'>'</span></span>
|
||||
<span class='kw'>end</span>
|
||||
|
||||
<span class='id identifier rubyid_toolsjar'>toolsjar</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='const'>ENV</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>JAVA_HOME</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>lib</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>tools.jar</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='kw'>not</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_exist?'>exist?</span> <span class='id identifier rubyid_toolsjar'>toolsjar</span><span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>JAVA_HOME does not point to a valid JDK installation.</span><span class='tstring_end'>'</span></span>
|
||||
<span class='kw'>end</span>
|
||||
|
||||
<span class='comment'># Instantiate the JVM with a classpath pointing to the JDK tools.jar
|
||||
</span> <span class='comment'># and our javatoolkit jar.
|
||||
</span> <span class='id identifier rubyid_classpath'>classpath</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='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'>exploits</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>msfJavaToolkit.jar</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_classpath'>classpath</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='op'>+</span> <span class='id identifier rubyid_toolsjar'>toolsjar</span>
|
||||
<span class='id identifier rubyid_classpath'>classpath</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='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'>ADDCLASSPATH</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='kw'>if</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'>ADDCLASSPATH</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||||
|
||||
<span class='const'>Rjb</span><span class='op'>::</span><span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span><span class='id identifier rubyid_classpath'>classpath</span><span class='comma'>,</span> <span class='id identifier rubyid_jvmargs'>jvmargs</span><span class='op'>=</span><span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
||||
|
||||
<span class='ivar'>@jvm_init</span> <span class='op'>=</span> <span class='kw'>true</span>
|
||||
<span class='kw'>end</span></pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="method_details ">
|
||||
<h3 class="signature " id="initialize-instance_method">
|
||||
|
||||
#<strong>initialize</strong>(info = {}) ⇒ <tt>Object</tt>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</h3><table class="source_code">
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="lines">
|
||||
|
||||
|
||||
19
|
||||
20
|
||||
21
|
||||
22
|
||||
23
|
||||
24
|
||||
25
|
||||
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/java.rb', line 19</span>
|
||||
|
||||
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
||||
<span class='kw'>super</span>
|
||||
|
||||
<span class='id identifier rubyid_register_advanced_options'>register_advanced_options</span><span class='lparen'>(</span>
|
||||
<span class='lbracket'>[</span>
|
||||
<span class='const'><span class='object_link'><a href="../OptString.html" title="Msf::OptString (class)">OptString</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="../OptString.html#initialize-instance_method" title="Msf::OptString#initialize (method)">new</a></span></span><span class='lparen'>(</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>JavaCache</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='kw'>true</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Java cache location</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
||||
<span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</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="../Config.html" title="Msf::Config (class)">Config</a></span></span><span class='period'>.</span><span class='id identifier rubyid_config_directory'><span class='object_link'><a href="../Config.html#config_directory-class_method" title="Msf::Config.config_directory (method)">config_directory</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>javacache</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='comma'>,</span>
|
||||
<span class='const'><span class='object_link'><a href="../OptString.html" title="Msf::OptString (class)">OptString</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="../OptString.html#initialize-instance_method" title="Msf::OptString#initialize (method)">new</a></span></span><span class='lparen'>(</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>AddClassPath</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='kw'>false</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Additional java classpath</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='kw'>nil</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='comma'>,</span>
|
||||
<span class='rbracket'>]</span><span class='comma'>,</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='rparen'>)</span>
|
||||
|
||||
<span class='kw'>begin</span>
|
||||
<span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>rjb</span><span class='tstring_end'>'</span></span>
|
||||
<span class='ivar'>@rjb_loaded</span> <span class='op'>=</span> <span class='kw'>true</span>
|
||||
<span class='id identifier rubyid_init_jvm'>init_jvm</span>
|
||||
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>Exception</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
||||
<span class='ivar'>@rjb_loaded</span> <span class='op'>=</span> <span class='kw'>false</span>
|
||||
<span class='ivar'>@jvm_init</span> <span class='op'>=</span> <span class='kw'>false</span>
|
||||
<span class='ivar'>@java_error</span> <span class='op'>=</span> <span class='id identifier rubyid_e'>e</span>
|
||||
<span class='kw'>end</span>
|
||||
<span class='kw'>end</span></pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="method_details ">
|
||||
<h3 class="signature " id="query_jvm-instance_method">
|
||||
|
||||
#<strong>query_jvm</strong> ⇒ <tt>Object</tt>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</h3><table class="source_code">
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="lines">
|
||||
|
||||
|
||||
61
|
||||
62
|
||||
63</pre>
|
||||
</td>
|
||||
<td>
|
||||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/java.rb', line 61</span>
|
||||
|
||||
<span class='kw'>def</span> <span class='id identifier rubyid_query_jvm'>query_jvm</span>
|
||||
<span class='kw'>return</span> <span class='ivar'>@jvmInit</span>
|
||||
<span class='kw'>end</span></pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="method_details ">
|
||||
<h3 class="signature " id="save_to_file-instance_method">
|
||||
|
||||
#<strong>save_to_file</strong>(classnames, codez, location) ⇒ <tt>Object</tt>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</h3><table class="source_code">
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="lines">
|
||||
|
||||
|
||||
65
|
||||
66
|
||||
67
|
||||
68
|
||||
69
|
||||
70
|
||||
71
|
||||
72
|
||||
73
|
||||
74
|
||||
75
|
||||
76
|
||||
77
|
||||
78
|
||||
79
|
||||
80
|
||||
81</pre>
|
||||
</td>
|
||||
<td>
|
||||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/java.rb', line 65</span>
|
||||
|
||||
<span class='kw'>def</span> <span class='id identifier rubyid_save_to_file'>save_to_file</span><span class='lparen'>(</span><span class='id identifier rubyid_classnames'>classnames</span><span class='comma'>,</span> <span class='id identifier rubyid_codez'>codez</span><span class='comma'>,</span> <span class='id identifier rubyid_location'>location</span><span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_path'>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='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_install_root'><span class='object_link'><a href="../Config.html#install_root-class_method" title="Msf::Config.install_root (method)">install_root</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>external</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>source</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_location'>location</span> <span class='rparen'>)</span>
|
||||
|
||||
<span class='kw'>if</span> <span class='kw'>not</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_exist?'>exist?</span> <span class='id identifier rubyid_path'>path</span>
|
||||
<span class='const'>Dir</span><span class='period'>.</span><span class='id identifier rubyid_mkdir'>mkdir</span><span class='lparen'>(</span><span class='id identifier rubyid_path'>path</span><span class='rparen'>)</span>
|
||||
<span class='kw'>end</span>
|
||||
|
||||
<span class='id identifier rubyid_i'>i</span> <span class='op'>=</span> <span class='int'>0</span>
|
||||
<span class='id identifier rubyid_classnames'>classnames</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_fil'>fil</span><span class='op'>|</span>
|
||||
<span class='id identifier rubyid_file'>file</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='id identifier rubyid_path'>path</span><span class='comma'>,</span> <span class='id identifier rubyid_fil'>fil</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>.java</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_fp'>fp</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span> <span class='id identifier rubyid_file'>file</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>wb</span><span class='tstring_end'>"</span></span> <span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_print_status'>print_status</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Writing </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fil'>fil</span><span class='embexpr_end'>}</span><span class='tstring_content'> to </span><span class='tstring_end'>"</span></span> <span class='op'>+</span> <span class='id identifier rubyid_file'>file</span>
|
||||
<span class='id identifier rubyid_fp'>fp</span><span class='period'>.</span><span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_codez'>codez</span><span class='lbracket'>[</span><span class='id identifier rubyid_i'>i</span><span class='rbracket'>]</span>
|
||||
<span class='id identifier rubyid_i'>i</span> <span class='op'>+=</span> <span class='int'>1</span>
|
||||
<span class='id identifier rubyid_fp'>fp</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span>
|
||||
<span class='rbrace'>}</span>
|
||||
<span class='kw'>end</span></pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="method_details ">
|
||||
<h3 class="signature " id="serialized_class_from_jar-instance_method">
|
||||
|
||||
#<strong>serialized_class_from_jar</strong>(jar, ser_class) ⇒ <tt>String</tt>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</h3><div class="docstring">
|
||||
<div class="discussion">
|
||||
|
||||
<p>Create a Java-natively-serialized object for use in Ruby</p>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="tags">
|
||||
<p class="tag_title">Parameters:</p>
|
||||
<ul class="param">
|
||||
|
||||
<li>
|
||||
|
||||
<span class='name'>jar</span>
|
||||
|
||||
|
||||
<span class='type'>(<tt>String</tt>)</span>
|
||||
|
||||
|
||||
|
||||
—
|
||||
<div class='inline'>
|
||||
<p>Buffer containing JAR data from which to extract the class</p>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
<span class='name'>ser_class</span>
|
||||
|
||||
|
||||
<span class='type'>(<tt>String</tt>)</span>
|
||||
|
||||
|
||||
|
||||
—
|
||||
<div class='inline'>
|
||||
<p>The class name to be serialized</p>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<p class="tag_title">Returns:</p>
|
||||
<ul class="return">
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
<span class='type'>(<tt>String</tt>)</span>
|
||||
|
||||
|
||||
|
||||
—
|
||||
<div class='inline'>
|
||||
<p>Marshalled serialized byteArray</p>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div><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
|
||||
210
|
||||
211
|
||||
212</pre>
|
||||
</td>
|
||||
<td>
|
||||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/java.rb', line 192</span>
|
||||
|
||||
<span class='kw'>def</span> <span class='id identifier rubyid_serialized_class_from_jar'>serialized_class_from_jar</span><span class='lparen'>(</span><span class='id identifier rubyid_jar'>jar</span><span class='comma'>,</span> <span class='id identifier rubyid_ser_class'>ser_class</span><span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_file_name'>file_name</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_rand_text_alpha_lower'>rand_text_alpha_lower</span><span class='lparen'>(</span><span class='int'>8</span><span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_file_path'>file_path</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'>JavaCache</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_file_name'>file_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>.jar</span><span class='tstring_end'>"</span></span>
|
||||
<span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='id identifier rubyid_file_path'>file_path</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>wb+</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_f'>f</span><span class='op'>|</span> <span class='id identifier rubyid_f'>f</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span><span class='id identifier rubyid_jar'>jar</span><span class='rparen'>)</span><span class='rbrace'>}</span>
|
||||
<span class='op'>::</span><span class='const'>Rjb</span><span class='op'>::</span><span class='id identifier rubyid_add_jar'>add_jar</span><span class='lparen'>(</span><span class='id identifier rubyid_file_path'>file_path</span><span class='rparen'>)</span>
|
||||
<span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_unlink'>unlink</span><span class='lparen'>(</span><span class='id identifier rubyid_file_path'>file_path</span><span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_payClass'>payClass</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>Rjb</span><span class='op'>::</span><span class='id identifier rubyid_import'>import</span><span class='lparen'>(</span><span class='id identifier rubyid_ser_class'>ser_class</span><span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_byteArrayClass'>byteArrayClass</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>Rjb</span><span class='op'>::</span><span class='id identifier rubyid_import'>import</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>java.io.ByteArrayOutputStream</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_outputClass'>outputClass</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>Rjb</span><span class='op'>::</span><span class='id identifier rubyid_import'>import</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>java.io.ObjectOutputStream</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_payInst'>payInst</span> <span class='op'>=</span> <span class='id identifier rubyid_payClass'>payClass</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_byteArrayInst'>byteArrayInst</span> <span class='op'>=</span> <span class='id identifier rubyid_byteArrayClass'>byteArrayClass</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='rparen'>)</span>
|
||||
<span class='id identifier rubyid_outputInst'>outputInst</span> <span class='op'>=</span> <span class='id identifier rubyid_outputClass'>outputClass</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_byteArrayInst'>byteArrayInst</span><span class='rparen'>)</span>
|
||||
<span class='kw'>begin</span>
|
||||
<span class='id identifier rubyid_serResult'>serResult</span> <span class='op'>=</span> <span class='id identifier rubyid_outputInst'>outputInst</span><span class='period'>.</span><span class='id identifier rubyid_writeObject'>writeObject</span><span class='lparen'>(</span><span class='id identifier rubyid_payInst'>payInst</span><span class='rparen'>)</span>
|
||||
<span class='kw'>rescue</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
||||
<span class='comment'># Rjb exceptions are pretty broken - try to inform the user of where we keeled
|
||||
</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'>Failed to Rjb-serialize the </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_ser_class'>ser_class</span><span class='embexpr_end'>}</span><span class='tstring_content'> class due to </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='id identifier rubyid_raise'>raise</span> <span class='id identifier rubyid_e'>e</span>
|
||||
<span class='kw'>end</span>
|
||||
<span class='id identifier rubyid_byteArrayInst'>byteArrayInst</span><span class='period'>.</span><span class='id identifier rubyid_toByteArray'>toByteArray</span><span class='lparen'>(</span><span class='rparen'>)</span>
|
||||
<span class='kw'>end</span></pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="method_details ">
|
||||
<h3 class="signature " id="sign_jar-instance_method">
|
||||
|
||||
#<strong>sign_jar</strong>(cert_cn, unsiged_jar, signed_jar, cert_alias = "signFiles", msf_keystore = "msfkeystore", msf_store_pass = "msfstorepass", msf_key_pass = "msfkeypass") ⇒ <tt>Object</tt>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</h3><div class="docstring">
|
||||
<div class="discussion">
|
||||
|
||||
<p><a href="http://www.defcon.org/images/defcon-17/dc-17-presentations/defcon-17-valsmith-metaphish.pdf">www.defcon.org/images/defcon-17/dc-17-presentations/defcon-17-valsmith-metaphish.pdf</a></p>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="tags">
|
||||
|
||||
|
||||
</div><table class="source_code">
|
||||
<tr>
|
||||
<td>
|
||||
<pre class="lines">
|
||||
|
||||
|
||||
148
|
||||
149
|
||||
150
|
||||
151
|
||||
152
|
||||
153
|
||||
154
|
||||
155
|
||||
156
|
||||
157
|
||||
158
|
||||
159
|
||||
160
|
||||
161
|
||||
162
|
||||
163
|
||||
164
|
||||
165
|
||||
166
|
||||
167
|
||||
168
|
||||
169
|
||||
170
|
||||
171
|
||||
172
|
||||
173
|
||||
174
|
||||
175
|
||||
176
|
||||
177
|
||||
178
|
||||
179
|
||||
180
|
||||
181
|
||||
182
|
||||
183</pre>
|
||||
</td>
|
||||
<td>
|
||||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit/java.rb', line 148</span>
|
||||
|
||||
<span class='kw'>def</span> <span class='id identifier rubyid_sign_jar'>sign_jar</span><span class='lparen'>(</span><span class='id identifier rubyid_cert_cn'>cert_cn</span><span class='comma'>,</span> <span class='id identifier rubyid_unsiged_jar'>unsiged_jar</span><span class='comma'>,</span> <span class='id identifier rubyid_signed_jar'>signed_jar</span><span class='comma'>,</span> <span class='id identifier rubyid_cert_alias'>cert_alias</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>signFiles</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_msf_keystore'>msf_keystore</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>msfkeystore</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
||||
<span class='id identifier rubyid_msf_store_pass'>msf_store_pass</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>msfstorepass</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_msf_key_pass'>msf_key_pass</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>msfkeypass</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||||
|
||||
<span class='comment'># Dependent on $JAVA_HOME/lib/tools.jar that comes with the JDK.
|
||||
</span> <span class='id identifier rubyid_signer_klass'>signer_klass</span> <span class='op'>=</span> <span class='const'>Rjb</span><span class='op'>::</span><span class='id identifier rubyid_import'>import</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>javaCompile.SignJar</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||||
|
||||
<span class='comment'># Check if the keystore exists from previous run. If it does, delete it.
|
||||
</span> <span class='id identifier rubyid_msf_keystore'>msf_keystore</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='id identifier rubyid_datastore'>datastore</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>JavaCache</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_msf_keystore'>msf_keystore</span><span class='rparen'>)</span>
|
||||
<span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span> <span class='id identifier rubyid_msf_keystore'>msf_keystore</span> <span class='kw'>if</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_exist?'>exist?</span> <span class='id identifier rubyid_msf_keystore'>msf_keystore</span>
|
||||
|
||||
<span class='comment'># Rjb pukes on a CN with a comma in it so bad that it crashes to shell
|
||||
</span> <span class='comment'># and turns input echoing off. Simple fix for this ugly bug is
|
||||
</span> <span class='comment'># just to get rid of commas which kinda sucks but whatever. See #1543.
|
||||
</span> <span class='id identifier rubyid_keytool_opts'>keytool_opts</span> <span class='op'>=</span> <span class='lbracket'>[</span>
|
||||
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>-genkey</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>-alias</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_cert_alias'>cert_alias</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>-keystore</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_msf_keystore'>msf_keystore</span><span class='comma'>,</span>
|
||||
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>-storepass</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_msf_store_pass'>msf_store_pass</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>-dname</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>CN=</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cert_cn'>cert_cn</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</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='comma'>,</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
||||
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>-keypass</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>msfkeypass</span><span class='tstring_end'>"</span></span>
|
||||
<span class='rbracket'>]</span>
|
||||
|
||||
<span class='comment'># Build the cert keystore
|
||||
</span> <span class='id identifier rubyid_signer_klass'>signer_klass</span><span class='period'>.</span><span class='id identifier rubyid__invoke'>_invoke</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>KeyToolMSF</span><span class='tstring_end'>'</span></span><span class='comma'>,</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>[Ljava.lang.String;</span><span class='tstring_end'>'</span></span><span class='comma'>,</span><span class='id identifier rubyid_keytool_opts'>keytool_opts</span><span class='rparen'>)</span>
|
||||
|
||||
<span class='id identifier rubyid_jarsigner_opts'>jarsigner_opts</span> <span class='op'>=</span> <span class='lbracket'>[</span>
|
||||
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>-keystore</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_msf_keystore'>msf_keystore</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>-storepass</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_msf_store_pass'>msf_store_pass</span><span class='comma'>,</span>
|
||||
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>-keypass</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='id identifier rubyid_msf_key_pass'>msf_key_pass</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>-signedJar</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
||||
<span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</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'>JavaCache</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_signed_jar'>signed_jar</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='comment'># Signed Jar
|
||||
</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</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'>JavaCache</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_unsiged_jar'>unsiged_jar</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='comment'># Input Jar we're signing
|
||||
</span> <span class='id identifier rubyid_cert_alias'>cert_alias</span> <span class='comment'># The cert we're using
|
||||
</span> <span class='rbracket'>]</span>
|
||||
<span class='id identifier rubyid_signer_klass'>signer_klass</span><span class='period'>.</span><span class='id identifier rubyid__invoke'>_invoke</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>JarSignerMSF</span><span class='tstring_end'>'</span></span><span class='comma'>,</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>[Ljava.lang.String;</span><span class='tstring_end'>'</span></span><span class='comma'>,</span><span class='id identifier rubyid_jarsigner_opts'>jarsigner_opts</span><span class='rparen'>)</span>
|
||||
|
||||
<span class='comment'># There are warnings in the source for KeyTool/JarSigner warning that security providers
|
||||
</span> <span class='comment'># are not released, and if you are calling .main(foo) from another app, you need to release
|
||||
</span> <span class='comment'># them manually. This is not done here, and should Rjb be used for anything in the future,
|
||||
</span> <span class='comment'># this may need to be cleaned up.
|
||||
</span><span class='kw'>end</span></pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
Generated on Fri May 8 17:01:04 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>
|
||||
Reference in New Issue
Block a user