Class: Ronin::Exploits::SSTI

Inherits:
WebVuln show all
Defined in:
lib/ronin/exploits/ssti.rb

Overview

Represents a Server Side Template Injection (SSTI) exploit.

Example

require 'ronin/exploits/ssti'

module Ronin
  module Exploits
    class MyExploit < SSTI

      register 'my_exploit'

      base_path '/path/to/page.php'
      query_param 'name'
      escape_expr ->(expr) { "${{#{expr}}}" }

    end
  end
end

Since:

  • 1.0.0

Constant Summary

Constants included from Mixins::HTTP

Mixins::HTTP::HTTP_USER_AGENT_ALIASES

Instance Attribute Summary

Attributes included from Mixins::HasPayload

#payload

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from WebVuln

base_path, cookie, #cookie, cookie_param, form_data, #form_data, form_param, header_name, headers, #headers, query_param, referer, #referer, request_method, #test, #url, #web_vuln_kwargs

Methods included from Mixins::HasPayload

included, #initialize, #perform_build, #perform_cleanup, #perform_launch, #perform_validate

Methods included from Mixins::HTTP

#http, #http_allowed_methods, #http_cookie, #http_copy, #http_delete, #http_get, #http_get_body, #http_get_cookies, #http_get_headers, #http_head, #http_headers, #http_lock, #http_mkcol, #http_move, #http_ok?, #http_options, #http_password, #http_patch, #http_post, #http_post_body, #http_post_headers, #http_powered_by_header, #http_propfind, #http_proppatch, #http_proxy, #http_put, #http_request, #http_response_body, #http_response_headers, #http_response_status, #http_server_header, #http_trace, #http_unlock, #http_user, #http_user_agent, included

Methods inherited from Exploit

#NotVulnerable, #Unknown, #Vulnerable, advisories, advisory, #build, #cleanup, disclosed?, disclosure_date, exploit, #exploit, #fail, #initialize, #launch, #perform_build, #perform_cleanup, #perform_launch, #perform_test, #perform_validate, quality, register, release_date, released?, software, software_versions, #test, #validate

Class Method Details

.escape_expr(new_escape_expr = nil) ⇒ Proc?

Gets or sets the exploit's SSTI escape logic.

Examples:

escape_expr ->(expr) { "${{#{expr}}}" }

Parameters:

  • new_escape_expr (Proc, nil) (defaults to: nil)

    The optional new escape proc.

Returns:

  • (Proc, nil)

    The escape expression proc.

Since:

  • 1.0.0



73
74
75
76
77
78
79
80
81
# File 'lib/ronin/exploits/ssti.rb', line 73

def self.escape_expr(new_escape_expr=nil)
  if new_escape_expr
    @escape_expr = new_escape_expr
  else
    @escape_expr || if superclass < SSTI
                      superclass.escape_expr
                    end
  end
end

.exploit_typeSymbol

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Note:

This is used internally to map an exploit class to a printable type.

Returns the type or kind of exploit.

Returns:

  • (Symbol)

Since:

  • 1.0.0



93
94
95
# File 'lib/ronin/exploits/ssti.rb', line 93

def self.exploit_type
  :ssti
end

Instance Method Details

#vulnRonin::Vulns::SSTI

The Server Side Template Injection (SSTI) vulnerability to exploit.

Returns:

  • (Ronin::Vulns::SSTI)

Since:

  • 1.0.0



102
103
104
105
# File 'lib/ronin/exploits/ssti.rb', line 102

def vuln
  @vuln ||= Vulns::SSTI.new(url, escape: self.class.escape_expr,
                                 **web_vuln_kwargs)
end