7857 lines
330 KiB
HTML
7857 lines
330 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>
|
||
Class: Msf::Exploit
|
||
|
||
— 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";
|
||
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 (E)</a> »
|
||
<span class='title'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span>
|
||
»
|
||
<span class="title">Exploit</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
|
||
|
||
|
||
|
||
</h1>
|
||
<div class="box_info">
|
||
|
||
<dl>
|
||
<dt>Inherits:</dt>
|
||
<dd>
|
||
<span class="inheritName"><span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></span>
|
||
|
||
<ul class="fullTree">
|
||
<li>Object</li>
|
||
|
||
<li class="next"><span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></li>
|
||
|
||
<li class="next">Msf::Exploit</li>
|
||
|
||
</ul>
|
||
<a href="#" class="inheritanceTree">show all</a>
|
||
|
||
</dd>
|
||
</dl>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<dl>
|
||
<dt>Defined in:</dt>
|
||
<dd>lib/msf/core/exploit.rb<span class="defines">,<br />
|
||
lib/msf/core/exploit/capture.rb,<br /> lib/msf/core/exploit/remote/unirpc.rb,<br /> lib/msf/core/exploit/remote/http/nifi.rb,<br /> lib/msf/core/exploit/remote/http/sccm.rb,<br /> lib/msf/core/exploit/format/webarchive.rb,<br /> lib/msf/core/exploit/remote/http/gitea.rb,<br /> lib/msf/core/exploit/remote/http/jboss.rb,<br /> lib/msf/core/exploit/remote/http/typo3.rb,<br /> lib/msf/core/exploit/remote/http/gitlab.rb,<br /> lib/msf/core/exploit/remote/http/joomla.rb,<br /> lib/msf/core/exploit/remote/http/moodle.rb,<br /> lib/msf/core/exploit/remote/http/pihole.rb,<br /> lib/msf/core/exploit/remote/http/splunk.rb,<br /> lib/msf/core/exploit/remote/http/webmin.rb,<br /> lib/msf/core/exploit/remote/http/flowise.rb,<br /> lib/msf/core/exploit/remote/http/freepbx.rb,<br /> lib/msf/core/exploit/remote/http/jenkins.rb,<br /> lib/msf/core/exploit/remote/http/pretalx.rb,<br /> lib/msf/core/exploit/remote/http/exchange.rb,<br /> lib/msf/core/exploit/remote/java/rmi/util.rb,<br /> lib/msf/core/exploit/remote/http/nagios_xi.rb,<br /> lib/msf/core/exploit/remote/http/wordpress.rb,<br /> lib/msf/core/exploit/remote/http/sharepoint.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client.rb,<br /> lib/msf/core/exploit/remote/kerberos/client.rb,<br /> lib/msf/core/exploit/remote/kerberos/ticket.rb,<br /> lib/msf/core/exploit/remote/http/apache_solr.rb,<br /> lib/msf/core/exploit/remote/http/beyondtrust.rb,<br /> lib/msf/core/exploit/remote/http/http_cookie.rb,<br /> lib/msf/core/exploit/remote/http/sitecore_xp.rb,<br /> lib/msf/core/exploit/remote/http/smartermail.rb,<br /> lib/msf/core/exploit/remote/java/rmi/builder.rb,<br /> lib/msf/core/exploit/remote/http/complete_pbx.rb,<br /> lib/msf/core/exploit/remote/http/flask_unsign.rb,<br /> lib/msf/core/exploit/remote/http/web_enrollment.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/jmx.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/pac.rb,<br /> lib/msf/core/exploit/remote/http/http_cookie_jar.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/base.rb,<br /> lib/msf/core/exploit/remote/http/kubernetes/error.rb,<br /> lib/msf/core/exploit/remote/http/php_filter_chain.rb,<br /> lib/msf/core/exploit/remote/http/kubernetes/client.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/pkinit.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/registry.rb,<br /> lib/msf/core/exploit/format/rar_symlink_path_traversal.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/jmx/server.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/ap_request.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/as_request.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/as_response.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/tgs_request.rb,<br /> lib/msf/core/exploit/remote/kerberos/client/tgs_response.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/jmx/connection.rb,<br /> lib/msf/core/exploit/remote/http/manage_engine_adaudit_plus.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/registry/parser.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/registry/builder.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/jmx/server/parser.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/jmx/server/builder.rb,<br /> lib/msf/core/exploit/remote/java/rmi/client/jmx/connection/builder.rb</span>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
|
||
<h2>Overview</h2><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>This module provides methods for sending and receiving raw packets. It should be preferred over the soon-to-be deprecated Rex::Socket::Ip and Msf::Exploit::Remote::Ip mixins.</p>
|
||
|
||
<p>Please see the pcaprub documentation for more information on how to use capture objects.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><div id="subclasses">
|
||
<h2>Direct Known Subclasses</h2>
|
||
<p class="children"><span class='object_link'><a href="Exploit/Local.html" title="Msf::Exploit::Local (class)">Local</a></span>, <span class='object_link'><a href="Exploit/Remote.html" title="Msf::Exploit::Remote (class)">Remote</a></span></p>
|
||
</div>
|
||
<h2>Defined Under Namespace</h2>
|
||
<p class="children">
|
||
|
||
|
||
<strong class="modules">Modules:</strong> <span class='object_link'><a href="Exploit/Android.html" title="Msf::Exploit::Android (module)">Android</a></span>, <span class='object_link'><a href="Exploit/AutoTarget.html" title="Msf::Exploit::AutoTarget (module)">AutoTarget</a></span>, <span class='object_link'><a href="Exploit/Brute.html" title="Msf::Exploit::Brute (module)">Brute</a></span>, <span class='object_link'><a href="Exploit/BruteTargets.html" title="Msf::Exploit::BruteTargets (module)">BruteTargets</a></span>, <span class='object_link'><a href="Exploit/Cacti.html" title="Msf::Exploit::Cacti (module)">Cacti</a></span>, <span class='object_link'><a href="Exploit/Capture.html" title="Msf::Exploit::Capture (module)">Capture</a></span>, <span class='object_link'><a href="Exploit/CmdStager.html" title="Msf::Exploit::CmdStager (module)">CmdStager</a></span>, <span class='object_link'><a href="Exploit/CompatDefaults.html" title="Msf::Exploit::CompatDefaults (module)">CompatDefaults</a></span>, <span class='object_link'><a href="Exploit/DECT_COA.html" title="Msf::Exploit::DECT_COA (module)">DECT_COA</a></span>, <span class='object_link'><a href="Exploit/DHCPServer.html" title="Msf::Exploit::DHCPServer (module)">DHCPServer</a></span>, <span class='object_link'><a href="Exploit/EXE.html" title="Msf::Exploit::EXE (module)">EXE</a></span>, <span class='object_link'><a href="Exploit/Egghunter.html" title="Msf::Exploit::Egghunter (module)">Egghunter</a></span>, <span class='object_link'><a href="Exploit/FILEFORMAT.html" title="Msf::Exploit::FILEFORMAT (module)">FILEFORMAT</a></span>, <span class='object_link'><a href="Exploit/FileDropper.html" title="Msf::Exploit::FileDropper (module)">FileDropper</a></span>, <span class='object_link'><a href="Exploit/Format.html" title="Msf::Exploit::Format (module)">Format</a></span>, <span class='object_link'><a href="Exploit/FormatString.html" title="Msf::Exploit::FormatString (module)">FormatString</a></span>, <span class='object_link'><a href="Exploit/Git.html" title="Msf::Exploit::Git (module)">Git</a></span>, <span class='object_link'><a href="Exploit/HTTP.html" title="Msf::Exploit::HTTP (module)">HTTP</a></span>, <span class='object_link'><a href="Exploit/JSObfu.html" title="Msf::Exploit::JSObfu (module)">JSObfu</a></span>, <span class='object_link'><a href="Exploit/Java.html" title="Msf::Exploit::Java (module)">Java</a></span>, <span class='object_link'><a href="Exploit/JavaDeserialization.html" title="Msf::Exploit::JavaDeserialization (module)">JavaDeserialization</a></span>, <span class='object_link'><a href="Exploit/KernelMode.html" title="Msf::Exploit::KernelMode (module)">KernelMode</a></span>, <span class='object_link'><a href="Exploit/LaravelCryptoKiller.html" title="Msf::Exploit::LaravelCryptoKiller (module)">LaravelCryptoKiller</a></span>, <span class='object_link'><a href="Exploit/NTLM.html" title="Msf::Exploit::NTLM (module)">NTLM</a></span>, <span class='object_link'><a href="Exploit/ORACLE.html" title="Msf::Exploit::ORACLE (module)">ORACLE</a></span>, <span class='object_link'><a href="Exploit/Omelet.html" title="Msf::Exploit::Omelet (module)">Omelet</a></span>, <span class='object_link'><a href="Exploit/PDF.html" title="Msf::Exploit::PDF (module)">PDF</a></span>, <span class='object_link'><a href="Exploit/PDF_Parse.html" title="Msf::Exploit::PDF_Parse (module)">PDF_Parse</a></span>, <span class='object_link'><a href="Exploit/PgAdmin.html" title="Msf::Exploit::PgAdmin (module)">PgAdmin</a></span>, <span class='object_link'><a href="Exploit/PhpEXE.html" title="Msf::Exploit::PhpEXE (module)">PhpEXE</a></span>, <span class='object_link'><a href="Exploit/Powershell.html" title="Msf::Exploit::Powershell (module)">Powershell</a></span>, <span class='object_link'><a href="Exploit/RIFF.html" title="Msf::Exploit::RIFF (module)">RIFF</a></span>, <span class='object_link'><a href="Exploit/Retry.html" title="Msf::Exploit::Retry (module)">Retry</a></span>, <span class='object_link'><a href="Exploit/RopDb.html" title="Msf::Exploit::RopDb (module)">RopDb</a></span>, <span class='object_link'><a href="Exploit/RubyDeserialization.html" title="Msf::Exploit::RubyDeserialization (module)">RubyDeserialization</a></span>, <span class='object_link'><a href="Exploit/SMB.html" title="Msf::Exploit::SMB (module)">SMB</a></span>, <span class='object_link'><a href="Exploit/SQLi.html" title="Msf::Exploit::SQLi (module)">SQLi</a></span>, <span class='object_link'><a href="Exploit/Seh.html" title="Msf::Exploit::Seh (module)">Seh</a></span>, <span class='object_link'><a href="Exploit/Stance.html" title="Msf::Exploit::Stance (module)">Stance</a></span>, <span class='object_link'><a href="Exploit/TFTPServer.html" title="Msf::Exploit::TFTPServer (module)">TFTPServer</a></span>, <span class='object_link'><a href="Exploit/Type.html" title="Msf::Exploit::Type (module)">Type</a></span>, <span class='object_link'><a href="Exploit/VBSObfuscate.html" title="Msf::Exploit::VBSObfuscate (module)">VBSObfuscate</a></span>, <span class='object_link'><a href="Exploit/ViewState.html" title="Msf::Exploit::ViewState (module)">ViewState</a></span>, <span class='object_link'><a href="Exploit/WbemExec.html" title="Msf::Exploit::WbemExec (module)">WbemExec</a></span>, <span class='object_link'><a href="Exploit/Windows_Constants.html" title="Msf::Exploit::Windows_Constants (module)">Windows_Constants</a></span>
|
||
|
||
|
||
|
||
<strong class="classes">Classes:</strong> <span class='object_link'><a href="Exploit/CheckCode.html" title="Msf::Exploit::CheckCode (class)">CheckCode</a></span>, <span class='object_link'><a href="Exploit/Complete.html" title="Msf::Exploit::Complete (class)">Complete</a></span>, <span class='object_link'><a href="Exploit/Failed.html" title="Msf::Exploit::Failed (class)">Failed</a></span>, <span class='object_link'><a href="Exploit/Local.html" title="Msf::Exploit::Local (class)">Local</a></span>, <span class='object_link'><a href="Exploit/Remote.html" title="Msf::Exploit::Remote (class)">Remote</a></span>
|
||
|
||
|
||
</p>
|
||
|
||
|
||
|
||
<h2>Constant Summary</h2>
|
||
|
||
<h3 class="inherited">Constants inherited
|
||
from <span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module.html#REPLICANT_EXTENSION_DS_KEY-constant" title="Msf::Module::REPLICANT_EXTENSION_DS_KEY (constant)">Module::REPLICANT_EXTENSION_DS_KEY</a></span></p>
|
||
|
||
|
||
|
||
<h3 class="inherited">Constants included
|
||
from <span class='object_link'><a href="Module/ModuleInfo.html" title="Msf::Module::ModuleInfo (module)">Module::ModuleInfo</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/ModuleInfo.html#ReferencesWithOptionalThirdElement-constant" title="Msf::Module::ModuleInfo::ReferencesWithOptionalThirdElement (constant)">Module::ModuleInfo::ReferencesWithOptionalThirdElement</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#UpdateableOptions-constant" title="Msf::Module::ModuleInfo::UpdateableOptions (constant)">Module::ModuleInfo::UpdateableOptions</a></span></p>
|
||
|
||
|
||
|
||
<h3 class="inherited">Constants included
|
||
from <span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Module::Failure</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Failure.html#BadConfig-constant" title="Msf::Module::Failure::BadConfig (constant)">Module::Failure::BadConfig</a></span>, <span class='object_link'><a href="Module/Failure.html#Disconnected-constant" title="Msf::Module::Failure::Disconnected (constant)">Module::Failure::Disconnected</a></span>, <span class='object_link'><a href="Module/Failure.html#NoAccess-constant" title="Msf::Module::Failure::NoAccess (constant)">Module::Failure::NoAccess</a></span>, <span class='object_link'><a href="Module/Failure.html#NoTarget-constant" title="Msf::Module::Failure::NoTarget (constant)">Module::Failure::NoTarget</a></span>, <span class='object_link'><a href="Module/Failure.html#None-constant" title="Msf::Module::Failure::None (constant)">Module::Failure::None</a></span>, <span class='object_link'><a href="Module/Failure.html#NotFound-constant" title="Msf::Module::Failure::NotFound (constant)">Module::Failure::NotFound</a></span>, <span class='object_link'><a href="Module/Failure.html#NotVulnerable-constant" title="Msf::Module::Failure::NotVulnerable (constant)">Module::Failure::NotVulnerable</a></span>, <span class='object_link'><a href="Module/Failure.html#PayloadFailed-constant" title="Msf::Module::Failure::PayloadFailed (constant)">Module::Failure::PayloadFailed</a></span>, <span class='object_link'><a href="Module/Failure.html#TimeoutExpired-constant" title="Msf::Module::Failure::TimeoutExpired (constant)">Module::Failure::TimeoutExpired</a></span>, <span class='object_link'><a href="Module/Failure.html#UnexpectedReply-constant" title="Msf::Module::Failure::UnexpectedReply (constant)">Module::Failure::UnexpectedReply</a></span>, <span class='object_link'><a href="Module/Failure.html#Unknown-constant" title="Msf::Module::Failure::Unknown (constant)">Module::Failure::Unknown</a></span>, <span class='object_link'><a href="Module/Failure.html#Unreachable-constant" title="Msf::Module::Failure::Unreachable (constant)">Module::Failure::Unreachable</a></span>, <span class='object_link'><a href="Module/Failure.html#UserInterrupt-constant" title="Msf::Module::Failure::UserInterrupt (constant)">Module::Failure::UserInterrupt</a></span></p>
|
||
|
||
|
||
<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="#active_timeout-instance_method" title="#active_timeout (instance method)">#<strong>active_timeout</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Maximum number of seconds for active handlers.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#default_target-instance_method" title="#default_target (instance method)">#<strong>default_target</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>The default target.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#fail_detail-instance_method" title="#fail_detail (instance method)">#<strong>fail_detail</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Detailed exception string indicating why the exploit was not successful.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#fail_reason-instance_method" title="#fail_reason (instance method)">#<strong>fail_reason</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>The reason why the exploit was not successful (one of Msf::Module::Failure).</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#last_vuln_attempt-instance_method" title="#last_vuln_attempt (instance method)">#<strong>last_vuln_attempt</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>The VulnAttempt object created during this run, or nil/false if none was recorded.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#needs_cleanup-instance_method" title="#needs_cleanup (instance method)">#<strong>needs_cleanup</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the value of attribute needs_cleanup.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload-instance_method" title="#payload (instance method)">#<strong>payload</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>The encoded payload instance.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_info-instance_method" title="#payload_info (instance method)">#<strong>payload_info</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>The payload requirement hash.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_instance-instance_method" title="#payload_instance (instance method)">#<strong>payload_instance</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>The active payload instance.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#session_count-instance_method" title="#session_count (instance method)">#<strong>session_count</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>The number of active sessions created by this instance.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#successful-instance_method" title="#successful (instance method)">#<strong>successful</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>The boolean indicating whether the exploit succeeded.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#targets-instance_method" title="#targets (instance method)">#<strong>targets</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>The list of targets.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Attributes inherited from <span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module.html#error-instance_method" title="Msf::Module#error (method)">#error</a></span>, <span class='object_link'><a href="Module.html#job_id-instance_method" title="Msf::Module#job_id (method)">#job_id</a></span>, <span class='object_link'><a href="Module.html#license-instance_method" title="Msf::Module#license (method)">#license</a></span>, <span class='object_link'><a href="Module.html#platform-instance_method" title="Msf::Module#platform (method)">#platform</a></span>, <span class='object_link'><a href="Module.html#privileged=-instance_method" title="Msf::Module#privileged= (method)">#privileged</a></span>, <span class='object_link'><a href="Module.html#references-instance_method" title="Msf::Module#references (method)">#references</a></span>, <span class='object_link'><a href="Module.html#user_data-instance_method" title="Msf::Module#user_data (method)">#user_data</a></span></p>
|
||
|
||
|
||
|
||
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Framework/Offspring.html" title="Msf::Framework::Offspring (module)">Framework::Offspring</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Framework/Offspring.html#framework-instance_method" title="Msf::Framework::Offspring#framework (method)">#framework</a></span></p>
|
||
|
||
|
||
|
||
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/UUID.html" title="Msf::Module::UUID (module)">Module::UUID</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/UUID.html#uuid-instance_method" title="Msf::Module::UUID#uuid (method)">#uuid</a></span></p>
|
||
|
||
|
||
|
||
<h3 class="inherited">Attributes included from <span class='object_link'><a href="../Rex/Ui/Subscriber/Input.html" title="Rex::Ui::Subscriber::Input (module)">Rex::Ui::Subscriber::Input</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="../Rex/Ui/Subscriber/Input.html#user_input-instance_method" title="Rex::Ui::Subscriber::Input#user_input (method)">#user_input</a></span></p>
|
||
|
||
|
||
|
||
<h3 class="inherited">Attributes included from <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html" title="Rex::Ui::Subscriber::Output (module)">Rex::Ui::Subscriber::Output</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#user_output-instance_method" title="Rex::Ui::Subscriber::Output#user_output (method)">#user_output</a></span></p>
|
||
|
||
|
||
|
||
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/Privileged.html" title="Msf::Module::Privileged (module)">Module::Privileged</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Privileged.html#priveli=-instance_method" title="Msf::Module::Privileged#priveli= (method)">#priveli</a></span>, <span class='object_link'><a href="Module/Privileged.html#privileged-instance_method" title="Msf::Module::Privileged#privileged (method)">#privileged</a></span></p>
|
||
|
||
|
||
|
||
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/Options.html" title="Msf::Module::Options (module)">Module::Options</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Options.html#options-instance_method" title="Msf::Module::Options#options (method)">#options</a></span></p>
|
||
|
||
|
||
|
||
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/ModuleStore.html" title="Msf::Module::ModuleStore (module)">Module::ModuleStore</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/ModuleStore.html#module_store-instance_method" title="Msf::Module::ModuleStore#module_store (method)">#module_store</a></span></p>
|
||
|
||
|
||
|
||
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/ModuleInfo.html" title="Msf::Module::ModuleInfo (module)">Module::ModuleInfo</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/ModuleInfo.html#module_info-instance_method" title="Msf::Module::ModuleInfo#module_info (method)">#module_info</a></span></p>
|
||
|
||
|
||
|
||
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/FullName.html" title="Msf::Module::FullName (module)">Module::FullName</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/FullName.html#aliased_as-instance_method" title="Msf::Module::FullName#aliased_as (method)">#aliased_as</a></span></p>
|
||
|
||
|
||
|
||
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/DataStore.html" title="Msf::Module::DataStore (module)">Module::DataStore</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/DataStore.html#datastore-instance_method" title="Msf::Module::DataStore#datastore (method)">#datastore</a></span></p>
|
||
|
||
|
||
|
||
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/Author.html" title="Msf::Module::Author (module)">Module::Author</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Author.html#author-instance_method" title="Msf::Module::Author#author (method)">#author</a></span></p>
|
||
|
||
|
||
|
||
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/Arch.html" title="Msf::Module::Arch (module)">Module::Arch</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Arch.html#arch-instance_method" title="Msf::Module::Arch#arch (method)">#arch</a></span></p>
|
||
|
||
|
||
|
||
<h3 class="inherited">Attributes included from <span class='object_link'><a href="Module/Alert.html" title="Msf::Module::Alert (module)">Module::Alert</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Alert.html#alerts-instance_method" title="Msf::Module::Alert#alerts (method)">#alerts</a></span>, <span class='object_link'><a href="Module/Alert.html#you_have_been_warned-instance_method" title="Msf::Module::Alert#you_have_been_warned (method)">#you_have_been_warned</a></span></p>
|
||
|
||
|
||
|
||
<h2>
|
||
Class Method Summary
|
||
<small><a href="#" class="summary_toggle">collapse</a></small>
|
||
</h2>
|
||
|
||
<ul class="summary">
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#mixins-class_method" title="mixins (class method)">.<strong>mixins</strong> ⇒ Array </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns an array of all of the exploit mixins.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#type-class_method" title="type (class method)">.<strong>type</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns MODULE_EXPLOIT to indicate that this is an exploit module.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
|
||
<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="#add_handler-instance_method" title="#add_handler (instance method)">#<strong>add_handler</strong>(opts = {}) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Allows the payload handler to spawn a new monitor.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#aggressive%3F-instance_method" title="#aggressive? (instance method)">#<strong>aggressive?</strong> ⇒ Boolean </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns true if the exploit has an aggressive stance.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#autofilter-instance_method" title="#autofilter (instance method)">#<strong>autofilter</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Performs last-minute sanity checking of exploit parameters.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#autofilter_ports-instance_method" title="#autofilter_ports (instance method)">#<strong>autofilter_ports</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Provides a list of ports that can be used for matching this module against target systems.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#autofilter_services-instance_method" title="#autofilter_services (instance method)">#<strong>autofilter_services</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Provides a list of services that can be used for matching this module against target systems.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#cleanup-instance_method" title="#cleanup (instance method)">#<strong>cleanup</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Performs any cleanup that may be necessary, such as disconnecting connections and any other such fun things.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#compatible_encoders-instance_method" title="#compatible_encoders (instance method)">#<strong>compatible_encoders</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns a list of compatible encoders based on architecture.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#compatible_payloads-instance_method" title="#compatible_payloads (instance method)">#<strong>compatible_payloads</strong>(excluded_platforms: [], excluded_archs: []) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns a list of compatible payloads based on platform, architecture, and size requirements.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#define_context_encoding_reqs-instance_method" title="#define_context_encoding_reqs (instance method)">#<strong>define_context_encoding_reqs</strong>(reqs) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Gets the memory map file and other context information that is required when wanting to support context keyed encoding.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#encode_begin-instance_method" title="#encode_begin (instance method)">#<strong>encode_begin</strong>(real_payload, reqs) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Called prior to encoding a payload.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#encode_end-instance_method" title="#encode_end (instance method)">#<strong>encode_end</strong>(real_payload, reqs, encoded) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Called after an encoded payload has been generated.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#encode_shellcode_stub-instance_method" title="#encode_shellcode_stub (instance method)">#<strong>encode_shellcode_stub</strong>(code, badchars = payload_badchars) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Allows arbitrary shellcode to be encoded from within an exploit.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#exploit-instance_method" title="#exploit (instance method)">#<strong>exploit</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Kicks off the actual exploit.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#exploit_type-instance_method" title="#exploit_type (instance method)">#<strong>exploit_type</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>If we don’t know the exploit type, then I guess it’s omnipresent!.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#fail_with-instance_method" title="#fail_with (instance method)">#<strong>fail_with</strong>(reason, msg = nil) ⇒ void </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Raises a Msf::Exploit::Failed exception.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#generate_payload-instance_method" title="#generate_payload (instance method)">#<strong>generate_payload</strong>(pinst = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Generates the encoded version of the supplied payload using the payload requirements specific to this exploit.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#generate_single_payload-instance_method" title="#generate_single_payload (instance method)">#<strong>generate_single_payload</strong>(pinst = nil, platform = nil, arch = nil, explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>This method generates a non-cached payload which is typically useful for passive exploits that will have more than one client.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#handle_exception-instance_method" title="#handle_exception (instance method)">#<strong>handle_exception</strong>(e) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Handle the exception.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#handler-instance_method" title="#handler (instance method)">#<strong>handler</strong>(*args) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Passes the connection to the associated payload handler to see if the exploit succeeded and a connection has been established.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#handler_bind%3F-instance_method" title="#handler_bind? (instance method)">#<strong>handler_bind?</strong> ⇒ Boolean </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>If the payload uses a bind handler.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#handler_enabled%3F-instance_method" title="#handler_enabled? (instance method)">#<strong>handler_enabled?</strong> ⇒ Boolean </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Allow the user to disable the payload handler.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#has_auto_target%3F-instance_method" title="#has_auto_target? (instance method)">#<strong>has_auto_target?</strong>(targets = []) ⇒ Boolean </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="protected ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#init_compat-instance_method" title="#init_compat (instance method)">#<strong>init_compat</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
<span class="note title protected">protected</span>
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Overrides the base class method and serves to initialize default compatibilities for exploits.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(info = {}) ⇒ Exploit </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
<span class="note title constructor">constructor</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Creates an instance of the exploit module.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#interrupt_handler-instance_method" title="#interrupt_handler (instance method)">#<strong>interrupt_handler</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#is_payload_compatible%3F-instance_method" title="#is_payload_compatible? (instance method)">#<strong>is_payload_compatible?</strong>(name) ⇒ Boolean </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns whether the requested payload is compatible with the module.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#make_fast_nops-instance_method" title="#make_fast_nops (instance method)">#<strong>make_fast_nops</strong>(count) ⇒ String </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Generates a NOP sled using the #make_nops method.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#make_nops-instance_method" title="#make_nops (instance method)">#<strong>make_nops</strong>(count) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Generates a nop sled of a supplied length and returns it to the caller.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#nop_generator-instance_method" title="#nop_generator (instance method)">#<strong>nop_generator</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the first compatible NOP generator for this exploit’s payload instance.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#nop_save_registers-instance_method" title="#nop_save_registers (instance method)">#<strong>nop_save_registers</strong>(explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the list of registers that the NOP generator should save, if any.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#normalize_platform_arch-instance_method" title="#normalize_platform_arch (instance method)">#<strong>normalize_platform_arch</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#on_new_session-instance_method" title="#on_new_session (instance method)">#<strong>on_new_session</strong>(session) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>This is called by the payload when a new session is created.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#passive%3F-instance_method" title="#passive? (instance method)">#<strong>passive?</strong> ⇒ Boolean </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns if the exploit has a passive stance.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#pattern_create-instance_method" title="#pattern_create (instance method)">#<strong>pattern_create</strong>(length, sets = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Generate a non-repeating static random string.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_append-instance_method" title="#payload_append (instance method)">#<strong>payload_append</strong>(explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Return any text that should be appended to the payload.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_append_encoder-instance_method" title="#payload_append_encoder (instance method)">#<strong>payload_append_encoder</strong>(explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Return any text that should be appended to the encoder of the payload.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_badchars-instance_method" title="#payload_badchars (instance method)">#<strong>payload_badchars</strong>(explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the bad characters that cannot be in any payload used by this exploit.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_disable_nops-instance_method" title="#payload_disable_nops (instance method)">#<strong>payload_disable_nops</strong>(explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Whether NOP generation should be enabled or disabled.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_encoder-instance_method" title="#payload_encoder (instance method)">#<strong>payload_encoder</strong>(explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the payload encoder that is associated with either the current target or the exploit in general.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_encoder_options-instance_method" title="#payload_encoder_options (instance method)">#<strong>payload_encoder_options</strong>(explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the payload encoder option hash that is used to initialize the datastore of the encoder that is selected when generating an encoded payload.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_encoder_type-instance_method" title="#payload_encoder_type (instance method)">#<strong>payload_encoder_type</strong>(explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the payload encoder type that is associated with either the current target or the exploit in general.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_extended_options-instance_method" title="#payload_extended_options (instance method)">#<strong>payload_extended_options</strong>(explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the payload extended options hash which is used to provide a location to store extended information that may be useful to a particular type of payload or mixin.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_max_nops-instance_method" title="#payload_max_nops (instance method)">#<strong>payload_max_nops</strong>(explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Maximum number of nops to use as a hint to the framework.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_min_nops-instance_method" title="#payload_min_nops (instance method)">#<strong>payload_min_nops</strong>(explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Minimum number of nops to use as a hint to the framework.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_nop-instance_method" title="#payload_nop (instance method)">#<strong>payload_nop</strong>(explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the payload NOP generator that is associated with either the current target or the exploit in general.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_prepend-instance_method" title="#payload_prepend (instance method)">#<strong>payload_prepend</strong>(explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Return any text that should be prepended to the payload.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_prepend_encoder-instance_method" title="#payload_prepend_encoder (instance method)">#<strong>payload_prepend_encoder</strong>(explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Return any text that should be prepended to the encoder of the payload.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#payload_space-instance_method" title="#payload_space (instance method)">#<strong>payload_space</strong>(explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the maximum amount of room the exploit has for a payload.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#rand_char-instance_method" title="#rand_char (instance method)">#<strong>rand_char</strong>(bad = payload_badchars) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Generate a random character avoiding the exploit’s bad characters.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#rand_text-instance_method" title="#rand_text (instance method)">#<strong>rand_text</strong>(length, bad = payload_badchars) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Generate random text characters avoiding the exploit’s bad characters.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#rand_text_alpha-instance_method" title="#rand_text_alpha (instance method)">#<strong>rand_text_alpha</strong>(length, bad = payload_badchars) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Generate random alpha characters avoiding the exploit’s bad characters.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#rand_text_alpha_lower-instance_method" title="#rand_text_alpha_lower (instance method)">#<strong>rand_text_alpha_lower</strong>(length, bad = payload_badchars) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Generate random alpha lower characters avoiding the exploit’s bad characters.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#rand_text_alpha_upper-instance_method" title="#rand_text_alpha_upper (instance method)">#<strong>rand_text_alpha_upper</strong>(length, bad = payload_badchars) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Generate random alpha upper characters avoiding the exploit’s bad characters.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#rand_text_alphanumeric-instance_method" title="#rand_text_alphanumeric (instance method)">#<strong>rand_text_alphanumeric</strong>(length, bad = payload_badchars) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Generate random alphanumeric characters avoiding the exploit’s bad characters.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#rand_text_debug-instance_method" title="#rand_text_debug (instance method)">#<strong>rand_text_debug</strong>(length, char = 'A') ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Utility methods for generating random text that implicitly uses the exploit’s bad character set.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#rand_text_english-instance_method" title="#rand_text_english (instance method)">#<strong>rand_text_english</strong>(length, bad = payload_badchars) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Generate random english-like avoiding the exploit’s bad characters.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#rand_text_hex-instance_method" title="#rand_text_hex (instance method)">#<strong>rand_text_hex</strong>(length, bad = payload_badchars) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Generate random hexadecimal characters avoiding the exploit’s bad characters.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#rand_text_highascii-instance_method" title="#rand_text_highascii (instance method)">#<strong>rand_text_highascii</strong>(length, bad = payload_badchars) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Generate random high ascii characters avoiding the exploit’s bad characters.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#rand_text_numeric-instance_method" title="#rand_text_numeric (instance method)">#<strong>rand_text_numeric</strong>(length, bad = payload_badchars) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Generate random numeric characters avoiding the exploit’s bad characters.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#regenerate_payload-instance_method" title="#regenerate_payload (instance method)">#<strong>regenerate_payload</strong>(platform = nil, arch = nil, explicit_target = nil) ⇒ Object </a>
|
||
|
||
|
||
|
||
(also: #exploit_regenerate_payload)
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Re-generates an encoded payload, typically called after something in the datastore has changed.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#register_autofilter_ports-instance_method" title="#register_autofilter_ports (instance method)">#<strong>register_autofilter_ports</strong>(ports = []) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Adds a port into the list of ports.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#register_autofilter_services-instance_method" title="#register_autofilter_services (instance method)">#<strong>register_autofilter_services</strong>(services = []) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#reset_session_counts-instance_method" title="#reset_session_counts (instance method)">#<strong>reset_session_counts</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Reset the session counter to zero (which occurs during set up of the exploit prior to calling exploit).</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#session_created%3F-instance_method" title="#session_created? (instance method)">#<strong>session_created?</strong> ⇒ Boolean </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>A boolean for whether a session has been created yet.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#setup-instance_method" title="#setup (instance method)">#<strong>setup</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Prepares the module for exploitation, initializes any state, and starts the payload handler.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#setup_fail_detail_from_exception-instance_method" title="#setup_fail_detail_from_exception (instance method)">#<strong>setup_fail_detail_from_exception</strong>(e) ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'></div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#stack_adjustment-instance_method" title="#stack_adjustment (instance method)">#<strong>stack_adjustment</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>This method returns the encoded instruction(s) required to adjust the stack pointer prior to executing any code.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#stance-instance_method" title="#stance (instance method)">#<strong>stance</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Generally, all exploits take an aggressive stance.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#target-instance_method" title="#target (instance method)">#<strong>target</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the active target for this exploit.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#target_arch-instance_method" title="#target_arch (instance method)">#<strong>target_arch</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the target’s architecture, or the one assigned to the module itself.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#target_index-instance_method" title="#target_index (instance method)">#<strong>target_index</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>The target index that has been selected.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#target_platform-instance_method" title="#target_platform (instance method)">#<strong>target_platform</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns the target’s platform, or the one assigned to the module itself.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#type-instance_method" title="#type (instance method)">#<strong>type</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>Returns MODULE_EXPLOIT to indicate that this is an exploit module.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
<li class="public ">
|
||
<span class="summary_signature">
|
||
|
||
<a href="#wfs_delay-instance_method" title="#wfs_delay (instance method)">#<strong>wfs_delay</strong> ⇒ Object </a>
|
||
|
||
|
||
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span class="summary_desc"><div class='inline'>
|
||
<p>The minimum “wait for session” delay is 3 seconds for all exploits, the WfsDelay configuration option is added on top of this.</p>
|
||
</div></span>
|
||
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods inherited from <span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module.html#adapted_refname-instance_method" title="Msf::Module#adapted_refname (method)">#adapted_refname</a></span>, <span class='object_link'><a href="Module.html#adapter_refname-instance_method" title="Msf::Module#adapter_refname (method)">#adapter_refname</a></span>, <span class='object_link'><a href="Module.html#black_listed_auth_filenames-instance_method" title="Msf::Module#black_listed_auth_filenames (method)">#black_listed_auth_filenames</a></span>, <span class='object_link'><a href="Module.html#cached%3F-class_method" title="Msf::Module.cached? (method)">cached?</a></span>, <span class='object_link'><a href="Module.html#debugging%3F-instance_method" title="Msf::Module#debugging? (method)">#debugging?</a></span>, <span class='object_link'><a href="Module.html#default_cred%3F-instance_method" title="Msf::Module#default_cred? (method)">#default_cred?</a></span>, <span class='object_link'><a href="Module.html#default_options-instance_method" title="Msf::Module#default_options (method)">#default_options</a></span>, <span class='object_link'><a href="Module.html#file_path-instance_method" title="Msf::Module#file_path (method)">#file_path</a></span>, <span class='object_link'><a href="Module.html#framework-instance_method" title="Msf::Module#framework (method)">#framework</a></span>, <span class='object_link'><a href="Module.html#has_check%3F-instance_method" title="Msf::Module#has_check? (method)">#has_check?</a></span>, <span class='object_link'><a href="Module.html#merge_module_info_with_target_info-instance_method" title="Msf::Module#merge_module_info_with_target_info (method)">#merge_module_info_with_target_info</a></span>, <span class='object_link'><a href="Module.html#orig_cls-instance_method" title="Msf::Module#orig_cls (method)">#orig_cls</a></span>, <span class='object_link'><a href="Module.html#owner-instance_method" title="Msf::Module#owner (method)">#owner</a></span>, <span class='object_link'><a href="Module.html#perform_extensions-instance_method" title="Msf::Module#perform_extensions (method)">#perform_extensions</a></span>, <span class='object_link'><a href="Module.html#platform%3F-instance_method" title="Msf::Module#platform? (method)">#platform?</a></span>, <span class='object_link'><a href="Module.html#platform_to_s-instance_method" title="Msf::Module#platform_to_s (method)">#platform_to_s</a></span>, <span class='object_link'><a href="Module.html#post_auth%3F-instance_method" title="Msf::Module#post_auth? (method)">#post_auth?</a></span>, <span class='object_link'><a href="Module.html#register_extensions-instance_method" title="Msf::Module#register_extensions (method)">#register_extensions</a></span>, <span class='object_link'><a href="Module.html#register_parent-instance_method" title="Msf::Module#register_parent (method)">#register_parent</a></span>, <span class='object_link'><a href="Module.html#replicant-instance_method" title="Msf::Module#replicant (method)">#replicant</a></span>, <span class='object_link'><a href="Module.html#required_cred_options-instance_method" title="Msf::Module#required_cred_options (method)">#required_cred_options</a></span>, <span class='object_link'><a href="Module.html#set_defaults-instance_method" title="Msf::Module#set_defaults (method)">#set_defaults</a></span>, <span class='object_link'><a href="Module.html#stage_refname-instance_method" title="Msf::Module#stage_refname (method)">#stage_refname</a></span>, <span class='object_link'><a href="Module.html#stager_refname-instance_method" title="Msf::Module#stager_refname (method)">#stager_refname</a></span>, <span class='object_link'><a href="Module.html#workspace-instance_method" title="Msf::Module#workspace (method)">#workspace</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Reliability.html" title="Msf::Module::Reliability (module)">Module::Reliability</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Reliability.html#reliability-instance_method" title="Msf::Module::Reliability#reliability (method)">#reliability</a></span>, <span class='object_link'><a href="Module/Reliability.html#reliability_to_s-instance_method" title="Msf::Module::Reliability#reliability_to_s (method)">#reliability_to_s</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Stability.html" title="Msf::Module::Stability (module)">Module::Stability</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Stability.html#stability-instance_method" title="Msf::Module::Stability#stability (method)">#stability</a></span>, <span class='object_link'><a href="Module/Stability.html#stability_to_s-instance_method" title="Msf::Module::Stability#stability_to_s (method)">#stability_to_s</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/SideEffects.html" title="Msf::Module::SideEffects (module)">Module::SideEffects</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/SideEffects.html#side_effects-instance_method" title="Msf::Module::SideEffects#side_effects (method)">#side_effects</a></span>, <span class='object_link'><a href="Module/SideEffects.html#side_effects_to_s-instance_method" title="Msf::Module::SideEffects#side_effects_to_s (method)">#side_effects_to_s</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/UI.html" title="Msf::Module::UI (module)">Module::UI</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/UI.html#init_ui-instance_method" title="Msf::Module::UI#init_ui (method)">#init_ui</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/UI/Message.html" title="Msf::Module::UI::Message (module)">Module::UI::Message</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/UI/Message.html#print_error-instance_method" title="Msf::Module::UI::Message#print_error (method)">#print_error</a></span>, <span class='object_link'><a href="Module/UI/Message.html#print_good-instance_method" title="Msf::Module::UI::Message#print_good (method)">#print_good</a></span>, <span class='object_link'><a href="Module/UI/Message.html#print_prefix-instance_method" title="Msf::Module::UI::Message#print_prefix (method)">#print_prefix</a></span>, <span class='object_link'><a href="Module/UI/Message.html#print_status-instance_method" title="Msf::Module::UI::Message#print_status (method)">#print_status</a></span>, <span class='object_link'><a href="Module/UI/Message.html#print_warning-instance_method" title="Msf::Module::UI::Message#print_warning (method)">#print_warning</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/UI/Message/Verbose.html" title="Msf::Module::UI::Message::Verbose (module)">Module::UI::Message::Verbose</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/UI/Message/Verbose.html#vprint_error-instance_method" title="Msf::Module::UI::Message::Verbose#vprint_error (method)">#vprint_error</a></span>, <span class='object_link'><a href="Module/UI/Message/Verbose.html#vprint_good-instance_method" title="Msf::Module::UI::Message::Verbose#vprint_good (method)">#vprint_good</a></span>, <span class='object_link'><a href="Module/UI/Message/Verbose.html#vprint_status-instance_method" title="Msf::Module::UI::Message::Verbose#vprint_status (method)">#vprint_status</a></span>, <span class='object_link'><a href="Module/UI/Message/Verbose.html#vprint_warning-instance_method" title="Msf::Module::UI::Message::Verbose#vprint_warning (method)">#vprint_warning</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/UI/Line.html" title="Msf::Module::UI::Line (module)">Module::UI::Line</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/UI/Line.html#print_line-instance_method" title="Msf::Module::UI::Line#print_line (method)">#print_line</a></span>, <span class='object_link'><a href="Module/UI/Line.html#print_line_prefix-instance_method" title="Msf::Module::UI::Line#print_line_prefix (method)">#print_line_prefix</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/UI/Line/Verbose.html" title="Msf::Module::UI::Line::Verbose (module)">Module::UI::Line::Verbose</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/UI/Line/Verbose.html#vprint_line-instance_method" title="Msf::Module::UI::Line::Verbose#vprint_line (method)">#vprint_line</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="../Rex/Ui/Subscriber.html" title="Rex::Ui::Subscriber (module)">Rex::Ui::Subscriber</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="../Rex/Ui/Subscriber.html#copy_ui-instance_method" title="Rex::Ui::Subscriber#copy_ui (method)">#copy_ui</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber.html#init_ui-instance_method" title="Rex::Ui::Subscriber#init_ui (method)">#init_ui</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber.html#reset_ui-instance_method" title="Rex::Ui::Subscriber#reset_ui (method)">#reset_ui</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="../Rex/Ui/Subscriber/Input.html" title="Rex::Ui::Subscriber::Input (module)">Rex::Ui::Subscriber::Input</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="../Rex/Ui/Subscriber/Input.html#gets-instance_method" title="Rex::Ui::Subscriber::Input#gets (method)">#gets</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html" title="Rex::Ui::Subscriber::Output (module)">Rex::Ui::Subscriber::Output</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#flush-instance_method" title="Rex::Ui::Subscriber::Output#flush (method)">#flush</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#print-instance_method" title="Rex::Ui::Subscriber::Output#print (method)">#print</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#print_blank_line-instance_method" title="Rex::Ui::Subscriber::Output#print_blank_line (method)">#print_blank_line</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#print_error-instance_method" title="Rex::Ui::Subscriber::Output#print_error (method)">#print_error</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#print_good-instance_method" title="Rex::Ui::Subscriber::Output#print_good (method)">#print_good</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#print_line-instance_method" title="Rex::Ui::Subscriber::Output#print_line (method)">#print_line</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#print_status-instance_method" title="Rex::Ui::Subscriber::Output#print_status (method)">#print_status</a></span>, <span class='object_link'><a href="../Rex/Ui/Subscriber/Output.html#print_warning-instance_method" title="Rex::Ui::Subscriber::Output#print_warning (method)">#print_warning</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Type.html" title="Msf::Module::Type (module)">Module::Type</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Type.html#auxiliary%3F-instance_method" title="Msf::Module::Type#auxiliary? (method)">#auxiliary?</a></span>, <span class='object_link'><a href="Module/Type.html#encoder%3F-instance_method" title="Msf::Module::Type#encoder? (method)">#encoder?</a></span>, <span class='object_link'><a href="Module/Type.html#evasion%3F-instance_method" title="Msf::Module::Type#evasion? (method)">#evasion?</a></span>, <span class='object_link'><a href="Module/Type.html#exploit%3F-instance_method" title="Msf::Module::Type#exploit? (method)">#exploit?</a></span>, <span class='object_link'><a href="Module/Type.html#nop%3F-instance_method" title="Msf::Module::Type#nop? (method)">#nop?</a></span>, <span class='object_link'><a href="Module/Type.html#payload%3F-instance_method" title="Msf::Module::Type#payload? (method)">#payload?</a></span>, <span class='object_link'><a href="Module/Type.html#post%3F-instance_method" title="Msf::Module::Type#post? (method)">#post?</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Ranking.html" title="Msf::Module::Ranking (module)">Module::Ranking</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Ranking.html#rank-instance_method" title="Msf::Module::Ranking#rank (method)">#rank</a></span>, <span class='object_link'><a href="Module/Ranking.html#rank_to_h-instance_method" title="Msf::Module::Ranking#rank_to_h (method)">#rank_to_h</a></span>, <span class='object_link'><a href="Module/Ranking.html#rank_to_s-instance_method" title="Msf::Module::Ranking#rank_to_s (method)">#rank_to_s</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Privileged.html" title="Msf::Module::Privileged (module)">Module::Privileged</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Privileged.html#privileged%3F-instance_method" title="Msf::Module::Privileged#privileged? (method)">#privileged?</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Options.html" title="Msf::Module::Options (module)">Module::Options</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Options.html#deregister_option_group-instance_method" title="Msf::Module::Options#deregister_option_group (method)">#deregister_option_group</a></span>, <span class='object_link'><a href="Module/Options.html#deregister_options-instance_method" title="Msf::Module::Options#deregister_options (method)">#deregister_options</a></span>, <span class='object_link'><a href="Module/Options.html#register_advanced_options-instance_method" title="Msf::Module::Options#register_advanced_options (method)">#register_advanced_options</a></span>, <span class='object_link'><a href="Module/Options.html#register_evasion_options-instance_method" title="Msf::Module::Options#register_evasion_options (method)">#register_evasion_options</a></span>, <span class='object_link'><a href="Module/Options.html#register_option_group-instance_method" title="Msf::Module::Options#register_option_group (method)">#register_option_group</a></span>, <span class='object_link'><a href="Module/Options.html#register_options-instance_method" title="Msf::Module::Options#register_options (method)">#register_options</a></span>, <span class='object_link'><a href="Module/Options.html#validate-instance_method" title="Msf::Module::Options#validate (method)">#validate</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Network.html" title="Msf::Module::Network (module)">Module::Network</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Network.html#comm-instance_method" title="Msf::Module::Network#comm (method)">#comm</a></span>, <span class='object_link'><a href="Module/Network.html#support_ipv6%3F-instance_method" title="Msf::Module::Network#support_ipv6? (method)">#support_ipv6?</a></span>, <span class='object_link'><a href="Module/Network.html#target_host-instance_method" title="Msf::Module::Network#target_host (method)">#target_host</a></span>, <span class='object_link'><a href="Module/Network.html#target_port-instance_method" title="Msf::Module::Network#target_port (method)">#target_port</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/ModuleStore.html" title="Msf::Module::ModuleStore (module)">Module::ModuleStore</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/ModuleStore.html#[]-instance_method" title="Msf::Module::ModuleStore#[] (method)">#[]</a></span>, <span class='object_link'><a href="Module/ModuleStore.html#[]=-instance_method" title="Msf::Module::ModuleStore#[]= (method)">#[]=</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/ModuleInfo.html" title="Msf::Module::ModuleInfo (module)">Module::ModuleInfo</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/ModuleInfo.html#alias-instance_method" title="Msf::Module::ModuleInfo#alias (method)">#alias</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#description-instance_method" title="Msf::Module::ModuleInfo#description (method)">#description</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#disclosure_date-instance_method" title="Msf::Module::ModuleInfo#disclosure_date (method)">#disclosure_date</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#info_fixups-instance_method" title="Msf::Module::ModuleInfo#info_fixups (method)">#info_fixups</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_check_key-instance_method" title="Msf::Module::ModuleInfo#merge_check_key (method)">#merge_check_key</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info-instance_method" title="Msf::Module::ModuleInfo#merge_info (method)">#merge_info</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_advanced_options-instance_method" title="Msf::Module::ModuleInfo#merge_info_advanced_options (method)">#merge_info_advanced_options</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_alias-instance_method" title="Msf::Module::ModuleInfo#merge_info_alias (method)">#merge_info_alias</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_description-instance_method" title="Msf::Module::ModuleInfo#merge_info_description (method)">#merge_info_description</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_evasion_options-instance_method" title="Msf::Module::ModuleInfo#merge_info_evasion_options (method)">#merge_info_evasion_options</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_name-instance_method" title="Msf::Module::ModuleInfo#merge_info_name (method)">#merge_info_name</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_options-instance_method" title="Msf::Module::ModuleInfo#merge_info_options (method)">#merge_info_options</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_string-instance_method" title="Msf::Module::ModuleInfo#merge_info_string (method)">#merge_info_string</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#merge_info_version-instance_method" title="Msf::Module::ModuleInfo#merge_info_version (method)">#merge_info_version</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#name-instance_method" title="Msf::Module::ModuleInfo#name (method)">#name</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#notes-instance_method" title="Msf::Module::ModuleInfo#notes (method)">#notes</a></span>, <span class='object_link'><a href="Module/ModuleInfo.html#update_info-instance_method" title="Msf::Module::ModuleInfo#update_info (method)">#update_info</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/FullName.html" title="Msf::Module::FullName (module)">Module::FullName</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/FullName.html#aliases-instance_method" title="Msf::Module::FullName#aliases (method)">#aliases</a></span>, <span class='object_link'><a href="Module/FullName.html#fullname-instance_method" title="Msf::Module::FullName#fullname (method)">#fullname</a></span>, <span class='object_link'><a href="Module/FullName.html#promptname-instance_method" title="Msf::Module::FullName#promptname (method)">#promptname</a></span>, <span class='object_link'><a href="Module/FullName.html#realname-instance_method" title="Msf::Module::FullName#realname (method)">#realname</a></span>, <span class='object_link'><a href="Module/FullName.html#refname-instance_method" title="Msf::Module::FullName#refname (method)">#refname</a></span>, <span class='object_link'><a href="Module/FullName.html#shortname-instance_method" title="Msf::Module::FullName#shortname (method)">#shortname</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Module::Failure</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Failure.html#fail_reason_from_check_code-class_method" title="Msf::Module::Failure.fail_reason_from_check_code (method)">fail_reason_from_check_code</a></span>, <span class='object_link'><a href="Module/Failure.html#report_failure-instance_method" title="Msf::Module::Failure#report_failure (method)">#report_failure</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/DataStore.html" title="Msf::Module::DataStore (module)">Module::DataStore</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/DataStore.html#import_defaults-instance_method" title="Msf::Module::DataStore#import_defaults (method)">#import_defaults</a></span>, <span class='object_link'><a href="Module/DataStore.html#import_target_defaults-instance_method" title="Msf::Module::DataStore#import_target_defaults (method)">#import_target_defaults</a></span>, <span class='object_link'><a href="Module/DataStore.html#share_datastore-instance_method" title="Msf::Module::DataStore#share_datastore (method)">#share_datastore</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Compatibility.html" title="Msf::Module::Compatibility (module)">Module::Compatibility</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Compatibility.html#compat-instance_method" title="Msf::Module::Compatibility#compat (method)">#compat</a></span>, <span class='object_link'><a href="Module/Compatibility.html#compatible%3F-instance_method" title="Msf::Module::Compatibility#compatible? (method)">#compatible?</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Author.html" title="Msf::Module::Author (module)">Module::Author</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Author.html#author_to_s-instance_method" title="Msf::Module::Author#author_to_s (method)">#author_to_s</a></span>, <span class='object_link'><a href="Module/Author.html#each_author-instance_method" title="Msf::Module::Author#each_author (method)">#each_author</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Auth.html" title="Msf::Module::Auth (module)">Module::Auth</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Auth.html#store_valid_credential-instance_method" title="Msf::Module::Auth#store_valid_credential (method)">#store_valid_credential</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Arch.html" title="Msf::Module::Arch (module)">Module::Arch</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Arch.html#arch%3F-instance_method" title="Msf::Module::Arch#arch? (method)">#arch?</a></span>, <span class='object_link'><a href="Module/Arch.html#arch_to_s-instance_method" title="Msf::Module::Arch#arch_to_s (method)">#arch_to_s</a></span>, <span class='object_link'><a href="Module/Arch.html#each_arch-instance_method" title="Msf::Module::Arch#each_arch (method)">#each_arch</a></span></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3 class="inherited">Methods included from <span class='object_link'><a href="Module/Alert.html" title="Msf::Module::Alert (module)">Module::Alert</a></span></h3>
|
||
<p class="inherited"><span class='object_link'><a href="Module/Alert.html#add_alert-instance_method" title="Msf::Module::Alert#add_alert (method)">#add_alert</a></span>, <span class='object_link'><a href="Module/Alert.html#add_error-instance_method" title="Msf::Module::Alert#add_error (method)">#add_error</a></span>, <span class='object_link'><a href="Module/Alert.html#add_info-instance_method" title="Msf::Module::Alert#add_info (method)">#add_info</a></span>, <span class='object_link'><a href="Module/Alert.html#add_warning-instance_method" title="Msf::Module::Alert#add_warning (method)">#add_warning</a></span>, <span class='object_link'><a href="Module/Alert.html#alert_user-instance_method" title="Msf::Module::Alert#alert_user (method)">#alert_user</a></span>, <span class='object_link'><a href="Module/Alert.html#errors-instance_method" title="Msf::Module::Alert#errors (method)">#errors</a></span>, <span class='object_link'><a href="Module/Alert.html#get_alerts-instance_method" title="Msf::Module::Alert#get_alerts (method)">#get_alerts</a></span>, <span class='object_link'><a href="Module/Alert.html#included-class_method" title="Msf::Module::Alert.included (method)">included</a></span>, <span class='object_link'><a href="Module/Alert.html#infos-instance_method" title="Msf::Module::Alert#infos (method)">#infos</a></span>, <span class='object_link'><a href="Module/Alert.html#is_usable%3F-instance_method" title="Msf::Module::Alert#is_usable? (method)">#is_usable?</a></span>, <span class='object_link'><a href="Module/Alert.html#warnings-instance_method" title="Msf::Module::Alert#warnings (method)">#warnings</a></span>, <span class='object_link'><a href="Module/Alert.html#without_prompt-instance_method" title="Msf::Module::Alert#without_prompt (method)">#without_prompt</a></span></p>
|
||
<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>(info = {}) ⇒ <tt><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Creates an instance of the exploit module. Mad skillz.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
249
|
||
250
|
||
251
|
||
252
|
||
253
|
||
254
|
||
255
|
||
256
|
||
257
|
||
258
|
||
259
|
||
260
|
||
261
|
||
262
|
||
263
|
||
264
|
||
265
|
||
266
|
||
267
|
||
268
|
||
269
|
||
270
|
||
271
|
||
272
|
||
273
|
||
274
|
||
275
|
||
276
|
||
277
|
||
278
|
||
279
|
||
280
|
||
281
|
||
282
|
||
283
|
||
284
|
||
285
|
||
286
|
||
287
|
||
288
|
||
289
|
||
290
|
||
291
|
||
292
|
||
293
|
||
294
|
||
295
|
||
296
|
||
297
|
||
298
|
||
299
|
||
300
|
||
301
|
||
302
|
||
303
|
||
304
|
||
305
|
||
306
|
||
307
|
||
308
|
||
309
|
||
310
|
||
311
|
||
312
|
||
313</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 249</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='comment'># Ghetto compat mirroring for payload compatibilities. This mirrors
|
||
</span> <span class='comment'>#
|
||
</span> <span class='comment'># Payload => Compat => xyz
|
||
</span> <span class='comment'>#
|
||
</span> <span class='comment'># to
|
||
</span> <span class='comment'>#
|
||
</span> <span class='comment'># Compat => Payload => xyz
|
||
</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Payload</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='kw'>and</span> <span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Payload</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Compat</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Compat</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='const'>Hash</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Compat</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Compat</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Payload</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='const'>Hash</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Compat</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Payload</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Compat</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Payload</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_update'>update</span><span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Payload</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Compat</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Call the parent constructor after making any necessary modifications
|
||
</span> <span class='comment'># to the information hash.
|
||
</span> <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_info'>info</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>DefaultTarget</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_default_target'>default_target</span> <span class='op'>=</span> <span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>DefaultTarget</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>else</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_default_target'>default_target</span> <span class='op'>=</span> <span class='int'>0</span>
|
||
<span class='comment'># Add an auto-target to the exploit if it doesn't have one
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Targets</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>&&</span> <span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Targets</span><span class='tstring_end'>'</span></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='op'>!</span><span class='id identifier rubyid_has_auto_target?'>has_auto_target?</span><span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Targets</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
||
<span class='comment'># Finally, only add the target if there is a remote host option
|
||
</span> <span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:rhost</span><span class='rparen'>)</span> <span class='op'>&&</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:auto_targeted_index</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_auto'>auto</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Automatic</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>AutoGenerated</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='kw'>true</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Targets</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_default_target'>default_target</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Targets</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_unshift'>unshift</span><span class='lparen'>(</span><span class='id identifier rubyid_auto'>auto</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_targets'>targets</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Rex.html" title="Rex (module)">Rex</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Rex/Transformer.html" title="Rex::Transformer (class)">Transformer</a></span></span><span class='period'>.</span><span class='id identifier rubyid_transform'><span class='object_link'><a href="../Rex/Transformer.html#transform-class_method" title="Rex::Transformer.transform (method)">transform</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Targets</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='const'>Array</span><span class='comma'>,</span> <span class='lbracket'>[</span> <span class='const'><span class='object_link'><a href="Module/Target.html" title="Msf::Module::Target (class)">Target</a></span></span> <span class='rbracket'>]</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Targets</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload_info'>payload_info</span> <span class='op'>=</span> <span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Payload</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_successful'>successful</span> <span class='op'>=</span> <span class='kw'>false</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_session_count'>session_count</span> <span class='op'>=</span> <span class='int'>0</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_active_timeout'>active_timeout</span> <span class='op'>=</span> <span class='int'>120</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#None-constant" title="Msf::Module::Failure::None (constant)">None</a></span></span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Payload</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='kw'>and</span> <span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Payload</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ActiveTimeout</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_active_timeout'>active_timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Payload</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ActiveTimeout</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Initialize exploit datastore with target information
|
||
</span> <span class='id identifier rubyid_import_target_defaults'>import_target_defaults</span>
|
||
|
||
<span class='comment'># All exploits can increase the delay when waiting for a session.
|
||
</span> <span class='comment'># However, this only applies to aggressive exploits.
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_aggressive?'>aggressive?</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="OptInt.html" title="Msf::OptInt (class)">OptInt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="OptBase.html#initialize-instance_method" title="Msf::OptBase#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>WfsDelay</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 delay in seconds to wait for a session</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='int'>2</span> <span class='rbracket'>]</span><span class='rparen'>)</span>
|
||
<span class='rbracket'>]</span><span class='comma'>,</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="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_register_advanced_options'>register_advanced_options</span><span class='lparen'>(</span>
|
||
<span class='lbracket'>[</span>
|
||
<span class='comment'># Allow all exploits to leverage context keyed encoding
|
||
</span> <span class='const'><span class='object_link'><a href="OptBool.html" title="Msf::OptBool (class)">OptBool</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="OptBool.html#initialize-instance_method" title="Msf::OptBool#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>EnableContextEncoding</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'>Use transient context when encoding payloads</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='kw'>false</span> <span class='rbracket'>]</span><span class='rparen'>)</span><span class='comma'>,</span>
|
||
<span class='const'><span class='object_link'><a href="OptPath.html" title="Msf::OptPath (class)">OptPath</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="OptBase.html#initialize-instance_method" title="Msf::OptBase#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ContextInformationFile</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'>The information file that contains context information</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='comment'># Allow all exploits to disable their payload handlers
|
||
</span> <span class='const'><span class='object_link'><a href="OptBool.html" title="Msf::OptBool (class)">OptBool</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="OptBool.html#initialize-instance_method" title="Msf::OptBool#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>DisablePayloadHandler</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'>Disable the handler code for the selected payload</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='kw'>false</span> <span class='rbracket'>]</span><span class='rparen'>)</span>
|
||
<span class='rbracket'>]</span><span class='comma'>,</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="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='rparen'>)</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="active_timeout=-instance_method"></span>
|
||
<div class="method_details first">
|
||
<h3 class="signature first" id="active_timeout-instance_method">
|
||
|
||
#<strong>active_timeout</strong> ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Maximum number of seconds for active handlers</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1557
|
||
1558
|
||
1559</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1557</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_active_timeout'>active_timeout</span>
|
||
<span class='ivar'>@active_timeout</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
|
||
<span id="default_target=-instance_method"></span>
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="default_target-instance_method">
|
||
|
||
#<strong>default_target</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>The default target.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1510
|
||
1511
|
||
1512</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1510</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_default_target'>default_target</span>
|
||
<span class='ivar'>@default_target</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
|
||
<span id="fail_detail=-instance_method"></span>
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="fail_detail-instance_method">
|
||
|
||
#<strong>fail_detail</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Detailed exception string indicating why the exploit was not successful</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1494
|
||
1495
|
||
1496</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1494</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_fail_detail'>fail_detail</span>
|
||
<span class='ivar'>@fail_detail</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
|
||
<span id="fail_reason=-instance_method"></span>
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="fail_reason-instance_method">
|
||
|
||
#<strong>fail_reason</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>The reason why the exploit was not successful (one of Msf::Module::Failure)</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1489
|
||
1490
|
||
1491</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1489</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_fail_reason'>fail_reason</span>
|
||
<span class='ivar'>@fail_reason</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
|
||
<span id="last_vuln_attempt=-instance_method"></span>
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="last_vuln_attempt-instance_method">
|
||
|
||
#<strong>last_vuln_attempt</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>The VulnAttempt object created during this run, or nil/false if none was recorded. Used to prevent duplicate attempts when report_failure is called later and to enrich the attempt with check code details.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1501
|
||
1502
|
||
1503</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1501</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_last_vuln_attempt'>last_vuln_attempt</span>
|
||
<span class='ivar'>@last_vuln_attempt</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
|
||
<span id="needs_cleanup=-instance_method"></span>
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="needs_cleanup-instance_method">
|
||
|
||
#<strong>needs_cleanup</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the value of attribute needs_cleanup.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
244
|
||
245
|
||
246</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 244</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_needs_cleanup'>needs_cleanup</span>
|
||
<span class='ivar'>@needs_cleanup</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
|
||
<span id="payload=-instance_method"></span>
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload-instance_method">
|
||
|
||
#<strong>payload</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>The encoded payload instance. An instance of an EncodedPayload object.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1523
|
||
1524
|
||
1525</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1523</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload'>payload</span>
|
||
<span class='ivar'>@payload</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
|
||
<span id="payload_info=-instance_method"></span>
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload_info-instance_method">
|
||
|
||
#<strong>payload_info</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>The payload requirement hash.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1514
|
||
1515
|
||
1516</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1514</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_info'>payload_info</span>
|
||
<span class='ivar'>@payload_info</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
|
||
<span id="payload_instance=-instance_method"></span>
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload_instance-instance_method">
|
||
|
||
#<strong>payload_instance</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>The active payload instance.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1518
|
||
1519
|
||
1520</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1518</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span>
|
||
<span class='ivar'>@payload_instance</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
|
||
<span id="session_count=-instance_method"></span>
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="session_count-instance_method">
|
||
|
||
#<strong>session_count</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>The number of active sessions created by this instance</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1528
|
||
1529
|
||
1530</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1528</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_session_count'>session_count</span>
|
||
<span class='ivar'>@session_count</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
|
||
<span id="successful=-instance_method"></span>
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="successful-instance_method">
|
||
|
||
#<strong>successful</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>The boolean indicating whether the exploit succeeded</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1533
|
||
1534
|
||
1535</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1533</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_successful'>successful</span>
|
||
<span class='ivar'>@successful</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
|
||
<span id="targets=-instance_method"></span>
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="targets-instance_method">
|
||
|
||
#<strong>targets</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>The list of targets.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1506
|
||
1507
|
||
1508</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1506</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_targets'>targets</span>
|
||
<span class='ivar'>@targets</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<div id="class_method_details" class="method_details_list">
|
||
<h2>Class Method Details</h2>
|
||
|
||
|
||
<div class="method_details first">
|
||
<h3 class="signature first" id="mixins-class_method">
|
||
|
||
.<strong>mixins</strong> ⇒ <tt>Array</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns an array of all of the exploit mixins. Lame algorithm right now. We search the Msf::Exploit namespace for all modules that do not have any constants in them. In the future we can replace this with a better algorithm. It’s just important that it returns an array of all of the mixin modules.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Array</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
212
|
||
213
|
||
214
|
||
215
|
||
216
|
||
217
|
||
218
|
||
219
|
||
220
|
||
221
|
||
222
|
||
223
|
||
224
|
||
225
|
||
226
|
||
227
|
||
228
|
||
229
|
||
230
|
||
231
|
||
232
|
||
233
|
||
234
|
||
235
|
||
236
|
||
237
|
||
238
|
||
239
|
||
240
|
||
241
|
||
242</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 212</span>
|
||
|
||
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_mixins'>mixins</span>
|
||
<span class='id identifier rubyid_mixins'>mixins</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_wl'>wl</span> <span class='op'>=</span> <span class='lbracket'>[</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="" title="Msf::Exploit (class)">Exploit</a></span></span> <span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_visited'>visited</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
|
||
|
||
<span class='kw'>until</span> <span class='id identifier rubyid_wl'>wl</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>0</span>
|
||
<span class='id identifier rubyid_wl'>wl</span><span class='period'>.</span><span class='id identifier rubyid_delete_if'>delete_if</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_mod'>mod</span><span class='op'>|</span>
|
||
<span class='id identifier rubyid_mod'>mod</span><span class='period'>.</span><span class='id identifier rubyid_constants'>constants</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_const'>const</span><span class='op'>|</span>
|
||
<span class='id identifier rubyid_child'>child</span> <span class='op'>=</span> <span class='id identifier rubyid_mod'>mod</span><span class='period'>.</span><span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='id identifier rubyid_const'>const</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_child'>child</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>!~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^Msf::Exploit</span><span class='regexp_end'>/</span></span>
|
||
|
||
<span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_visited'>visited</span><span class='lbracket'>[</span><span class='id identifier rubyid_child'>child</span><span class='rbracket'>]</span>
|
||
|
||
<span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_child'>child</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>Module</span><span class='rparen'>)</span> <span class='op'>==</span> <span class='kw'>false</span>
|
||
|
||
<span class='id identifier rubyid_visited'>visited</span><span class='lbracket'>[</span><span class='id identifier rubyid_child'>child</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='kw'>true</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_child'>child</span><span class='period'>.</span><span class='id identifier rubyid_constants'>constants</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>></span> <span class='int'>0</span>
|
||
<span class='id identifier rubyid_wl'>wl</span> <span class='op'><<</span> <span class='id identifier rubyid_child'>child</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_mixins'>mixins</span> <span class='op'><<</span> <span class='id identifier rubyid_child'>child</span>
|
||
<span class='kw'>end</span>
|
||
<span class='rbrace'>}</span>
|
||
|
||
<span class='kw'>true</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_mixins'>mixins</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="type-class_method">
|
||
|
||
.<strong>type</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns MODULE_EXPLOIT to indicate that this is an exploit module.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
592
|
||
593
|
||
594</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 592</span>
|
||
|
||
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</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="../Msf.html#MODULE_EXPLOIT-constant" title="Msf::MODULE_EXPLOIT (constant)">MODULE_EXPLOIT</a></span></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="add_handler-instance_method">
|
||
|
||
#<strong>add_handler</strong>(opts = {}) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Allows the payload handler to spawn a new monitor</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
471
|
||
472
|
||
473
|
||
474
|
||
475</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 471</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_add_handler'>add_handler</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='op'>=</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span>
|
||
<span class='kw'>return</span> <span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_handler_enabled?'>handler_enabled?</span>
|
||
<span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_add_handler'>add_handler</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="aggressive?-instance_method">
|
||
|
||
#<strong>aggressive?</strong> ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns true if the exploit has an aggressive stance.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Boolean</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
620
|
||
621
|
||
622</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 620</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_aggressive?'>aggressive?</span>
|
||
<span class='id identifier rubyid_stance'>stance</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Exploit/Stance.html" title="Msf::Exploit::Stance (module)">Stance</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Stance.html#Aggressive-constant" title="Msf::Exploit::Stance::Aggressive (constant)">Aggressive</a></span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="autofilter-instance_method">
|
||
|
||
#<strong>autofilter</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Performs last-minute sanity checking of exploit parameters. This method is called during automated exploitation attempts and allows an exploit to filter bad targets, obtain more information, and choose better targets based on the available data. Returning anything that evaluates to “false” will cause this specific exploit attempt to be skipped. This method can and will change datastore values and may interact with the backend database.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
353
|
||
354
|
||
355</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 353</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_autofilter'>autofilter</span>
|
||
<span class='kw'>true</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="autofilter_ports-instance_method">
|
||
|
||
#<strong>autofilter_ports</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Provides a list of ports that can be used for matching this module against target systems.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
361
|
||
362
|
||
363</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 361</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_autofilter_ports'>autofilter_ports</span>
|
||
<span class='ivar'>@autofilter_ports</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="autofilter_services-instance_method">
|
||
|
||
#<strong>autofilter_services</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Provides a list of services that can be used for matching this module against target systems.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
369
|
||
370
|
||
371</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 369</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_autofilter_services'>autofilter_services</span>
|
||
<span class='ivar'>@autofilter_services</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="cleanup-instance_method">
|
||
|
||
#<strong>cleanup</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Performs any cleanup that may be necessary, such as disconnecting connections and any other such fun things. If a payload is active then its handler cleanup routines are called as well.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
423
|
||
424
|
||
425
|
||
426
|
||
427
|
||
428</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 423</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_cleanup'>cleanup</span>
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_payload_instance'>payload_instance</span> <span class='kw'>and</span> <span class='id identifier rubyid_handler_enabled?'>handler_enabled?</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_cleanup_handler'>cleanup_handler</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_abort_sockets'>abort_sockets</span> <span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:abort_sockets</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="compatible_encoders-instance_method">
|
||
|
||
#<strong>compatible_encoders</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns a list of compatible encoders based on architecture</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
755
|
||
756
|
||
757
|
||
758
|
||
759
|
||
760
|
||
761
|
||
762
|
||
763
|
||
764
|
||
765
|
||
766</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 755</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_compatible_encoders'>compatible_encoders</span>
|
||
<span class='id identifier rubyid_encoders'>encoders</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
||
|
||
<span class='id identifier rubyid_c_platform'>c_platform</span><span class='comma'>,</span> <span class='id identifier rubyid_c_arch'>c_arch</span> <span class='op'>=</span> <span class='id identifier rubyid_normalize_platform_arch'>normalize_platform_arch</span>
|
||
|
||
<span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_encoders'>encoders</span><span class='period'>.</span><span class='id identifier rubyid_each_module_ranked'>each_module_ranked</span><span class='lparen'>(</span>
|
||
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Arch</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='id identifier rubyid_c_arch'>c_arch</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Platform</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='id identifier rubyid_c_platform'>c_platform</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_mod'>mod</span><span class='op'>|</span>
|
||
<span class='id identifier rubyid_encoders'>encoders</span> <span class='op'><<</span> <span class='lbracket'>[</span> <span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_mod'>mod</span> <span class='rbracket'>]</span>
|
||
<span class='rbrace'>}</span>
|
||
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_encoders'>encoders</span><span class='semicolon'>;</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="compatible_payloads-instance_method">
|
||
|
||
#<strong>compatible_payloads</strong>(excluded_platforms: [], excluded_archs: []) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns a list of compatible payloads based on platform, architecture, and size requirements.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
731
|
||
732
|
||
733
|
||
734
|
||
735
|
||
736
|
||
737
|
||
738
|
||
739
|
||
740
|
||
741
|
||
742
|
||
743
|
||
744
|
||
745
|
||
746
|
||
747
|
||
748
|
||
749
|
||
750</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 731</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_compatible_payloads'>compatible_payloads</span><span class='lparen'>(</span><span class='label'>excluded_platforms:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='label'>excluded_archs:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_payloads'>payloads</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
||
|
||
<span class='id identifier rubyid_c_platform'>c_platform</span><span class='comma'>,</span> <span class='id identifier rubyid_c_arch'>c_arch</span> <span class='op'>=</span> <span class='id identifier rubyid_normalize_platform_arch'>normalize_platform_arch</span>
|
||
|
||
<span class='comment'># The "All" platform name represents generic payloads
|
||
</span> <span class='id identifier rubyid_results'>results</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Modules.html" title="Msf::Modules (module)">Modules</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Modules/Metadata.html" title="Msf::Modules::Metadata (module)">Metadata</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Modules/Metadata/Cache.html" title="Msf::Modules::Metadata::Cache (class)">Cache</a></span></span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_find'>find</span><span class='lparen'>(</span>
|
||
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>type</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='lbracket'>[</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>payload</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>platform</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='lbracket'>[</span><span class='lbracket'>[</span><span class='op'>*</span><span class='id identifier rubyid_c_platform'>c_platform</span><span class='period'>.</span><span class='id identifier rubyid_names'>names</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>All</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_excluded_platforms'>excluded_platforms</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
||
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>arch</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='lbracket'>[</span><span class='id identifier rubyid_c_arch'>c_arch</span><span class='comma'>,</span> <span class='id identifier rubyid_excluded_archs'>excluded_archs</span><span class='rbracket'>]</span>
|
||
<span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_results'>results</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_res'>res</span><span class='op'>|</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_is_payload_compatible?'>is_payload_compatible?</span><span class='lparen'>(</span><span class='id identifier rubyid_res'>res</span><span class='period'>.</span><span class='id identifier rubyid_ref_name'>ref_name</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_payloads'>payloads</span> <span class='op'><<</span> <span class='lbracket'>[</span><span class='id identifier rubyid_res'>res</span><span class='period'>.</span><span class='id identifier rubyid_ref_name'>ref_name</span><span class='comma'>,</span> <span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_payloads'>payloads</span><span class='lbracket'>[</span><span class='id identifier rubyid_res'>res</span><span class='period'>.</span><span class='id identifier rubyid_ref_name'>ref_name</span><span class='rbracket'>]</span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_payloads'>payloads</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="define_context_encoding_reqs-instance_method">
|
||
|
||
#<strong>define_context_encoding_reqs</strong>(reqs) ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Gets the memory map file and other context information that is required when wanting to support context keyed encoding</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1594
|
||
1595
|
||
1596
|
||
1597
|
||
1598
|
||
1599
|
||
1600
|
||
1601
|
||
1602
|
||
1603
|
||
1604
|
||
1605
|
||
1606</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1594</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_define_context_encoding_reqs'>define_context_encoding_reqs</span><span class='lparen'>(</span><span class='id identifier rubyid_reqs'>reqs</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>unless</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'>EnableContextEncoding</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
|
||
<span class='comment'># At present, we don't support any automatic methods of obtaining
|
||
</span> <span class='comment'># context information. In the future, we might support obtaining
|
||
</span> <span class='comment'># temporal information remotely.
|
||
</span>
|
||
<span class='comment'># Pass along the information specified in our exploit datastore as
|
||
</span> <span class='comment'># encoder options
|
||
</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>EncoderOptions</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='kw'>if</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>EncoderOptions</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>EncoderOptions</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>EnableContextEncoding</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</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'>EnableContextEncoding</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>EncoderOptions</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ContextInformationFile</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</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'>ContextInformationFile</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="encode_begin-instance_method">
|
||
|
||
#<strong>encode_begin</strong>(real_payload, reqs) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Called prior to encoding a payload.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
570
|
||
571</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 570</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_encode_begin'>encode_begin</span><span class='lparen'>(</span><span class='id identifier rubyid_real_payload'>real_payload</span><span class='comma'>,</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="encode_end-instance_method">
|
||
|
||
#<strong>encode_end</strong>(real_payload, reqs, encoded) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Called after an encoded payload has been generated. This gives exploits or mixins a chance to alter the encoded payload.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
577
|
||
578
|
||
579</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 577</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_encode_end'>encode_end</span><span class='lparen'>(</span><span class='id identifier rubyid_real_payload'>real_payload</span><span class='comma'>,</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='comma'>,</span> <span class='id identifier rubyid_encoded'>encoded</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_encoded'>encoded</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="encode_shellcode_stub-instance_method">
|
||
|
||
#<strong>encode_shellcode_stub</strong>(code, badchars = payload_badchars) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Allows arbitrary shellcode to be encoded from within an exploit</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
452
|
||
453
|
||
454
|
||
455
|
||
456
|
||
457
|
||
458
|
||
459
|
||
460
|
||
461
|
||
462
|
||
463
|
||
464
|
||
465
|
||
466</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 452</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_encode_shellcode_stub'>encode_shellcode_stub</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_badchars'>badchars</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_platform'>platform</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span>
|
||
<span class='kw'>if</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='rparen'>)</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span>
|
||
<span class='kw'>end</span>
|
||
<span class='id identifier rubyid_compatible_encoders'>compatible_encoders</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_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_mod'>mod</span><span class='op'>|</span>
|
||
<span class='kw'>begin</span>
|
||
<span class='id identifier rubyid_enc'>enc</span> <span class='op'>=</span> <span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_encoders'>encoders</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_raw'>raw</span> <span class='op'>=</span> <span class='id identifier rubyid_enc'>enc</span><span class='period'>.</span><span class='id identifier rubyid_encode'>encode</span><span class='lparen'>(</span><span class='id identifier rubyid_code'>code</span><span class='comma'>,</span> <span class='id identifier rubyid_badchars'>badchars</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_platform'>platform</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_raw'>raw</span> <span class='kw'>if</span> <span class='id identifier rubyid_raw'>raw</span>
|
||
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>Exception</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="exploit-instance_method">
|
||
|
||
#<strong>exploit</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Kicks off the actual exploit. Prior to this call, the framework will have validated the data store using the options associated with this exploit module. It will also pre-generate the desired payload, though exploits can re-generate the payload if necessary.</p>
|
||
|
||
<p>This method is designed to be overridden by exploit modules.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
341
|
||
342</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 341</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_exploit'>exploit</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="exploit_type-instance_method">
|
||
|
||
#<strong>exploit_type</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>If we don’t know the exploit type, then I guess it’s omnipresent!</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
606
|
||
607
|
||
608</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 606</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_exploit_type'>exploit_type</span>
|
||
<span class='const'><span class='object_link'><a href="Exploit/Type.html" title="Msf::Exploit::Type (module)">Type</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Type.html#Omni-constant" title="Msf::Exploit::Type::Omni (constant)">Omni</a></span></span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="fail_with-instance_method">
|
||
|
||
#<strong>fail_with</strong>(reason, msg = nil) ⇒ <tt>void</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
<p class="note returns_void">This method returns an undefined value.</p>
|
||
<p>Raises a Msf::Exploit::Failed exception. It overrides the fail_with method in lib/msf/core/module.rb</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
<div class="examples">
|
||
<h4 class="tag_title">Examples:</h4>
|
||
|
||
|
||
<pre class="example code"><code><span class='id identifier rubyid_fail_with'>fail_with</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#NoAccess-constant" title="Msf::Module::Failure::NoAccess (constant)">NoAccess</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Unable to login to upload payload</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span></code></pre>
|
||
|
||
</div>
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>reason</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>A constant from Msf::Module::Failure. If the reason does not come from there, then it will default to Msf::Module::Failure::Unknown.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<span class='name'>msg</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>(Optional) A message about the failure.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Raises:</p>
|
||
<ul class="raise">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt><span class='object_link'><a href="Exploit/Failed.html" title="Msf::Exploit::Failed (class)">Msf::Exploit::Failed</a></span></tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>A custom Msf::Exploit::Failed exception.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">See Also:</p>
|
||
<ul class="see">
|
||
|
||
<li><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Module::Failure</a></span></li>
|
||
|
||
<li><span class='object_link'><a href="Module.html#fail_with-instance_method" title="Msf::Module#fail_with (method)">Module#fail_with</a></span></li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1348
|
||
1349
|
||
1350
|
||
1351
|
||
1352
|
||
1353
|
||
1354
|
||
1355
|
||
1356
|
||
1357
|
||
1358
|
||
1359
|
||
1360</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1348</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_fail_with'>fail_with</span><span class='lparen'>(</span><span class='id identifier rubyid_reason'>reason</span><span class='comma'>,</span><span class='id identifier rubyid_msg'>msg</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='comment'># The reason being registered here will be used later on, so it's important we don't actually
|
||
</span> <span class='comment'># provide a made-up one.
|
||
</span> <span class='id identifier rubyid_allowed_values'>allowed_values</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='period'>.</span><span class='id identifier rubyid_constants'>constants</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_e'>e</span><span class='op'>|</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='period'>.</span><span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span><span class='rbrace'>}</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_allowed_values'>allowed_values</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_reason'>reason</span><span class='rparen'>)</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='id identifier rubyid_reason'>reason</span>
|
||
<span class='kw'>else</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#Unknown-constant" title="Msf::Module::Failure::Unknown (constant)">Unknown</a></span></span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_detail'>fail_detail</span> <span class='op'>=</span> <span class='id identifier rubyid_msg'>msg</span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Failed.html" title="Msf::Exploit::Failed (class)">Failed</a></span></span><span class='comma'>,</span> <span class='lparen'>(</span><span class='id identifier rubyid_msg'>msg</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>No failure message given</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="generate_payload-instance_method">
|
||
|
||
#<strong>generate_payload</strong>(pinst = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Generates the encoded version of the supplied payload using the payload requirements specific to this exploit. The encoded instance is returned to the caller. This method is exposed in the manner that it is such that passive exploits and re-generate an encoded payload on the fly rather than having to use the pre-generated one.</p>
|
||
|
||
<p>The return value is an EncodedPayload instance.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
439
|
||
440
|
||
441
|
||
442
|
||
443
|
||
444
|
||
445
|
||
446
|
||
447</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 439</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_generate_payload'>generate_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_pinst'>pinst</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='comment'># Set the encoded payload to the result of the encoding process
|
||
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload'>payload</span> <span class='op'>=</span> <span class='id identifier rubyid_generate_single_payload'>generate_single_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_pinst'>pinst</span><span class='rparen'>)</span>
|
||
|
||
<span class='comment'># Save the payload instance
|
||
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload_instance'>payload_instance</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_pinst'>pinst</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_pinst'>pinst</span> <span class='op'>:</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload_instance'>payload_instance</span>
|
||
|
||
<span class='kw'>return</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload'>payload</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="generate_single_payload-instance_method">
|
||
|
||
#<strong>generate_single_payload</strong>(pinst = nil, platform = nil, arch = nil, explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>This method generates a non-cached payload which is typically useful for passive exploits that will have more than one client.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
481
|
||
482
|
||
483
|
||
484
|
||
485
|
||
486
|
||
487
|
||
488
|
||
489
|
||
490
|
||
491
|
||
492
|
||
493
|
||
494
|
||
495
|
||
496
|
||
497
|
||
498
|
||
499
|
||
500
|
||
501
|
||
502
|
||
503
|
||
504
|
||
505
|
||
506
|
||
507
|
||
508
|
||
509
|
||
510
|
||
511
|
||
512
|
||
513
|
||
514
|
||
515
|
||
516
|
||
517
|
||
518
|
||
519
|
||
520
|
||
521
|
||
522
|
||
523
|
||
524
|
||
525
|
||
526
|
||
527
|
||
528
|
||
529
|
||
530
|
||
531
|
||
532
|
||
533
|
||
534
|
||
535
|
||
536
|
||
537
|
||
538
|
||
539
|
||
540
|
||
541
|
||
542
|
||
543
|
||
544
|
||
545
|
||
546
|
||
547
|
||
548
|
||
549
|
||
550
|
||
551
|
||
552
|
||
553
|
||
554
|
||
555
|
||
556</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 481</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_generate_single_payload'>generate_single_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_pinst'>pinst</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_platform'>platform</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_arch'>arch</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>==</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="MissingTargetError.html" title="Msf::MissingTargetError (class)">MissingTargetError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>No target has been specified.</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
||
<span class='id identifier rubyid_caller'>caller</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># If a payload instance was supplied, use it, otherwise
|
||
</span> <span class='comment'># use the active payload instance
|
||
</span> <span class='id identifier rubyid_real_payload'>real_payload</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_pinst'>pinst</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_pinst'>pinst</span> <span class='op'>:</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload_instance'>payload_instance</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_real_payload'>real_payload</span> <span class='op'>==</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="MissingPayloadError.html" title="Msf::MissingPayloadError (class)">MissingPayloadError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>No payload has been selected.</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
||
<span class='id identifier rubyid_caller'>caller</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># If this is a generic payload, then we should specify the platform
|
||
</span> <span class='comment'># and architecture so that it knows how to pass things on.
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_real_payload'>real_payload</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</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="Payload.html" title="Msf::Payload (class)">Payload</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Payload/Generic.html" title="Msf::Payload::Generic (module)">Generic</a></span></span><span class='rparen'>)</span>
|
||
<span class='comment'># Convert the architecture specified into an array.
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_arch'>arch</span> <span class='kw'>and</span> <span class='id identifier rubyid_arch'>arch</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_arch'>arch</span> <span class='op'>=</span> <span class='lbracket'>[</span> <span class='id identifier rubyid_arch'>arch</span> <span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Define the explicit platform and architecture information only if
|
||
</span> <span class='comment'># it's been specified.
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_platform'>platform</span>
|
||
<span class='id identifier rubyid_real_payload'>real_payload</span><span class='period'>.</span><span class='id identifier rubyid_explicit_platform'>explicit_platform</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module.html" title="Msf::Module (class)">Module</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/PlatformList.html" title="Msf::Module::PlatformList (class)">PlatformList</a></span></span><span class='period'>.</span><span class='id identifier rubyid_transform'><span class='object_link'><a href="Module/PlatformList.html#transform-class_method" title="Msf::Module::PlatformList.transform (method)">transform</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_platform'>platform</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_arch'>arch</span>
|
||
<span class='id identifier rubyid_real_payload'>real_payload</span><span class='period'>.</span><span class='id identifier rubyid_explicit_arch'>explicit_arch</span> <span class='op'>=</span> <span class='id identifier rubyid_arch'>arch</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Force it to reset so that it will find updated information.
|
||
</span> <span class='id identifier rubyid_real_payload'>real_payload</span><span class='period'>.</span><span class='id identifier rubyid_reset'>reset</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Duplicate the exploit payload requirements
|
||
</span> <span class='id identifier rubyid_reqs'>reqs</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_payload_info'>payload_info</span><span class='period'>.</span><span class='id identifier rubyid_dup'>dup</span>
|
||
|
||
<span class='comment'># Pass save register requirements to the NOP generator
|
||
</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Space</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_space'>payload_space</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>SaveRegisters</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_nop_save_registers'>nop_save_registers</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Prepend</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_prepend'>payload_prepend</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>PrependEncoder</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_prepend_encoder'>payload_prepend_encoder</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>BadChars</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Append</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_append'>payload_append</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>AppendEncoder</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_append_encoder'>payload_append_encoder</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>DisableNops</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_disable_nops'>payload_disable_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>MaxNops</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_max_nops'>payload_max_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>MinNops</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_min_nops'>payload_min_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Encoder</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</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'>ENCODER</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='id identifier rubyid_payload_encoder'>payload_encoder</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Nop</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</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'>NOP</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='id identifier rubyid_payload_nop'>payload_nop</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>EncoderType</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_encoder_type'>payload_encoder_type</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>EncoderOptions</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_encoder_options'>payload_encoder_options</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ExtendedOptions</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_extended_options'>payload_extended_options</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Exploit</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='kw'>self</span>
|
||
|
||
<span class='comment'># Pass along the encoder don't fall through flag
|
||
</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>EncoderDontFallThrough</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</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'>EncoderDontFallThrough</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
|
||
<span class='comment'># Incorporate any context encoding requirements that are needed
|
||
</span> <span class='id identifier rubyid_define_context_encoding_reqs'>define_context_encoding_reqs</span><span class='lparen'>(</span><span class='id identifier rubyid_reqs'>reqs</span><span class='rparen'>)</span>
|
||
|
||
<span class='comment'># Call the encode begin routine.
|
||
</span> <span class='id identifier rubyid_encode_begin'>encode_begin</span><span class='lparen'>(</span><span class='id identifier rubyid_real_payload'>real_payload</span><span class='comma'>,</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='rparen'>)</span>
|
||
|
||
<span class='comment'># Generate the encoded payload.
|
||
</span> <span class='id identifier rubyid_encoded'>encoded</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="EncodedPayload.html" title="Msf::EncodedPayload (class)">EncodedPayload</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="EncodedPayload.html#create-class_method" title="Msf::EncodedPayload.create (method)">create</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_real_payload'>real_payload</span><span class='comma'>,</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='rparen'>)</span>
|
||
|
||
<span class='comment'># Call the encode end routine which is expected to return the actual
|
||
</span> <span class='comment'># encoded payload instance.
|
||
</span> <span class='kw'>return</span> <span class='id identifier rubyid_encode_end'>encode_end</span><span class='lparen'>(</span><span class='id identifier rubyid_real_payload'>real_payload</span><span class='comma'>,</span> <span class='id identifier rubyid_reqs'>reqs</span><span class='comma'>,</span> <span class='id identifier rubyid_encoded'>encoded</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="handle_exception-instance_method">
|
||
|
||
#<strong>handle_exception</strong>(e) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Handle the exception</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1379
|
||
1380
|
||
1381
|
||
1382
|
||
1383
|
||
1384
|
||
1385
|
||
1386
|
||
1387
|
||
1388
|
||
1389
|
||
1390
|
||
1391
|
||
1392
|
||
1393
|
||
1394
|
||
1395
|
||
1396
|
||
1397
|
||
1398
|
||
1399
|
||
1400
|
||
1401
|
||
1402
|
||
1403
|
||
1404
|
||
1405
|
||
1406
|
||
1407
|
||
1408
|
||
1409
|
||
1410
|
||
1411
|
||
1412
|
||
1413
|
||
1414
|
||
1415
|
||
1416
|
||
1417
|
||
1418
|
||
1419
|
||
1420
|
||
1421
|
||
1422
|
||
1423
|
||
1424
|
||
1425
|
||
1426
|
||
1427
|
||
1428
|
||
1429
|
||
1430
|
||
1431
|
||
1432
|
||
1433
|
||
1434
|
||
1435
|
||
1436
|
||
1437
|
||
1438
|
||
1439
|
||
1440
|
||
1441
|
||
1442
|
||
1443
|
||
1444
|
||
1445
|
||
1446
|
||
1447
|
||
1448
|
||
1449
|
||
1450
|
||
1451
|
||
1452
|
||
1453
|
||
1454
|
||
1455
|
||
1456
|
||
1457
|
||
1458
|
||
1459
|
||
1460
|
||
1461</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1379</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_handle_exception'>handle_exception</span> <span class='id identifier rubyid_e'>e</span>
|
||
<span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='id identifier rubyid_setup_fail_detail_from_exception'>setup_fail_detail_from_exception</span> <span class='id identifier rubyid_e'>e</span>
|
||
|
||
<span class='kw'>case</span> <span class='id identifier rubyid_e'>e</span>
|
||
<span class='kw'>when</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="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Complete.html" title="Msf::Exploit::Complete (class)">Complete</a></span></span>
|
||
<span class='comment'># Nothing to show in this case
|
||
</span> <span class='kw'>return</span>
|
||
|
||
<span class='kw'>when</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="OptionValidateError.html" title="Msf::OptionValidateError (class)">OptionValidateError</a></span></span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#BadConfig-constant" title="Msf::Module::Failure::BadConfig (constant)">BadConfig</a></span></span>
|
||
<span class='op'>::</span><span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Ui.html" title="Msf::Ui (module)">Ui</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Ui/Formatter.html" title="Msf::Ui::Formatter (module)">Formatter</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Ui/Formatter/OptionValidateError.html" title="Msf::Ui::Formatter::OptionValidateError (class)">OptionValidateError</a></span></span><span class='period'>.</span><span class='id identifier rubyid_print_error'><span class='object_link'><a href="Ui/Formatter/OptionValidateError.html#print_error-class_method" title="Msf::Ui::Formatter::OptionValidateError.print_error (method)">print_error</a></span></span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Exploit failed (</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>): </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>when</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="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Failed.html" title="Msf::Exploit::Failed (class)">Failed</a></span></span>
|
||
<span class='kw'>self</span><span class='period'>.</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'>Exploit aborted due to failure: </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
|
||
<span class='comment'># The caller should have already set self.fail_reason
|
||
</span> <span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#None-constant" title="Msf::Module::Failure::None (constant)">None</a></span></span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#Unknown-constant" title="Msf::Module::Failure::Unknown (constant)">Unknown</a></span></span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>when</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'>ConnectionError</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#Unreachable-constant" title="Msf::Module::Failure::Unreachable (constant)">Unreachable</a></span></span>
|
||
<span class='kw'>self</span><span class='period'>.</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'>Exploit failed [</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span><span class='embexpr_end'>}</span><span class='tstring_content'>]: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Exploit failed (</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>): </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>when</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'>BindFailed</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#BadConfig-constant" title="Msf::Module::Failure::BadConfig (constant)">BadConfig</a></span></span>
|
||
<span class='kw'>self</span><span class='period'>.</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'>Exploit failed [</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span><span class='embexpr_end'>}</span><span class='tstring_content'>]: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Exploit failed (</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>): </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>when</span> <span class='const'>Timeout</span><span class='op'>::</span><span class='const'>Error</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#TimeoutExpired-constant" title="Msf::Module::Failure::TimeoutExpired (constant)">TimeoutExpired</a></span></span>
|
||
<span class='kw'>self</span><span class='period'>.</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'>Exploit failed [</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span><span class='embexpr_end'>}</span><span class='tstring_content'>]: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Exploit failed (</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>): </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>when</span> <span class='op'>::</span><span class='const'>Interrupt</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#UserInterrupt-constant" title="Msf::Module::Failure::UserInterrupt (constant)">UserInterrupt</a></span></span>
|
||
<span class='kw'>self</span><span class='period'>.</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'>Exploit failed [</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span><span class='embexpr_end'>}</span><span class='tstring_content'>]: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Exploit failed (</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>): </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
|
||
<span class='comment'># Compare as a string since not all error classes may be loaded
|
||
</span> <span class='kw'>case</span> <span class='id identifier rubyid_msg'>msg</span>
|
||
<span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>access.denied|Login Failed</span><span class='regexp_end'>/i</span></span> <span class='comment'># Covers SMB as well as some generic errors
|
||
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#NoAccess-constant" title="Msf::Module::Failure::NoAccess (constant)">NoAccess</a></span></span>
|
||
<span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>connection reset</span><span class='regexp_end'>/i</span></span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#Disconnected-constant" title="Msf::Module::Failure::Disconnected (constant)">Disconnected</a></span></span>
|
||
<span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>connection timed out|SSL_connect|unreachable|connection was refused</span><span class='regexp_end'>/i</span></span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#Unreachable-constant" title="Msf::Module::Failure::Unreachable (constant)">Unreachable</a></span></span>
|
||
<span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>unable.*target</span><span class='regexp_end'>/i</span></span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#NoTarget-constant" title="Msf::Module::Failure::NoTarget (constant)">NoTarget</a></span></span>
|
||
<span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>execution expired</span><span class='regexp_end'>/i</span></span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#TimeoutExpired-constant" title="Msf::Module::Failure::TimeoutExpired (constant)">TimeoutExpired</a></span></span>
|
||
<span class='kw'>when</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(doesn.t|not).*vulnerable|may.*patched</span><span class='regexp_end'>/i</span></span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#NotVulnerable-constant" title="Msf::Module::Failure::NotVulnerable (constant)">NotVulnerable</a></span></span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># The caller should have already set self.fail_reason
|
||
</span> <span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#None-constant" title="Msf::Module::Failure::None (constant)">None</a></span></span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#Unknown-constant" title="Msf::Module::Failure::Unknown (constant)">Unknown</a></span></span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html" title="Msf::Module::Failure (module)">Failure</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Module/Failure.html#Unknown-constant" title="Msf::Module::Failure::Unknown (constant)">Unknown</a></span></span>
|
||
<span class='kw'>self</span><span class='period'>.</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'>Exploit failed: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='kw'>self</span><span class='period'>.</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'>Exploit failed [</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span><span class='embexpr_end'>}</span><span class='tstring_content'>]: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_elog'><span class='object_link'><a href="../top-level-namespace.html#elog-instance_method" title="#elog (method)">elog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Exploit failed (</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>): </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Record the error to various places
|
||
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_events'>events</span><span class='period'>.</span><span class='id identifier rubyid_on_module_error'>on_module_error</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_msg'>msg</span><span class='rparen'>)</span>
|
||
|
||
<span class='comment'># Report the failure (and attempt) in the database
|
||
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_report_failure'>report_failure</span>
|
||
|
||
<span class='comment'># Interrupt any session waiters in the handler
|
||
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_interrupt_handler'>interrupt_handler</span>
|
||
|
||
<span class='kw'>return</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_reason'>fail_reason</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="handler-instance_method">
|
||
|
||
#<strong>handler</strong>(*args) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Passes the connection to the associated payload handler to see if the exploit succeeded and a connection has been established. The return value can be one of the Handler::constants.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1286
|
||
1287
|
||
1288
|
||
1289
|
||
1290</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1286</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_handler'>handler</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span> <span class='op'>&&</span> <span class='id identifier rubyid_handler_enabled?'>handler_enabled?</span>
|
||
<span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_handler'>handler</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="handler_bind?-instance_method">
|
||
|
||
#<strong>handler_bind?</strong> ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>If the payload uses a bind handler</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Boolean</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1271
|
||
1272
|
||
1273</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1271</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_handler_bind?'>handler_bind?</span>
|
||
<span class='id identifier rubyid_payload_instance'>payload_instance</span> <span class='op'>&&</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_connection_type'>connection_type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>bind</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="handler_enabled?-instance_method">
|
||
|
||
#<strong>handler_enabled?</strong> ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Allow the user to disable the payload handler</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Boolean</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1264
|
||
1265
|
||
1266</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1264</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_handler_enabled?'>handler_enabled?</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'>DisablePayloadHandler</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="has_auto_target?-instance_method">
|
||
|
||
#<strong>has_auto_target?</strong>(targets = []) ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Boolean</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
315
|
||
316
|
||
317
|
||
318
|
||
319
|
||
320
|
||
321</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 315</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_has_auto_target?'>has_auto_target?</span><span class='lparen'>(</span><span class='id identifier rubyid_targets'>targets</span><span class='op'>=</span><span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_target_names'>target_names</span> <span class='op'>=</span> <span class='id identifier rubyid_targets'>targets</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_target'>target</span><span class='op'>|</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='rbrace'>}</span>
|
||
<span class='id identifier rubyid_target_names'>target_names</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_target'>target</span><span class='op'>|</span>
|
||
<span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id identifier rubyid_target'>target</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>Automatic</span><span class='regexp_end'>/</span></span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="init_compat-instance_method">
|
||
|
||
#<strong>init_compat</strong> ⇒ <tt>Object</tt> <span class="extras">(protected)</span>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Overrides the base class method and serves to initialize default compatibilities for exploits</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1569
|
||
1570
|
||
1571
|
||
1572
|
||
1573
|
||
1574
|
||
1575
|
||
1576
|
||
1577
|
||
1578
|
||
1579
|
||
1580
|
||
1581
|
||
1582
|
||
1583
|
||
1584
|
||
1585
|
||
1586
|
||
1587
|
||
1588</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1569</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_init_compat'>init_compat</span>
|
||
<span class='kw'>super</span>
|
||
|
||
<span class='comment'>#
|
||
</span> <span class='comment'># Merge in payload compatible defaults
|
||
</span> <span class='comment'>#
|
||
</span> <span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_module_info'>module_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Compat</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Payload</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
|
||
<span class='const'><span class='object_link'><a href="Exploit/CompatDefaults.html" title="Msf::Exploit::CompatDefaults (module)">CompatDefaults</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/CompatDefaults.html#Payload-constant" title="Msf::Exploit::CompatDefaults::Payload (constant)">Payload</a></span></span><span class='period'>.</span><span class='id identifier rubyid_each_pair'>each_pair</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_k'>k</span><span class='comma'>,</span><span class='id identifier rubyid_v'>v</span><span class='op'>|</span>
|
||
<span class='lparen'>(</span><span class='id identifier rubyid_p'>p</span><span class='lbracket'>[</span><span class='id identifier rubyid_k'>k</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_p'>p</span><span class='lbracket'>[</span><span class='id identifier rubyid_k'>k</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_v'>v</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span> <span class='op'>:</span> <span class='id identifier rubyid_p'>p</span><span class='lbracket'>[</span><span class='id identifier rubyid_k'>k</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_v'>v</span>
|
||
<span class='rbrace'>}</span>
|
||
|
||
<span class='comment'>#
|
||
</span> <span class='comment'># Set the default save registers if none have been explicitly
|
||
</span> <span class='comment'># specified.
|
||
</span> <span class='comment'>#
|
||
</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_module_info'>module_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>SaveRegisters</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_module_info'>module_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>SaveRegisters</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lbracket'>[</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>esp</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ebp</span><span class='tstring_end'>'</span></span> <span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="interrupt_handler-instance_method">
|
||
|
||
#<strong>interrupt_handler</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1292
|
||
1293
|
||
1294
|
||
1295
|
||
1296</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1292</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_interrupt_handler'>interrupt_handler</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span> <span class='op'>&&</span> <span class='id identifier rubyid_handler_enabled?'>handler_enabled?</span> <span class='op'>&&</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:interrupt_wait_for_session</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_interrupt_wait_for_session'>interrupt_wait_for_session</span><span class='lparen'>(</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="is_payload_compatible?-instance_method">
|
||
|
||
#<strong>is_payload_compatible?</strong>(name) ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns whether the requested payload is compatible with the module.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>name</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>The payload name</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Boolean</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>True if the payload is compatible, False if it is not.</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
704
|
||
705
|
||
706
|
||
707
|
||
708
|
||
709
|
||
710
|
||
711
|
||
712
|
||
713
|
||
714
|
||
715
|
||
716
|
||
717
|
||
718
|
||
719
|
||
720
|
||
721
|
||
722
|
||
723
|
||
724
|
||
725
|
||
726
|
||
727</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 704</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_is_payload_compatible?'>is_payload_compatible?</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_framework'>framework</span><span class='period'>.</span><span class='id identifier rubyid_payloads'>payloads</span><span class='lbracket'>[</span><span class='id identifier rubyid_name'>name</span><span class='rbracket'>]</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_p'>p</span>
|
||
|
||
<span class='comment'># Skip over payloads that are too big
|
||
</span> <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_payload_space'>payload_space</span> <span class='op'>&&</span> <span class='id identifier rubyid_p'>p</span><span class='period'>.</span><span class='id identifier rubyid_cached_size'>cached_size</span> <span class='op'>&&</span> <span class='id identifier rubyid_p'>p</span><span class='period'>.</span><span class='id identifier rubyid_cached_size'>cached_size</span> <span class='op'>></span> <span class='id identifier rubyid_payload_space'>payload_space</span>
|
||
|
||
<span class='kw'>begin</span>
|
||
<span class='id identifier rubyid_pi'>pi</span> <span class='op'>=</span> <span class='id identifier rubyid_p'>p</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
||
<span class='kw'>rescue</span> <span class='op'>::</span><span class='const'>Exception</span><span class='comma'>,</span> <span class='op'>::</span><span class='const'>LoadError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
||
<span class='id identifier rubyid_wlog'><span class='object_link'><a href="../top-level-namespace.html#wlog-instance_method" title="#wlog (method)">wlog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Module </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'> failed to initialize payload when checking exploit compatibility: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>core</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Rex/Logging.html#LEV_0-constant" title="Rex::Logging::LEV_0 (constant)">LEV_0</a></span></span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='kw'>false</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='comment'># Are we compatible in terms of conventions and connections and
|
||
</span> <span class='comment'># what not?
|
||
</span> <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_compatible?'>compatible?</span><span class='lparen'>(</span><span class='id identifier rubyid_pi'>pi</span><span class='rparen'>)</span>
|
||
|
||
<span class='comment'># If the payload is privileged but the exploit does not give
|
||
</span> <span class='comment'># privileged access, then fail it.
|
||
</span> <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='op'>!</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_privileged'>privileged</span> <span class='op'>&&</span> <span class='id identifier rubyid_pi'>pi</span><span class='period'>.</span><span class='id identifier rubyid_privileged'>privileged</span>
|
||
|
||
<span class='kw'>return</span> <span class='kw'>true</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="make_fast_nops-instance_method">
|
||
|
||
#<strong>make_fast_nops</strong>(count) ⇒ <tt>String</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Generates a NOP sled using the #make_nops method. The difference between this and #make_nops is this method is much faster, good for exploit developers that actually want huge chunks of NOPs. The downside of using this is the NOP sled is less randomized.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
<p class="tag_title">Parameters:</p>
|
||
<ul class="param">
|
||
|
||
<li>
|
||
|
||
<span class='name'>count</span>
|
||
|
||
|
||
<span class='type'>(<tt>String</tt>)</span>
|
||
|
||
|
||
|
||
—
|
||
<div class='inline'>
|
||
<p>Number of NOPs to return.</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>NOPs</p>
|
||
</div>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1053
|
||
1054
|
||
1055
|
||
1056
|
||
1057
|
||
1058
|
||
1059
|
||
1060
|
||
1061
|
||
1062
|
||
1063
|
||
1064</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1053</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_make_fast_nops'>make_fast_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_count'>count</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_max_nop_chunk_size'>max_nop_chunk_size</span> <span class='op'>=</span> <span class='int'>100</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_count'>count</span> <span class='op'><</span> <span class='id identifier rubyid_max_nop_chunk_size'>max_nop_chunk_size</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_make_nops'>make_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_count'>count</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_nops'>nops</span> <span class='op'>=</span> <span class='id identifier rubyid_make_nops'>make_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_max_nop_chunk_size'>max_nop_chunk_size</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_nops'>nops</span> <span class='op'>+=</span> <span class='id identifier rubyid_nops'>nops</span> <span class='kw'>while</span> <span class='id identifier rubyid_nops'>nops</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'><</span> <span class='id identifier rubyid_count'>count</span>
|
||
|
||
<span class='id identifier rubyid_nops'>nops</span><span class='lbracket'>[</span><span class='int'>0</span><span class='comma'>,</span> <span class='id identifier rubyid_count'>count</span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="make_nops-instance_method">
|
||
|
||
#<strong>make_nops</strong>(count) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Generates a nop sled of a supplied length and returns it to the caller.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1070
|
||
1071
|
||
1072
|
||
1073
|
||
1074
|
||
1075
|
||
1076
|
||
1077
|
||
1078
|
||
1079
|
||
1080
|
||
1081
|
||
1082
|
||
1083
|
||
1084
|
||
1085
|
||
1086
|
||
1087
|
||
1088
|
||
1089
|
||
1090
|
||
1091
|
||
1092
|
||
1093
|
||
1094
|
||
1095
|
||
1096
|
||
1097
|
||
1098
|
||
1099
|
||
1100
|
||
1101
|
||
1102
|
||
1103
|
||
1104
|
||
1105
|
||
1106
|
||
1107
|
||
1108
|
||
1109
|
||
1110
|
||
1111
|
||
1112</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1070</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_make_nops'>make_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_count'>count</span><span class='rparen'>)</span>
|
||
<span class='comment'># If we're debugging, then make_nops will return a safe sled. We
|
||
</span> <span class='comment'># currently assume x86.
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
|
||
<span class='kw'>return</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\x90</span><span class='tstring_end'>"</span></span> <span class='op'>*</span> <span class='id identifier rubyid_count'>count</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_nop_sled'>nop_sled</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
||
|
||
<span class='comment'># If there is no payload instance then we can't succeed.
|
||
</span> <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='op'>!</span><span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_compatible_nops'>compatible_nops</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_nopname'>nopname</span><span class='comma'>,</span> <span class='id identifier rubyid_nopmod'>nopmod</span><span class='op'>|</span>
|
||
<span class='comment'># Create an instance of the nop module
|
||
</span> <span class='id identifier rubyid_nop'>nop</span> <span class='op'>=</span> <span class='id identifier rubyid_nopmod'>nopmod</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
||
|
||
<span class='comment'># The list of save registers
|
||
</span> <span class='id identifier rubyid_save_regs'>save_regs</span> <span class='op'>=</span> <span class='id identifier rubyid_nop_save_registers'>nop_save_registers</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_save_regs'>save_regs</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='op'>==</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_save_regs'>save_regs</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>begin</span>
|
||
<span class='id identifier rubyid_nop'>nop</span><span class='period'>.</span><span class='id identifier rubyid_copy_ui'>copy_ui</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_nop_sled'>nop_sled</span> <span class='op'>=</span> <span class='id identifier rubyid_nop'>nop</span><span class='period'>.</span><span class='id identifier rubyid_generate_sled'>generate_sled</span><span class='lparen'>(</span><span class='id identifier rubyid_count'>count</span><span class='comma'>,</span>
|
||
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>BadChars</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='id identifier rubyid_payload_badchars'>payload_badchars</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
||
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>SaveRegisters</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='id identifier rubyid_save_regs'>save_regs</span><span class='rparen'>)</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_nop_sled'>nop_sled</span> <span class='op'>&&</span> <span class='id identifier rubyid_nop_sled'>nop_sled</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='id identifier rubyid_count'>count</span>
|
||
<span class='kw'>break</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_wlog'><span class='object_link'><a href="../top-level-namespace.html#wlog-instance_method" title="#wlog (method)">wlog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>: Nop generator </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_nop'>nop</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'> failed to generate sled for exploit</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>core</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Rex/Logging.html#LEV_0-constant" title="Rex::Logging::LEV_0 (constant)">LEV_0</a></span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>rescue</span>
|
||
<span class='id identifier rubyid_wlog'><span class='object_link'><a href="../top-level-namespace.html#wlog-instance_method" title="#wlog (method)">wlog</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'>: Nop generator </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_nop'>nop</span><span class='period'>.</span><span class='id identifier rubyid_refname'>refname</span><span class='embexpr_end'>}</span><span class='tstring_content'> failed to generate sled for exploit: </span><span class='embexpr_beg'>#{</span><span class='gvar'>$!</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'>core</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="../Rex/Logging.html#LEV_0-constant" title="Rex::Logging::LEV_0 (constant)">LEV_0</a></span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='rbrace'>}</span>
|
||
|
||
<span class='id identifier rubyid_nop_sled'>nop_sled</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="nop_generator-instance_method">
|
||
|
||
#<strong>nop_generator</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the first compatible NOP generator for this exploit’s payload instance.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1035
|
||
1036
|
||
1037
|
||
1038
|
||
1039
|
||
1040
|
||
1041</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1035</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_nop_generator'>nop_generator</span>
|
||
<span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='op'>!</span><span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='rparen'>)</span>
|
||
|
||
<span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_compatible_nops'>compatible_nops</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_nopname'>nopname</span><span class='comma'>,</span> <span class='id identifier rubyid_nopmod'>nopmod</span><span class='op'>|</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_nopmod'>nopmod</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
||
<span class='rbrace'>}</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="nop_save_registers-instance_method">
|
||
|
||
#<strong>nop_save_registers</strong>(explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the list of registers that the NOP generator should save, if any. It will use the current target’s save registers in precedence over those defined globally for the exploit module.</p>
|
||
|
||
<p>If there are no save registers, nil is returned.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1021
|
||
1022
|
||
1023
|
||
1024
|
||
1025
|
||
1026
|
||
1027
|
||
1028
|
||
1029</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1021</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_nop_save_registers'>nop_save_registers</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_save_registers'>save_registers</span><span class='rparen'>)</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_save_registers'>save_registers</span>
|
||
<span class='kw'>else</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_module_info'>module_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>SaveRegisters</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="normalize_platform_arch-instance_method">
|
||
|
||
#<strong>normalize_platform_arch</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
691
|
||
692
|
||
693
|
||
694
|
||
695
|
||
696</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 691</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_normalize_platform_arch'>normalize_platform_arch</span>
|
||
<span class='id identifier rubyid_c_platform'>c_platform</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_target'>target</span> <span class='op'>&&</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>:</span> <span class='id identifier rubyid_platform'>platform</span>
|
||
<span class='id identifier rubyid_c_arch'>c_arch</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_target'>target</span> <span class='op'>&&</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='id identifier rubyid_arch'>arch</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='kw'>nil</span> <span class='op'>:</span> <span class='id identifier rubyid_arch'>arch</span>
|
||
<span class='id identifier rubyid_c_arch'>c_arch</span> <span class='op'>||=</span> <span class='lbracket'>[</span> <span class='const'>ARCH_X86</span> <span class='rbracket'>]</span>
|
||
<span class='kw'>return</span> <span class='id identifier rubyid_c_platform'>c_platform</span><span class='comma'>,</span> <span class='id identifier rubyid_c_arch'>c_arch</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="on_new_session-instance_method">
|
||
|
||
#<strong>on_new_session</strong>(session) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>This is called by the payload when a new session is created</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1307
|
||
1308
|
||
1309
|
||
1310</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1307</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_on_new_session'>on_new_session</span><span class='lparen'>(</span><span class='id identifier rubyid_session'>session</span><span class='rparen'>)</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_session_count'>session_count</span> <span class='op'>+=</span> <span class='int'>1</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_successful'>successful</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="passive?-instance_method">
|
||
|
||
#<strong>passive?</strong> ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns if the exploit has a passive stance. Aggressive exploits are always aggressive.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Boolean</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
627
|
||
628
|
||
629</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 627</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_passive?'>passive?</span>
|
||
<span class='id identifier rubyid_stance'>stance</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Exploit/Stance.html" title="Msf::Exploit::Stance (module)">Stance</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Stance.html#Passive-constant" title="Msf::Exploit::Stance::Passive (constant)">Passive</a></span></span><span class='rparen'>)</span> <span class='op'>&&</span> <span class='op'>!</span><span class='id identifier rubyid_stance'>stance</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Exploit/Stance.html" title="Msf::Exploit::Stance (module)">Stance</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Stance.html#Aggressive-constant" title="Msf::Exploit::Stance::Aggressive (constant)">Aggressive</a></span></span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="pattern_create-instance_method">
|
||
|
||
#<strong>pattern_create</strong>(length, sets = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Generate a non-repeating static random string</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1248
|
||
1249
|
||
1250</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1248</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_pattern_create'>pattern_create</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_sets'>sets</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</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_pattern_create'>pattern_create</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_sets'>sets</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload_append-instance_method">
|
||
|
||
#<strong>payload_append</strong>(explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Return any text that should be appended to the payload. The payload module is passed so that the exploit can take a guess at architecture and platform if it’s a multi exploit.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
820
|
||
821
|
||
822
|
||
823
|
||
824
|
||
825
|
||
826
|
||
827
|
||
828</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 820</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_append'>payload_append</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_append'>payload_append</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_append'>payload_append</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Append</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_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="payload_append_encoder-instance_method">
|
||
|
||
#<strong>payload_append_encoder</strong>(explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Return any text that should be appended to the encoder of the payload. The payload module is passed so that the exploit can take a guess at architecture and platform if it’s a multi exploit.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
852
|
||
853
|
||
854
|
||
855
|
||
856
|
||
857
|
||
858
|
||
859
|
||
860
|
||
861
|
||
862</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 852</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_append_encoder'>payload_append_encoder</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_append_encoder'>payload_append_encoder</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_append_encoder'>payload_append_encoder</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>AppendEncoder</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_end'>'</span></span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_p'>p</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload_badchars-instance_method">
|
||
|
||
#<strong>payload_badchars</strong>(explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the bad characters that cannot be in any payload used by this exploit.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
924
|
||
925
|
||
926
|
||
927
|
||
928
|
||
929
|
||
930
|
||
931
|
||
932</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 924</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>BadChars</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload_disable_nops-instance_method">
|
||
|
||
#<strong>payload_disable_nops</strong>(explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Whether NOP generation should be enabled or disabled</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
867
|
||
868
|
||
869
|
||
870
|
||
871
|
||
872
|
||
873
|
||
874
|
||
875</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 867</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_disable_nops'>payload_disable_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_disable_nops'>payload_disable_nops</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_disable_nops'>payload_disable_nops</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>DisableNops</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload_encoder-instance_method">
|
||
|
||
#<strong>payload_encoder</strong>(explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the payload encoder that is associated with either the current target or the exploit in general.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
938
|
||
939
|
||
940
|
||
941
|
||
942
|
||
943
|
||
944
|
||
945
|
||
946</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 938</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_encoder'>payload_encoder</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_encoder'>payload_encoder</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_encoder'>payload_encoder</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Encoder</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload_encoder_options-instance_method">
|
||
|
||
#<strong>payload_encoder_options</strong>(explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the payload encoder option hash that is used to initialize the datastore of the encoder that is selected when generating an encoded payload.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
981
|
||
982
|
||
983
|
||
984
|
||
985
|
||
986
|
||
987
|
||
988
|
||
989</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 981</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_encoder_options'>payload_encoder_options</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_encoder_options'>payload_encoder_options</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_encoder_options'>payload_encoder_options</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>EncoderOptions</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload_encoder_type-instance_method">
|
||
|
||
#<strong>payload_encoder_type</strong>(explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the payload encoder type that is associated with either the current target or the exploit in general.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
966
|
||
967
|
||
968
|
||
969
|
||
970
|
||
971
|
||
972
|
||
973
|
||
974</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 966</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_encoder_type'>payload_encoder_type</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_encoder_type'>payload_encoder_type</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_encoder_type'>payload_encoder_type</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>EncoderType</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload_extended_options-instance_method">
|
||
|
||
#<strong>payload_extended_options</strong>(explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the payload extended options hash which is used to provide a location to store extended information that may be useful to a particular type of payload or mixin.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
996
|
||
997
|
||
998
|
||
999
|
||
1000
|
||
1001
|
||
1002
|
||
1003
|
||
1004</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 996</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_extended_options'>payload_extended_options</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_extended_options'>payload_extended_options</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_extended_options'>payload_extended_options</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ExtendedOptions</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload_max_nops-instance_method">
|
||
|
||
#<strong>payload_max_nops</strong>(explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Maximum number of nops to use as a hint to the framework. Nil signifies that the framework should decide.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
881
|
||
882
|
||
883
|
||
884
|
||
885
|
||
886
|
||
887
|
||
888
|
||
889</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 881</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_max_nops'>payload_max_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_max_nops'>payload_max_nops</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_max_nops'>payload_max_nops</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>MaxNops</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='kw'>nil</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload_min_nops-instance_method">
|
||
|
||
#<strong>payload_min_nops</strong>(explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Minimum number of nops to use as a hint to the framework. Nil signifies that the framework should decide.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
895
|
||
896
|
||
897
|
||
898
|
||
899
|
||
900
|
||
901
|
||
902
|
||
903</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 895</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_min_nops'>payload_min_nops</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_min_nops'>payload_min_nops</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_min_nops'>payload_min_nops</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>MinNops</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='kw'>nil</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload_nop-instance_method">
|
||
|
||
#<strong>payload_nop</strong>(explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the payload NOP generator that is associated with either the current target or the exploit in general.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
952
|
||
953
|
||
954
|
||
955
|
||
956
|
||
957
|
||
958
|
||
959
|
||
960</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 952</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_nop'>payload_nop</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_nop'>payload_nop</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_nop'>payload_nop</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Nop</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload_prepend-instance_method">
|
||
|
||
#<strong>payload_prepend</strong>(explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Return any text that should be prepended to the payload. The payload module is passed so that the exploit can take a guess at architecture and platform if it’s a multi exploit. This automatically takes into account any require stack adjustments.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
803
|
||
804
|
||
805
|
||
806
|
||
807
|
||
808
|
||
809
|
||
810
|
||
811
|
||
812
|
||
813</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 803</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_prepend'>payload_prepend</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_prepend'>payload_prepend</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_prepend'>payload_prepend</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Prepend</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_end'>'</span></span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_stack_adjustment'>stack_adjustment</span> <span class='op'>+</span> <span class='id identifier rubyid_p'>p</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload_prepend_encoder-instance_method">
|
||
|
||
#<strong>payload_prepend_encoder</strong>(explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Return any text that should be prepended to the encoder of the payload. The payload module is passed so that the exploit can take a guess at architecture and platform if it’s a multi exploit.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
835
|
||
836
|
||
837
|
||
838
|
||
839
|
||
840
|
||
841
|
||
842
|
||
843
|
||
844
|
||
845</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 835</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_prepend_encoder'>payload_prepend_encoder</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_prepend_encoder'>payload_prepend_encoder</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_prepend_encoder'>payload_prepend_encoder</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_p'>p</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>PrependEncoder</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_end'>'</span></span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_p'>p</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="payload_space-instance_method">
|
||
|
||
#<strong>payload_space</strong>(explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the maximum amount of room the exploit has for a payload.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
908
|
||
909
|
||
910
|
||
911
|
||
912
|
||
913
|
||
914
|
||
915
|
||
916
|
||
917
|
||
918</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 908</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_payload_space'>payload_space</span><span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>||=</span> <span class='id identifier rubyid_target'>target</span>
|
||
|
||
<span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='kw'>and</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_space'>payload_space</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='period'>.</span><span class='id identifier rubyid_payload_space'>payload_space</span>
|
||
<span class='kw'>elsif</span> <span class='lparen'>(</span><span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Space</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Space</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
|
||
<span class='kw'>else</span>
|
||
<span class='kw'>nil</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="rand_char-instance_method">
|
||
|
||
#<strong>rand_char</strong>(bad = payload_badchars) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Generate a random character avoiding the exploit’s bad characters.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1237
|
||
1238
|
||
1239
|
||
1240
|
||
1241
|
||
1242
|
||
1243</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1237</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_rand_char'>rand_char</span><span class='lparen'>(</span><span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
|
||
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>A</span><span class='tstring_end'>"</span></span>
|
||
<span class='kw'>else</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_char'>rand_char</span><span class='lparen'>(</span><span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="rand_text-instance_method">
|
||
|
||
#<strong>rand_text</strong>(length, bad = payload_badchars) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Generate random text characters avoiding the exploit’s bad characters.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1129
|
||
1130
|
||
1131
|
||
1132
|
||
1133
|
||
1134
|
||
1135</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1129</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text'>rand_text</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
|
||
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</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'>rand_text</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="rand_text_alpha-instance_method">
|
||
|
||
#<strong>rand_text_alpha</strong>(length, bad = payload_badchars) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Generate random alpha characters avoiding the exploit’s bad characters.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1165
|
||
1166
|
||
1167
|
||
1168
|
||
1169
|
||
1170
|
||
1171</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1165</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_alpha'>rand_text_alpha</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
|
||
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</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'>rand_text_alpha</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="rand_text_alpha_lower-instance_method">
|
||
|
||
#<strong>rand_text_alpha_lower</strong>(length, bad = payload_badchars) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Generate random alpha lower characters avoiding the exploit’s bad characters.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1189
|
||
1190
|
||
1191
|
||
1192
|
||
1193
|
||
1194
|
||
1195</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1189</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_alpha_lower'>rand_text_alpha_lower</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
|
||
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>a</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</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='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="rand_text_alpha_upper-instance_method">
|
||
|
||
#<strong>rand_text_alpha_upper</strong>(length, bad = payload_badchars) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Generate random alpha upper characters avoiding the exploit’s bad characters.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1177
|
||
1178
|
||
1179
|
||
1180
|
||
1181
|
||
1182
|
||
1183</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1177</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_alpha_upper'>rand_text_alpha_upper</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
|
||
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</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_upper'>rand_text_alpha_upper</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="rand_text_alphanumeric-instance_method">
|
||
|
||
#<strong>rand_text_alphanumeric</strong>(length, bad = payload_badchars) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Generate random alphanumeric characters avoiding the exploit’s bad characters.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1201
|
||
1202
|
||
1203
|
||
1204
|
||
1205
|
||
1206
|
||
1207</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1201</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_alphanumeric'>rand_text_alphanumeric</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
|
||
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</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_alphanumeric'>rand_text_alphanumeric</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="rand_text_debug-instance_method">
|
||
|
||
#<strong>rand_text_debug</strong>(length, char = 'A') ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Utility methods for generating random text that implicitly uses the exploit’s bad character set.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1121
|
||
1122
|
||
1123</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1121</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_char'>char</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>A</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_char'>char</span> <span class='op'>*</span> <span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'>Range</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_length'>length</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='op'>:</span> <span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="rand_text_english-instance_method">
|
||
|
||
#<strong>rand_text_english</strong>(length, bad = payload_badchars) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Generate random english-like avoiding the exploit’s bad characters.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1141
|
||
1142
|
||
1143
|
||
1144
|
||
1145
|
||
1146
|
||
1147</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1141</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_english'>rand_text_english</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
|
||
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</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_english'>rand_text_english</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="rand_text_hex-instance_method">
|
||
|
||
#<strong>rand_text_hex</strong>(length, bad = payload_badchars) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Generate random hexadecimal characters avoiding the exploit’s bad characters.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1225
|
||
1226
|
||
1227
|
||
1228
|
||
1229
|
||
1230
|
||
1231</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1225</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_hex'>rand_text_hex</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
|
||
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>0</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</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_hex'>rand_text_hex</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="rand_text_highascii-instance_method">
|
||
|
||
#<strong>rand_text_highascii</strong>(length, bad = payload_badchars) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Generate random high ascii characters avoiding the exploit’s bad characters.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1153
|
||
1154
|
||
1155
|
||
1156
|
||
1157
|
||
1158
|
||
1159</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1153</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_highascii'>rand_text_highascii</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
|
||
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span>
|
||
<span class='kw'>else</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_highascii'>rand_text_highascii</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="rand_text_numeric-instance_method">
|
||
|
||
#<strong>rand_text_numeric</strong>(length, bad = payload_badchars) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Generate random numeric characters avoiding the exploit’s bad characters.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1213
|
||
1214
|
||
1215
|
||
1216
|
||
1217
|
||
1218
|
||
1219</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1213</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_rand_text_numeric'>rand_text_numeric</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='op'>=</span><span class='id identifier rubyid_payload_badchars'>payload_badchars</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_debugging?'>debugging?</span>
|
||
<span class='id identifier rubyid_rand_text_debug'>rand_text_debug</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>0</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</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_numeric'>rand_text_numeric</span><span class='lparen'>(</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='id identifier rubyid_bad'>bad</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="regenerate_payload-instance_method">
|
||
|
||
#<strong>regenerate_payload</strong>(platform = nil, arch = nil, explicit_target = nil) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
<span class="aliases">Also known as:
|
||
<span class="names"><span id='exploit_regenerate_payload-instance_method'>exploit_regenerate_payload</span></span>
|
||
</span>
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Re-generates an encoded payload, typically called after something in the datastore has changed. An optional platform and architecture can be supplied as well.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
563
|
||
564
|
||
565</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 563</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_regenerate_payload'>regenerate_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_arch'>arch</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_generate_single_payload'>generate_single_payload</span><span class='lparen'>(</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_platform'>platform</span><span class='comma'>,</span> <span class='id identifier rubyid_arch'>arch</span><span class='comma'>,</span> <span class='id identifier rubyid_explicit_target'>explicit_target</span><span class='rparen'>)</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="register_autofilter_ports-instance_method">
|
||
|
||
#<strong>register_autofilter_ports</strong>(ports = []) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Adds a port into the list of ports</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
376
|
||
377
|
||
378
|
||
379
|
||
380
|
||
381</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 376</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_register_autofilter_ports'>register_autofilter_ports</span><span class='lparen'>(</span><span class='id identifier rubyid_ports'>ports</span><span class='op'>=</span><span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
||
<span class='ivar'>@autofilter_ports</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
||
<span class='ivar'>@autofilter_ports</span> <span class='op'><<</span> <span class='id identifier rubyid_ports'>ports</span>
|
||
<span class='ivar'>@autofilter_ports</span><span class='period'>.</span><span class='id identifier rubyid_flatten!'>flatten!</span>
|
||
<span class='ivar'>@autofilter_ports</span><span class='period'>.</span><span class='id identifier rubyid_uniq!'>uniq!</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="register_autofilter_services-instance_method">
|
||
|
||
#<strong>register_autofilter_services</strong>(services = []) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
383
|
||
384
|
||
385
|
||
386
|
||
387
|
||
388</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 383</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_register_autofilter_services'>register_autofilter_services</span><span class='lparen'>(</span><span class='id identifier rubyid_services'>services</span><span class='op'>=</span><span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
||
<span class='ivar'>@autofilter_services</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
||
<span class='ivar'>@autofilter_services</span> <span class='op'><<</span> <span class='id identifier rubyid_services'>services</span>
|
||
<span class='ivar'>@autofilter_services</span><span class='period'>.</span><span class='id identifier rubyid_flatten!'>flatten!</span>
|
||
<span class='ivar'>@autofilter_services</span><span class='period'>.</span><span class='id identifier rubyid_uniq!'>uniq!</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="reset_session_counts-instance_method">
|
||
|
||
#<strong>reset_session_counts</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Reset the session counter to zero (which occurs during set up of the exploit prior to calling exploit).</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1326
|
||
1327
|
||
1328</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1326</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_reset_session_counts'>reset_session_counts</span>
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_session_count'>session_count</span> <span class='op'>=</span> <span class='int'>0</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="session_created?-instance_method">
|
||
|
||
#<strong>session_created?</strong> ⇒ <tt>Boolean</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>A boolean for whether a session has been created yet</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
<p class="tag_title">Returns:</p>
|
||
<ul class="return">
|
||
|
||
<li>
|
||
|
||
|
||
<span class='type'>(<tt>Boolean</tt>)</span>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1315
|
||
1316
|
||
1317
|
||
1318
|
||
1319
|
||
1320</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1315</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_session_created?'>session_created?</span>
|
||
<span class='comment'># Start bind handlers before checking session creation
|
||
</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_start_handler'>start_handler</span> <span class='kw'>if</span> <span class='id identifier rubyid_handler_bind?'>handler_bind?</span>
|
||
|
||
<span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_session_count'>session_count</span> <span class='op'>></span> <span class='int'>0</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='kw'>true</span> <span class='op'>:</span> <span class='kw'>false</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="setup-instance_method">
|
||
|
||
#<strong>setup</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Prepares the module for exploitation, initializes any state, and starts the payload handler.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
394
|
||
395
|
||
396
|
||
397
|
||
398
|
||
399
|
||
400
|
||
401
|
||
402
|
||
403
|
||
404
|
||
405
|
||
406
|
||
407
|
||
408
|
||
409
|
||
410
|
||
411
|
||
412
|
||
413
|
||
414
|
||
415
|
||
416</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 394</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_setup'>setup</span>
|
||
<span class='id identifier rubyid_alert_user'>alert_user</span>
|
||
|
||
<span class='comment'># Reset the session counts to zero.
|
||
</span> <span class='id identifier rubyid_reset_session_counts'>reset_session_counts</span>
|
||
|
||
<span class='kw'>return</span> <span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span>
|
||
<span class='kw'>return</span> <span class='kw'>if</span> <span class='kw'>not</span> <span class='id identifier rubyid_handler_enabled?'>handler_enabled?</span>
|
||
|
||
<span class='comment'># Configure the payload handler
|
||
</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_exploit_config'>exploit_config</span> <span class='op'>=</span> <span class='lbrace'>{</span>
|
||
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>active_timeout</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_active_timeout'>active_timeout</span>
|
||
<span class='rbrace'>}</span>
|
||
|
||
<span class='comment'># Set up the payload handlers
|
||
</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_setup_handler'>setup_handler</span>
|
||
|
||
<span class='comment'># Defer starting bind handlers until after exploit completion
|
||
</span> <span class='kw'>return</span> <span class='kw'>if</span> <span class='id identifier rubyid_handler_bind?'>handler_bind?</span>
|
||
|
||
<span class='comment'># Start the payload handler
|
||
</span> <span class='id identifier rubyid_payload_instance'>payload_instance</span><span class='period'>.</span><span class='id identifier rubyid_start_handler'>start_handler</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="setup_fail_detail_from_exception-instance_method">
|
||
|
||
#<strong>setup_fail_detail_from_exception</strong>(e) ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1362
|
||
1363
|
||
1364
|
||
1365
|
||
1366
|
||
1367
|
||
1368
|
||
1369
|
||
1370
|
||
1371
|
||
1372
|
||
1373
|
||
1374</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1362</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_setup_fail_detail_from_exception'>setup_fail_detail_from_exception</span> <span class='id identifier rubyid_e'>e</span>
|
||
<span class='comment'># Build a user-friendly error message
|
||
</span> <span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</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='kw'>unless</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="" title="Msf::Exploit (class)">Exploit</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Failed.html" title="Msf::Exploit::Failed (class)">Failed</a></span></span>
|
||
<span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> </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='kw'>end</span>
|
||
|
||
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_error'>error</span> <span class='op'>=</span> <span class='id identifier rubyid_e'>e</span>
|
||
|
||
<span class='comment'># Record the detailed reason
|
||
</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail_detail'>fail_detail</span> <span class='op'>||=</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
|
||
<span class='id identifier rubyid_msg'>msg</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="stack_adjustment-instance_method">
|
||
|
||
#<strong>stack_adjustment</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>This method returns the encoded instruction(s) required to adjust the stack pointer prior to executing any code. The number of bytes to adjust is indicated to the routine through the payload ‘StackAdjustment’ attribute or through a target’s payload ‘StackAdjustment’ attribute.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
774
|
||
775
|
||
776
|
||
777
|
||
778
|
||
779
|
||
780
|
||
781
|
||
782
|
||
783
|
||
784
|
||
785
|
||
786
|
||
787
|
||
788
|
||
789
|
||
790
|
||
791
|
||
792
|
||
793
|
||
794
|
||
795</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 774</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_stack_adjustment'>stack_adjustment</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_target'>target</span> <span class='op'>&&</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_payload_stack_adjustment'>payload_stack_adjustment</span>
|
||
<span class='id identifier rubyid_adj'>adj</span> <span class='op'>=</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_payload_stack_adjustment'>payload_stack_adjustment</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_adj'>adj</span> <span class='op'>=</span> <span class='id identifier rubyid_payload_info'>payload_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>StackAdjustment</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>return</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_adj'>adj</span>
|
||
|
||
<span class='comment'># Get the architecture for the current target or use the one specific to
|
||
</span> <span class='comment'># this exploit
|
||
</span> <span class='id identifier rubyid_arch'>arch</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_target'>target</span> <span class='op'>&&</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span> <span class='op'>:</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span>
|
||
|
||
<span class='comment'># Default to x86 if we can't find a list of architectures
|
||
</span> <span class='kw'>if</span> <span class='id identifier rubyid_arch'>arch</span> <span class='op'>&&</span> <span class='op'>!</span><span class='id identifier rubyid_arch'>arch</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
|
||
<span class='id identifier rubyid_arch'>arch</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_arch'>arch</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>, </span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
||
<span class='kw'>else</span>
|
||
<span class='id identifier rubyid_arch'>arch</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>x86</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>end</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'>Arch</span><span class='op'>::</span><span class='id identifier rubyid_adjust_stack_pointer'>adjust_stack_pointer</span><span class='lparen'>(</span><span class='id identifier rubyid_arch'>arch</span><span class='comma'>,</span> <span class='id identifier rubyid_adj'>adj</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="stance-instance_method">
|
||
|
||
#<strong>stance</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Generally, all exploits take an aggressive stance.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
613
|
||
614
|
||
615</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 613</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_stance'>stance</span>
|
||
<span class='id identifier rubyid_module_info'>module_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Stance</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='const'><span class='object_link'><a href="Exploit/Stance.html" title="Msf::Exploit::Stance (module)">Stance</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Exploit/Stance.html#Aggressive-constant" title="Msf::Exploit::Stance::Aggressive (constant)">Aggressive</a></span></span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="target-instance_method">
|
||
|
||
#<strong>target</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the active target for this exploit. If not target has been defined, nil is returned. If no target was defined but there is a default target, that one will be automatically used.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
636
|
||
637
|
||
638
|
||
639
|
||
640
|
||
641
|
||
642
|
||
643
|
||
644
|
||
645
|
||
646
|
||
647
|
||
648
|
||
649
|
||
650
|
||
651
|
||
652</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 636</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_target'>target</span>
|
||
<span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:auto_targeted_index</span><span class='rparen'>)</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_auto_target?'>auto_target?</span>
|
||
<span class='id identifier rubyid_auto_idx'>auto_idx</span> <span class='op'>=</span> <span class='id identifier rubyid_auto_targeted_index'>auto_targeted_index</span>
|
||
<span class='kw'>if</span> <span class='id identifier rubyid_auto_idx'>auto_idx</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</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'>TARGET</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_auto_idx'>auto_idx</span>
|
||
<span class='kw'>else</span>
|
||
<span class='comment'># If our inserted Automatic Target was selected but we failed to
|
||
</span> <span class='comment'># find a suitable target, we just grab the original first target.
|
||
</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'>TARGET</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='int'>1</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_target_idx'>target_idx</span> <span class='op'>=</span> <span class='id identifier rubyid_target_index'>target_index</span>
|
||
<span class='kw'>return</span> <span class='lparen'>(</span><span class='id identifier rubyid_target_idx'>target_idx</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_targets'>targets</span><span class='lbracket'>[</span><span class='id identifier rubyid_target_idx'>target_idx</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='kw'>nil</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="target_arch-instance_method">
|
||
|
||
#<strong>target_arch</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the target’s architecture, or the one assigned to the module itself.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
687
|
||
688
|
||
689</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 687</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_target_arch'>target_arch</span>
|
||
<span class='lparen'>(</span><span class='id identifier rubyid_target'>target</span> <span class='kw'>and</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_arch'>arch</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='id identifier rubyid_arch'>arch</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='kw'>nil</span> <span class='op'>:</span> <span class='id identifier rubyid_arch'>arch</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="target_index-instance_method">
|
||
|
||
#<strong>target_index</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>The target index that has been selected.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
657
|
||
658
|
||
659
|
||
660
|
||
661
|
||
662
|
||
663
|
||
664
|
||
665
|
||
666
|
||
667
|
||
668
|
||
669
|
||
670
|
||
671
|
||
672
|
||
673
|
||
674</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 657</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_target_index'>target_index</span>
|
||
<span class='id identifier rubyid_target_idx'>target_idx</span> <span class='op'>=</span>
|
||
<span class='kw'>begin</span>
|
||
<span class='const'>Integer</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'>TARGET</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
||
<span class='kw'>rescue</span> <span class='const'>TypeError</span><span class='comma'>,</span> <span class='const'>ArgumentError</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'>TARGET</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='id identifier rubyid_default_idx'>default_idx</span> <span class='op'>=</span> <span class='id identifier rubyid_default_target'>default_target</span> <span class='op'>||</span> <span class='int'>0</span>
|
||
<span class='comment'># Use the default target if one was not supplied.
|
||
</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_target_idx'>target_idx</span> <span class='op'>==</span> <span class='kw'>nil</span> <span class='kw'>and</span> <span class='id identifier rubyid_default_idx'>default_idx</span> <span class='kw'>and</span> <span class='id identifier rubyid_default_idx'>default_idx</span> <span class='op'>>=</span> <span class='int'>0</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_target_idx'>target_idx</span> <span class='op'>=</span> <span class='id identifier rubyid_default_idx'>default_idx</span>
|
||
<span class='kw'>elsif</span> <span class='id identifier rubyid_target_idx'>target_idx</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span>
|
||
<span class='id identifier rubyid_target_idx'>target_idx</span> <span class='op'>=</span> <span class='id identifier rubyid_targets'>targets</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_target'>target</span><span class='op'>|</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='op'>==</span> <span class='id identifier rubyid_target_idx'>target_idx</span> <span class='rbrace'>}</span>
|
||
<span class='kw'>end</span>
|
||
|
||
<span class='kw'>return</span> <span class='lparen'>(</span><span class='id identifier rubyid_target_idx'>target_idx</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_target_idx'>target_idx</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>:</span> <span class='kw'>nil</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="target_platform-instance_method">
|
||
|
||
#<strong>target_platform</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns the target’s platform, or the one assigned to the module itself.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
679
|
||
680
|
||
681</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 679</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_target_platform'>target_platform</span>
|
||
<span class='lparen'>(</span><span class='id identifier rubyid_target'>target</span> <span class='kw'>and</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_target'>target</span><span class='period'>.</span><span class='id identifier rubyid_platform'>platform</span> <span class='op'>:</span> <span class='id identifier rubyid_platform'>platform</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="type-instance_method">
|
||
|
||
#<strong>type</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>Returns MODULE_EXPLOIT to indicate that this is an exploit module.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
599
|
||
600
|
||
601</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 599</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_type'>type</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="../Msf.html#MODULE_EXPLOIT-constant" title="Msf::MODULE_EXPLOIT (constant)">MODULE_EXPLOIT</a></span></span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="method_details ">
|
||
<h3 class="signature " id="wfs_delay-instance_method">
|
||
|
||
#<strong>wfs_delay</strong> ⇒ <tt>Object</tt>
|
||
|
||
|
||
|
||
|
||
|
||
</h3><div class="docstring">
|
||
<div class="discussion">
|
||
|
||
<p>The minimum “wait for session” delay is 3 seconds for all exploits, the WfsDelay configuration option is added on top of this. The delay allows time for the session handler to perform any session verification.</p>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="tags">
|
||
|
||
|
||
</div><table class="source_code">
|
||
<tr>
|
||
<td>
|
||
<pre class="lines">
|
||
|
||
|
||
1257
|
||
1258
|
||
1259</pre>
|
||
</td>
|
||
<td>
|
||
<pre class="code"><span class="info file"># File 'lib/msf/core/exploit.rb', line 1257</span>
|
||
|
||
<span class='kw'>def</span> <span class='id identifier rubyid_wfs_delay'>wfs_delay</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'>WfsDelay</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='int'>0</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span> <span class='op'>+</span> <span class='int'>3</span>
|
||
<span class='kw'>end</span></pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div id="footer">
|
||
Generated on Fri May 8 17:03:17 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> |