wpxf 2.0.0a
Sign up to get free protection for your applications and to get access to all the features.
- 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,89 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Provides functionality for gathering and posting comments.
|
4
|
+
module Wpxf::WordPress::Comments
|
5
|
+
include Wpxf
|
6
|
+
|
7
|
+
# Initialises a new instance of {Comments}
|
8
|
+
def initialize
|
9
|
+
super
|
10
|
+
|
11
|
+
_register_comment_options if should_register_comment_posting_options
|
12
|
+
end
|
13
|
+
|
14
|
+
# @return [Boolean] a value indicating whether or not to register
|
15
|
+
# the options required to post a WordPress comment.
|
16
|
+
def should_register_comment_posting_options
|
17
|
+
true
|
18
|
+
end
|
19
|
+
|
20
|
+
# Post a comment.
|
21
|
+
# @param post_id [Integer] the post ID to comment on.
|
22
|
+
# @param content [String] the content of the comment.
|
23
|
+
# @param author [String] the author's name.
|
24
|
+
# @param email [String] the author's e-mail address.
|
25
|
+
# @param website [String] the author's website.
|
26
|
+
# @return [Integer] the ID of the comment, or -1 if the comment failed to post.
|
27
|
+
def post_wordpress_comment(post_id, content, author, email, website)
|
28
|
+
comment_id = -1
|
29
|
+
|
30
|
+
scoped_option_change('follow_http_redirection', false) do
|
31
|
+
res = execute_post_request(
|
32
|
+
url: wordpress_url_comments_post,
|
33
|
+
cookie: session_cookie,
|
34
|
+
body: {
|
35
|
+
author: author,
|
36
|
+
comment: content,
|
37
|
+
email: email,
|
38
|
+
url: website,
|
39
|
+
submit: 'Post Comment',
|
40
|
+
comment_post_ID: post_id,
|
41
|
+
comment_parent: 0
|
42
|
+
}
|
43
|
+
)
|
44
|
+
|
45
|
+
if res&.code == 302
|
46
|
+
id = res.headers['Location'][/#comment-([0-9]+)/i, 1]
|
47
|
+
comment_id = id.to_i if id
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
comment_id
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
# Register the comment posting options.
|
57
|
+
def _register_comment_options
|
58
|
+
register_options([
|
59
|
+
StringOption.new(
|
60
|
+
name: 'comment_author',
|
61
|
+
desc: 'The author name to use when posting a comment',
|
62
|
+
default: Utility::Text.rand_alpha(5),
|
63
|
+
required: true
|
64
|
+
),
|
65
|
+
StringOption.new(
|
66
|
+
name: 'comment_content',
|
67
|
+
desc: 'The static text to use as the comment content',
|
68
|
+
default: Utility::Text.rand_alpha(20),
|
69
|
+
required: true
|
70
|
+
),
|
71
|
+
StringOption.new(
|
72
|
+
name: 'comment_email',
|
73
|
+
desc: 'The e-mail address to use when posting a comment',
|
74
|
+
default: Utility::Text.rand_email,
|
75
|
+
required: true
|
76
|
+
),
|
77
|
+
StringOption.new(
|
78
|
+
name: 'comment_website',
|
79
|
+
desc: 'The website address to use when posting a comment',
|
80
|
+
required: false
|
81
|
+
),
|
82
|
+
IntegerOption.new(
|
83
|
+
name: 'comment_post_id',
|
84
|
+
desc: 'The ID of the post to comment on',
|
85
|
+
required: true
|
86
|
+
)
|
87
|
+
])
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,168 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'fileutils'
|
4
|
+
require 'wpxf/helpers/export'
|
5
|
+
|
6
|
+
# Provides reusable functionality for file download modules.
|
7
|
+
module Wpxf::WordPress::FileDownload
|
8
|
+
include Wpxf
|
9
|
+
include Wpxf::Db::Loot
|
10
|
+
include Wpxf::Helpers::Export
|
11
|
+
|
12
|
+
# Initialize a new instance of {FileDownload}
|
13
|
+
def initialize
|
14
|
+
super
|
15
|
+
return unless register_remote_file_option?
|
16
|
+
|
17
|
+
_update_info_without_validation(
|
18
|
+
desc: %(
|
19
|
+
This module exploits a vulnerability which allows you to
|
20
|
+
download any arbitrary file (relative to #{working_directory})
|
21
|
+
accessible by the user the web server is running as.
|
22
|
+
)
|
23
|
+
)
|
24
|
+
|
25
|
+
register_option(
|
26
|
+
StringOption.new(
|
27
|
+
name: 'remote_file',
|
28
|
+
desc: 'The path to the remote file',
|
29
|
+
required: true,
|
30
|
+
default: default_remote_file_path
|
31
|
+
)
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
35
|
+
def register_remote_file_option?
|
36
|
+
true
|
37
|
+
end
|
38
|
+
|
39
|
+
# @return [String, nil] a custom description to use when storing the loot item.
|
40
|
+
def loot_description; end
|
41
|
+
|
42
|
+
# @return [String] the working directory of the vulnerable file.
|
43
|
+
def working_directory; end
|
44
|
+
|
45
|
+
# @return [String] the default remote file path.
|
46
|
+
def default_remote_file_path; end
|
47
|
+
|
48
|
+
# @return [String] the URL of the vulnerable file used to download remote files.
|
49
|
+
def downloader_url; end
|
50
|
+
|
51
|
+
# @return [Hash] the params to be used when requesting the download file.
|
52
|
+
def download_request_params; end
|
53
|
+
|
54
|
+
# @return [Hash, String] the body to be used when requesting the download file.
|
55
|
+
def download_request_body; end
|
56
|
+
|
57
|
+
# @return [Symbol] the HTTP method to use when requesting the download file.
|
58
|
+
def download_request_method
|
59
|
+
:get
|
60
|
+
end
|
61
|
+
|
62
|
+
# @return [String] the path to the remote file.
|
63
|
+
def remote_file
|
64
|
+
normalized_option_value('remote_file')
|
65
|
+
end
|
66
|
+
|
67
|
+
# Validate the contents of the requested file.
|
68
|
+
# @param content [String] the file contents.
|
69
|
+
# @return [Boolean] true if valid.
|
70
|
+
def validate_content(content)
|
71
|
+
true
|
72
|
+
end
|
73
|
+
|
74
|
+
# A task to run before the download starts.
|
75
|
+
# @return [Boolean] true if pre-download operations were successful.
|
76
|
+
def before_download
|
77
|
+
true
|
78
|
+
end
|
79
|
+
|
80
|
+
# @return [String] the file extension to use when downloading the file.
|
81
|
+
def file_extension
|
82
|
+
''
|
83
|
+
end
|
84
|
+
|
85
|
+
# @return [Integer] the expected HTTP code for a successful download.
|
86
|
+
def expected_http_code
|
87
|
+
200
|
88
|
+
end
|
89
|
+
|
90
|
+
# Handles an occurrence of an unexpected result.
|
91
|
+
# @param [Integer] the returned HTTP code.
|
92
|
+
# @return [Boolean] true if the code should be ignored, false if the module should fail.
|
93
|
+
def handle_unexpected_http_code(code)
|
94
|
+
emit_error "Server responded with code #{code}"
|
95
|
+
false
|
96
|
+
end
|
97
|
+
|
98
|
+
# @return [String] the type of file downloaded by the module.
|
99
|
+
def file_category
|
100
|
+
'unknown'
|
101
|
+
end
|
102
|
+
|
103
|
+
# Run the module.
|
104
|
+
# @return [Boolean] true if successful.
|
105
|
+
def run
|
106
|
+
_validate_implementation
|
107
|
+
|
108
|
+
return false unless super
|
109
|
+
return false unless before_download
|
110
|
+
|
111
|
+
@downloaded_filename = generate_unique_filename(file_extension)
|
112
|
+
emit_info 'Downloading file...'
|
113
|
+
res = download_file(_build_request_opts(@downloaded_filename))
|
114
|
+
|
115
|
+
return false unless _validate_result(res)
|
116
|
+
unless validate_content(res.body)
|
117
|
+
FileUtils.rm @downloaded_filename, force: true
|
118
|
+
return false
|
119
|
+
end
|
120
|
+
|
121
|
+
emit_success "Downloaded file to #{@downloaded_filename}"
|
122
|
+
_store_file_as_loot
|
123
|
+
|
124
|
+
true
|
125
|
+
end
|
126
|
+
|
127
|
+
# @return [String] returns the path the file was downloaded to.
|
128
|
+
attr_reader :downloaded_filename
|
129
|
+
|
130
|
+
private
|
131
|
+
|
132
|
+
def _store_file_as_loot
|
133
|
+
desc = loot_description
|
134
|
+
|
135
|
+
if desc.nil? && register_remote_file_option?
|
136
|
+
desc = "Remote file: #{File.basename(remote_file)[0..85]}"
|
137
|
+
end
|
138
|
+
|
139
|
+
desc = '' if desc.nil?
|
140
|
+
store_loot downloaded_filename, desc[0..99], file_category
|
141
|
+
end
|
142
|
+
|
143
|
+
def _validate_implementation
|
144
|
+
return unless register_remote_file_option?
|
145
|
+
raise 'A value must be specified for #working_directory' unless working_directory
|
146
|
+
end
|
147
|
+
|
148
|
+
def _validate_result(res)
|
149
|
+
if res.nil? || res.timed_out?
|
150
|
+
emit_error 'Request timed out, try increasing the http_client_timeout'
|
151
|
+
return false
|
152
|
+
end
|
153
|
+
|
154
|
+
return true unless res.code != expected_http_code
|
155
|
+
handle_unexpected_http_code(res.code)
|
156
|
+
end
|
157
|
+
|
158
|
+
def _build_request_opts(filename)
|
159
|
+
{
|
160
|
+
method: download_request_method,
|
161
|
+
url: downloader_url,
|
162
|
+
params: download_request_params,
|
163
|
+
body: download_request_body,
|
164
|
+
cookie: session_cookie,
|
165
|
+
local_filename: filename
|
166
|
+
}
|
167
|
+
end
|
168
|
+
end
|
@@ -0,0 +1,238 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Provides functionality for fingerprinting WordPress and its components.
|
4
|
+
module Wpxf::WordPress::Fingerprint
|
5
|
+
# Check if the host is online and running WordPress.
|
6
|
+
# @return [Boolean] true if the host is online and running WordPress.
|
7
|
+
def wordpress_and_online?
|
8
|
+
res = execute_get_request(url: full_uri)
|
9
|
+
return false unless res && res.code == 200
|
10
|
+
return true if _wordpress_fingerprint_regexes.any? { |r| res.body =~ r }
|
11
|
+
false
|
12
|
+
end
|
13
|
+
|
14
|
+
# Extract the WordPress version information from various sources.
|
15
|
+
# @return [Version, nil] the version if found, nil otherwise.
|
16
|
+
def wordpress_version
|
17
|
+
_wordpress_version_fingerprint_sources.each do |url, pattern|
|
18
|
+
res = execute_get_request(url: url)
|
19
|
+
match = res.body.match(pattern) if res && res.code == 200
|
20
|
+
return Gem::Version.new(match[1]) if match
|
21
|
+
end
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
|
25
|
+
# Checks the style.css file for a vulnerable version.
|
26
|
+
# @param name [String] the name of the theme.
|
27
|
+
# @param fixed [String] the version the vulnerability was fixed in.
|
28
|
+
# @param introduced [String] the version the vulnerability was introduced in.
|
29
|
+
# @return [Symbol] :unknown, :vulnerable or :safe.
|
30
|
+
def check_theme_version_from_style(name, fixed = nil, introduced = nil)
|
31
|
+
style_uri = normalize_uri(wordpress_url_themes, name, 'style.css')
|
32
|
+
res = execute_get_request(url: style_uri)
|
33
|
+
|
34
|
+
# No style.css file present
|
35
|
+
return :unknown if res.nil? || res.code != 200
|
36
|
+
|
37
|
+
pattern = _extension_version_pattern(:style)
|
38
|
+
_extract_and_check_version(res.body, pattern, fixed, introduced)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Checks a theme's readme for a vulnerable version.
|
42
|
+
# @param name [String] the name of the theme.
|
43
|
+
# @param fixed [String] the version the vulnerability was fixed in.
|
44
|
+
# @param introduced [String] the version the vulnerability was introduced in.
|
45
|
+
# @return [Symbol] :unknown, :vulnerable or :safe.
|
46
|
+
def check_theme_version_from_readme(name, fixed = nil, introduced = nil)
|
47
|
+
_check_version_from_readme(:theme, name, fixed, introduced)
|
48
|
+
end
|
49
|
+
|
50
|
+
# Checks a plugin's readme for a vulnerable version.
|
51
|
+
# @param name [String] the name of the plugin.
|
52
|
+
# @param fixed [String] the version the vulnerability was fixed in.
|
53
|
+
# @param introduced [String] the version the vulnerability was introduced in.
|
54
|
+
# @return [Symbol] :unknown, :vulnerable or :safe.
|
55
|
+
def check_plugin_version_from_readme(name, fixed = nil, introduced = nil)
|
56
|
+
_check_version_from_readme(:plugin, name, fixed, introduced)
|
57
|
+
end
|
58
|
+
|
59
|
+
# Checks a plugin's changelog for a vulnerable version.
|
60
|
+
# @param plugin_name [String] the name of the plugin.
|
61
|
+
# @param file_name [String] the name of the file that contains the changelog.
|
62
|
+
# @param fixed [String] the version the vulnerability was fixed in.
|
63
|
+
# @param introduced [String] the version the vulnerability was introduced in.
|
64
|
+
# @return [Symbol] :unknown, :vulnerable or :safe.
|
65
|
+
def check_plugin_version_from_changelog(plugin_name, file_name, fixed = nil, introduced = nil)
|
66
|
+
changelog = normalize_uri(wordpress_url_plugins, plugin_name, file_name)
|
67
|
+
check_version_from_custom_file(changelog, /=\s([\d\.]+)\s=/, fixed, introduced)
|
68
|
+
end
|
69
|
+
|
70
|
+
# Checks a custom file for a vulnerable version.
|
71
|
+
# @param url [String] the relative path of the file.
|
72
|
+
# @param regex [Regexp] the regular expression to extract the version.
|
73
|
+
# @param fixed [String] the version the vulnerability was fixed in.
|
74
|
+
# @param introduced [String] the version the vulnerability was introduced.
|
75
|
+
# @return [Symbol] :unknown, :vulnerable or :safe.
|
76
|
+
def check_version_from_custom_file(url, regex, fixed = nil, introduced = nil)
|
77
|
+
res = execute_get_request(url: url)
|
78
|
+
return :unknown unless res && res.code == 200
|
79
|
+
_extract_and_check_version(res.body, regex, fixed, introduced)
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
|
84
|
+
WORDPRESS_VERSION_PATTERN = '(\d+\.\d+(?:\.\d+)*)'
|
85
|
+
|
86
|
+
WORDPRESS_GENERATOR_VERSION_PATTERN = %r{<meta\sname="generator"\s
|
87
|
+
content="WordPress\s#{WORDPRESS_VERSION_PATTERN}"\s\/>}xi
|
88
|
+
|
89
|
+
WORDPRESS_README_VERSION_PATTERN = %r{<br\s\/>\sversion\s
|
90
|
+
#{WORDPRESS_VERSION_PATTERN}}xi
|
91
|
+
|
92
|
+
WORDPRESS_RSS_VERSION_PATTERN = %r{<generator>http:\/\/wordpress\.org\/\?v=
|
93
|
+
#{WORDPRESS_VERSION_PATTERN}<\/generator>}xi
|
94
|
+
|
95
|
+
WORDPRESS_RDF_VERSION_PATTERN = %r{<admin:generatorAgent\srdf:resource="http:
|
96
|
+
\/\/wordpress\.org\/\?v=#{WORDPRESS_VERSION_PATTERN}"\s\/>}xi
|
97
|
+
|
98
|
+
WORDPRESS_ATOM_VERSION_PATTERN = %r{<generator\suri="http:\/\/wordpress\.org
|
99
|
+
\/"\sversion="#{WORDPRESS_VERSION_PATTERN}">WordPress<\/generator>}xi
|
100
|
+
|
101
|
+
WORDPRESS_SITEMAP_VERSION_PATTERN = %r{generator="wordpress\/
|
102
|
+
#{WORDPRESS_VERSION_PATTERN}"}xi
|
103
|
+
|
104
|
+
WORDPRESS_OPML_VERSION_PATTERN = %r{generator="wordpress\/
|
105
|
+
#{WORDPRESS_VERSION_PATTERN}"}xi
|
106
|
+
|
107
|
+
def _wordpress_version_fingerprint_sources
|
108
|
+
{
|
109
|
+
full_uri => WORDPRESS_GENERATOR_VERSION_PATTERN,
|
110
|
+
wordpress_url_readme => WORDPRESS_README_VERSION_PATTERN,
|
111
|
+
wordpress_url_rss => WORDPRESS_RSS_VERSION_PATTERN,
|
112
|
+
wordpress_url_rdf => WORDPRESS_RDF_VERSION_PATTERN,
|
113
|
+
wordpress_url_atom => WORDPRESS_ATOM_VERSION_PATTERN,
|
114
|
+
wordpress_url_sitemap => WORDPRESS_SITEMAP_VERSION_PATTERN,
|
115
|
+
wordpress_url_opml => WORDPRESS_OPML_VERSION_PATTERN
|
116
|
+
}
|
117
|
+
end
|
118
|
+
|
119
|
+
def _wordpress_fingerprint_regexes
|
120
|
+
[
|
121
|
+
%r{["'][^"']*\/#{Regexp.escape(wp_content_dir)}\/[^"']*["']}i,
|
122
|
+
%r{<link rel=["']wlwmanifest["'].*href=["'].*\/wp-includes\/
|
123
|
+
wlwmanifest\.xml["'] \/>}i,
|
124
|
+
%r{<link rel=["']pingback["'].*href=["'].*\/xmlrpc\.php["'](?: \/)*>}i
|
125
|
+
]
|
126
|
+
end
|
127
|
+
|
128
|
+
def _check_version_from_readme(type, name, fixed = nil, introduced = nil)
|
129
|
+
readme = _get_first_readme(name, type)
|
130
|
+
if readme.nil?
|
131
|
+
# No readme present for plugin
|
132
|
+
return :unknown if type == :plugin
|
133
|
+
|
134
|
+
# Try again using the style.css file, if it is a theme.
|
135
|
+
return check_theme_version_from_style(name, fixed, introduced) if type == :theme
|
136
|
+
end
|
137
|
+
|
138
|
+
# If all versions are vulnerable and we found a file, end the process here
|
139
|
+
# and return a vulnerable state, as some readmes will not have a version.
|
140
|
+
return :vulnerable if fixed.nil? && introduced.nil?
|
141
|
+
|
142
|
+
state = _extension_is_vulnerable(type, readme, fixed, introduced)
|
143
|
+
if state == :no_version_found
|
144
|
+
# If no version could be found in readme.txt for a theme, try style.css
|
145
|
+
return check_theme_version_from_style(name, fixed, introduced)
|
146
|
+
end
|
147
|
+
|
148
|
+
state
|
149
|
+
end
|
150
|
+
|
151
|
+
def _extension_is_vulnerable(type, readme, fixed, introduced)
|
152
|
+
pattern = _extension_version_pattern(:readme)
|
153
|
+
vuln = _extract_and_check_version(readme, pattern, fixed, introduced)
|
154
|
+
return :no_version_found if vuln == :unknown && type == :theme
|
155
|
+
vuln
|
156
|
+
end
|
157
|
+
|
158
|
+
def _get_first_readme(name, type)
|
159
|
+
res = nil
|
160
|
+
folder = _content_directory_name(type)
|
161
|
+
readmes = ['readme.txt', 'Readme.txt', 'README.txt']
|
162
|
+
readmes.each do |readme|
|
163
|
+
readme_url = normalize_uri(wordpress_url_wp_content, folder, name, readme)
|
164
|
+
res = execute_get_request(url: readme_url)
|
165
|
+
break if res && res.code == 200
|
166
|
+
end
|
167
|
+
|
168
|
+
return res.body if res && res.code == 200
|
169
|
+
nil
|
170
|
+
end
|
171
|
+
|
172
|
+
def _version_vulnerable?(version, fixed, introduced)
|
173
|
+
return :vulnerable if fixed.nil? && introduced.nil?
|
174
|
+
|
175
|
+
if fixed && !introduced
|
176
|
+
return :vulnerable if version < fixed
|
177
|
+
end
|
178
|
+
|
179
|
+
if !fixed && introduced
|
180
|
+
return :vulnerable if version >= introduced
|
181
|
+
end
|
182
|
+
|
183
|
+
if fixed && introduced
|
184
|
+
return :vulnerable if version >= introduced && version < fixed
|
185
|
+
end
|
186
|
+
|
187
|
+
:safe
|
188
|
+
end
|
189
|
+
|
190
|
+
def _content_directory_name(type)
|
191
|
+
case type
|
192
|
+
when :plugin
|
193
|
+
'plugins'
|
194
|
+
when :theme
|
195
|
+
'themes'
|
196
|
+
else
|
197
|
+
raise("Unknown readme type #{type}")
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
def _extract_highest_version(body, pattern)
|
202
|
+
version = nil
|
203
|
+
|
204
|
+
body.scan(pattern) do |match|
|
205
|
+
match_version = Gem::Version.new(match[0])
|
206
|
+
version = match_version if version.nil? || match_version > version
|
207
|
+
end
|
208
|
+
|
209
|
+
version
|
210
|
+
end
|
211
|
+
|
212
|
+
def _extract_and_check_version(body, pattern, fixed = nil, introduced = nil)
|
213
|
+
version = _extract_highest_version(body, pattern)
|
214
|
+
return :unknown if version.nil?
|
215
|
+
|
216
|
+
version = Gem::Version.new(version)
|
217
|
+
fixed = Gem::Version.new(fixed) unless fixed.nil?
|
218
|
+
introduced = Gem::Version.new(introduced) unless introduced.nil?
|
219
|
+
|
220
|
+
emit_info "Found version #{version}", true
|
221
|
+
_version_vulnerable?(version, fixed, introduced)
|
222
|
+
end
|
223
|
+
|
224
|
+
def _extension_version_pattern(type)
|
225
|
+
case type
|
226
|
+
when :readme
|
227
|
+
# Example line:
|
228
|
+
# Stable tag: 2.6.6
|
229
|
+
/(?:stable tag):\s*(?!trunk)([0-9a-z.-]+)/i
|
230
|
+
when :style
|
231
|
+
# Example line:
|
232
|
+
# Version: 1.5.2
|
233
|
+
/(?:Version):\s*([0-9a-z.-]+)/i
|
234
|
+
else
|
235
|
+
raise("Unknown file type #{type}")
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|