arachni 1.5 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +63 -0
- data/Gemfile +2 -4
- data/LICENSE.md +1 -1
- data/README.md +112 -111
- data/Rakefile +1 -43
- data/arachni.gemspec +26 -26
- data/bin/arachni +1 -1
- data/bin/arachni_console +1 -1
- data/bin/arachni_multi +1 -1
- data/bin/arachni_reporter +1 -1
- data/bin/arachni_reproduce +1 -1
- data/bin/arachni_rest_server +1 -1
- data/bin/arachni_restore +1 -1
- data/bin/arachni_rpc +1 -1
- data/bin/arachni_rpcd +1 -1
- data/bin/arachni_rpcd_monitor +1 -1
- data/bin/arachni_script +1 -1
- data/components/checks/active/code_injection.rb +1 -1
- data/components/checks/active/code_injection_php_input_wrapper.rb +1 -1
- data/components/checks/active/code_injection_timing.rb +1 -1
- data/components/checks/active/csrf.rb +7 -2
- data/components/checks/active/file_inclusion.rb +1 -1
- data/components/checks/active/ldap_injection.rb +1 -1
- data/components/checks/active/no_sql_injection.rb +1 -1
- data/components/checks/active/no_sql_injection_differential.rb +3 -3
- data/components/checks/active/os_cmd_injection.rb +1 -1
- data/components/checks/active/os_cmd_injection_timing.rb +1 -1
- data/components/checks/active/path_traversal.rb +1 -1
- data/components/checks/active/response_splitting.rb +1 -1
- data/components/checks/active/rfi.rb +1 -1
- data/components/checks/active/session_fixation.rb +1 -1
- data/components/checks/active/source_code_disclosure.rb +1 -1
- data/components/checks/active/sql_injection.rb +1 -1
- data/components/checks/active/sql_injection_differential.rb +3 -3
- data/components/checks/active/sql_injection_timing.rb +1 -1
- data/components/checks/active/trainer.rb +1 -1
- data/components/checks/active/unvalidated_redirect.rb +1 -1
- data/components/checks/active/unvalidated_redirect_dom.rb +1 -1
- data/components/checks/active/xpath_injection.rb +1 -1
- data/components/checks/active/xss.rb +4 -4
- data/components/checks/active/xss_dom.rb +1 -1
- data/components/checks/active/xss_dom_script_context.rb +1 -1
- data/components/checks/active/xss_event.rb +3 -3
- data/components/checks/active/xss_path.rb +1 -1
- data/components/checks/active/xss_script_context.rb +3 -3
- data/components/checks/active/xss_tag.rb +4 -3
- data/components/checks/active/xxe.rb +1 -1
- data/components/checks/passive/allowed_methods.rb +1 -1
- data/components/checks/passive/backdoors.rb +1 -1
- data/components/checks/passive/backup_directories.rb +1 -1
- data/components/checks/passive/backup_files.rb +2 -2
- data/components/checks/passive/common_admin_interfaces.rb +1 -1
- data/components/checks/passive/common_directories/directories.txt +1 -0
- data/components/checks/passive/common_directories.rb +1 -1
- data/components/checks/passive/common_files.rb +1 -1
- data/components/checks/passive/directory_listing.rb +1 -1
- data/components/checks/passive/grep/captcha.rb +1 -1
- data/components/checks/passive/grep/cookie_set_for_parent_domain.rb +1 -1
- data/components/checks/passive/grep/credit_card.rb +1 -1
- data/components/checks/passive/grep/cvs_svn_users.rb +1 -1
- data/components/checks/passive/grep/emails.rb +1 -1
- data/components/checks/passive/grep/form_upload.rb +1 -1
- data/components/checks/passive/grep/hsts.rb +1 -1
- data/components/checks/passive/grep/html_objects.rb +1 -1
- data/components/checks/passive/grep/http_only_cookies.rb +1 -1
- data/components/checks/passive/grep/insecure_cookies.rb +1 -1
- data/components/checks/passive/grep/insecure_cors_policy.rb +1 -1
- data/components/checks/passive/grep/mixed_resource.rb +1 -1
- data/components/checks/passive/grep/password_autocomplete.rb +1 -1
- data/components/checks/passive/grep/private_ip.rb +1 -1
- data/components/checks/passive/grep/ssn.rb +1 -1
- data/components/checks/passive/grep/unencrypted_password_forms.rb +1 -1
- data/components/checks/passive/grep/x_frame_options.rb +4 -4
- data/components/checks/passive/htaccess_limit.rb +1 -1
- data/components/checks/passive/http_put.rb +1 -1
- data/components/checks/passive/insecure_client_access_policy.rb +1 -1
- data/components/checks/passive/insecure_cross_domain_policy_access.rb +1 -1
- data/components/checks/passive/insecure_cross_domain_policy_headers.rb +1 -1
- data/components/checks/passive/interesting_responses.rb +1 -1
- data/components/checks/passive/localstart_asp.rb +1 -1
- data/components/checks/passive/origin_spoof_access_restriction_bypass.rb +1 -1
- data/components/checks/passive/webdav.rb +1 -1
- data/components/checks/passive/xst.rb +1 -1
- data/components/fingerprinters/frameworks/aspx_mvc.rb +1 -1
- data/components/fingerprinters/frameworks/cakephp.rb +1 -1
- data/components/fingerprinters/frameworks/cherrypy.rb +1 -1
- data/components/fingerprinters/frameworks/django.rb +1 -1
- data/components/fingerprinters/frameworks/jsf.rb +1 -1
- data/components/fingerprinters/frameworks/nette.rb +1 -1
- data/components/fingerprinters/frameworks/rack.rb +1 -1
- data/components/fingerprinters/frameworks/rails.rb +1 -1
- data/components/fingerprinters/frameworks/symfony.rb +1 -1
- data/components/fingerprinters/languages/asp.rb +1 -1
- data/components/fingerprinters/languages/aspx.rb +1 -1
- data/components/fingerprinters/languages/java.rb +1 -1
- data/components/fingerprinters/languages/php.rb +1 -1
- data/components/fingerprinters/languages/python.rb +1 -1
- data/components/fingerprinters/languages/ruby.rb +1 -1
- data/components/fingerprinters/os/bsd.rb +1 -1
- data/components/fingerprinters/os/linux.rb +1 -1
- data/components/fingerprinters/os/solaris.rb +1 -1
- data/components/fingerprinters/os/unix.rb +1 -1
- data/components/fingerprinters/os/windows.rb +1 -1
- data/components/fingerprinters/servers/apache.rb +1 -1
- data/components/fingerprinters/servers/gunicorn.rb +1 -1
- data/components/fingerprinters/servers/iis.rb +1 -1
- data/components/fingerprinters/servers/jetty.rb +1 -1
- data/components/fingerprinters/servers/nginx.rb +1 -1
- data/components/fingerprinters/servers/tomcat.rb +1 -1
- data/components/path_extractors/anchors.rb +1 -1
- data/components/path_extractors/areas.rb +1 -1
- data/components/path_extractors/comments.rb +1 -1
- data/components/path_extractors/data_url.rb +1 -1
- data/components/path_extractors/forms.rb +1 -1
- data/components/path_extractors/frames.rb +1 -1
- data/components/path_extractors/generic.rb +1 -1
- data/components/path_extractors/links.rb +1 -1
- data/components/path_extractors/meta_refresh.rb +1 -1
- data/components/path_extractors/scripts.rb +2 -2
- data/components/plugins/autologin.rb +1 -1
- data/components/plugins/beep_notify.rb +1 -1
- data/components/plugins/content_types.rb +1 -1
- data/components/plugins/cookie_collector.rb +1 -1
- data/components/plugins/debug/browser_cluster_job_monitor.rb +1 -1
- data/components/plugins/defaults/autothrottle.rb +1 -1
- data/components/plugins/defaults/healthmap.rb +2 -2
- data/components/plugins/defaults/meta/remedies/discovery.rb +1 -1
- data/components/plugins/defaults/meta/remedies/timing_attacks.rb +1 -1
- data/components/plugins/defaults/meta/uniformity.rb +1 -1
- data/components/plugins/email_notify.rb +1 -1
- data/components/plugins/exec.rb +1 -1
- data/components/plugins/form_dicattack.rb +1 -1
- data/components/plugins/headers_collector.rb +1 -1
- data/components/plugins/http_dicattack.rb +1 -1
- data/components/plugins/login_script.rb +1 -1
- data/components/plugins/metrics.rb +20 -20
- data/components/plugins/page_dump.rb +1 -1
- data/components/plugins/proxy/panel/verify_login_sequence.html.erb +1 -1
- data/components/plugins/proxy/template_scope.rb +1 -1
- data/components/plugins/proxy.rb +3 -2
- data/components/plugins/rate_limiter.rb +1 -1
- data/components/plugins/restrict_to_dom_state.rb +1 -1
- data/components/plugins/script.rb +1 -1
- data/components/plugins/uncommon_headers.rb +1 -1
- data/components/plugins/vector_collector.rb +1 -1
- data/components/plugins/vector_feed.rb +1 -1
- data/components/plugins/waf_detector.rb +1 -1
- data/components/plugins/webhook_notify.rb +1 -1
- data/components/reporters/ap.rb +1 -1
- data/components/reporters/html/default.erb +3 -1
- data/components/reporters/html.rb +5 -7
- data/components/reporters/json.rb +1 -1
- data/components/reporters/marshal.rb +1 -1
- data/components/reporters/plugin_formatters/html/autologin.rb +1 -1
- data/components/reporters/plugin_formatters/html/content_types.rb +1 -1
- data/components/reporters/plugin_formatters/html/cookie_collector.rb +1 -1
- data/components/reporters/plugin_formatters/html/exec.rb +1 -1
- data/components/reporters/plugin_formatters/html/form_dicattack.rb +1 -1
- data/components/reporters/plugin_formatters/html/healthmap.rb +1 -1
- data/components/reporters/plugin_formatters/html/http_dicattack.rb +1 -1
- data/components/reporters/plugin_formatters/html/login_script.rb +1 -1
- data/components/reporters/plugin_formatters/html/metrics.rb +1 -1
- data/components/reporters/plugin_formatters/html/uncommon_headers.rb +1 -1
- data/components/reporters/plugin_formatters/html/uniformity.rb +1 -1
- data/components/reporters/plugin_formatters/html/vector_collector.rb +1 -1
- data/components/reporters/plugin_formatters/html/waf_detector.rb +1 -1
- data/components/reporters/plugin_formatters/stdout/autologin.rb +1 -1
- data/components/reporters/plugin_formatters/stdout/content_types.rb +1 -1
- data/components/reporters/plugin_formatters/stdout/cookie_collector.rb +1 -1
- data/components/reporters/plugin_formatters/stdout/exec.rb +1 -1
- data/components/reporters/plugin_formatters/stdout/form_dicattack.rb +1 -1
- data/components/reporters/plugin_formatters/stdout/healthmap.rb +1 -1
- data/components/reporters/plugin_formatters/stdout/http_dicattack.rb +1 -1
- data/components/reporters/plugin_formatters/stdout/login_script.rb +1 -1
- data/components/reporters/plugin_formatters/stdout/metrics.rb +1 -1
- data/components/reporters/plugin_formatters/stdout/uncommon_headers.rb +1 -1
- data/components/reporters/plugin_formatters/stdout/uniformity.rb +1 -1
- data/components/reporters/plugin_formatters/stdout/vector_collector.rb +1 -1
- data/components/reporters/plugin_formatters/stdout/waf_detector.rb +1 -1
- data/components/reporters/plugin_formatters/xml/autologin.rb +1 -1
- data/components/reporters/plugin_formatters/xml/content_types.rb +1 -1
- data/components/reporters/plugin_formatters/xml/cookie_collector.rb +1 -1
- data/components/reporters/plugin_formatters/xml/exec.rb +1 -1
- data/components/reporters/plugin_formatters/xml/form_dicattack.rb +1 -1
- data/components/reporters/plugin_formatters/xml/healthmap.rb +1 -1
- data/components/reporters/plugin_formatters/xml/http_dicattack.rb +1 -1
- data/components/reporters/plugin_formatters/xml/login_script.rb +1 -1
- data/components/reporters/plugin_formatters/xml/metrics.rb +1 -1
- data/components/reporters/plugin_formatters/xml/uncommon_headers.rb +1 -1
- data/components/reporters/plugin_formatters/xml/uniformity.rb +1 -1
- data/components/reporters/plugin_formatters/xml/vector_collector.rb +1 -1
- data/components/reporters/plugin_formatters/xml/waf_detector.rb +1 -1
- data/components/reporters/stdout.rb +1 -1
- data/components/reporters/txt.rb +1 -1
- data/components/reporters/xml/schema.xsd +1 -0
- data/components/reporters/xml.rb +3 -3
- data/components/reporters/yaml.rb +1 -1
- data/config/write_paths.yml +4 -0
- data/lib/arachni/banner.rb +1 -1
- data/lib/arachni/browser/element_locator.rb +1 -1
- data/lib/arachni/browser/javascript/dom_monitor.rb +1 -1
- data/lib/arachni/browser/javascript/proxy/stub.rb +1 -1
- data/lib/arachni/browser/javascript/proxy.rb +1 -1
- data/lib/arachni/browser/javascript/scripts/dom_monitor.js +39 -26
- data/lib/arachni/browser/javascript/scripts/taint_tracer.js +58 -40
- data/lib/arachni/browser/javascript/taint_tracer/frame/called_function.rb +1 -1
- data/lib/arachni/browser/javascript/taint_tracer/frame.rb +1 -1
- data/lib/arachni/browser/javascript/taint_tracer/sink/base.rb +1 -1
- data/lib/arachni/browser/javascript/taint_tracer/sink/data_flow.rb +1 -1
- data/lib/arachni/browser/javascript/taint_tracer/sink/execution_flow.rb +1 -1
- data/lib/arachni/browser/javascript/taint_tracer.rb +1 -1
- data/lib/arachni/browser/javascript.rb +14 -36
- data/lib/arachni/browser.rb +133 -216
- data/lib/arachni/browser_cluster/job/result.rb +1 -1
- data/lib/arachni/browser_cluster/job.rb +1 -1
- data/lib/arachni/browser_cluster/jobs/browser_provider.rb +1 -1
- data/lib/arachni/browser_cluster/jobs/dom_exploration/event_trigger/result.rb +1 -1
- data/lib/arachni/browser_cluster/jobs/dom_exploration/event_trigger.rb +1 -1
- data/lib/arachni/browser_cluster/jobs/dom_exploration/result.rb +1 -1
- data/lib/arachni/browser_cluster/jobs/dom_exploration.rb +1 -1
- data/lib/arachni/browser_cluster/jobs/taint_trace/event_trigger/result.rb +1 -1
- data/lib/arachni/browser_cluster/jobs/taint_trace/event_trigger.rb +1 -1
- data/lib/arachni/browser_cluster/jobs/taint_trace/result.rb +1 -1
- data/lib/arachni/browser_cluster/jobs/taint_trace.rb +1 -1
- data/lib/arachni/browser_cluster/worker.rb +11 -26
- data/lib/arachni/browser_cluster.rb +2 -3
- data/lib/arachni/check/auditor.rb +28 -66
- data/lib/arachni/check/base.rb +1 -1
- data/lib/arachni/check/manager.rb +1 -1
- data/lib/arachni/check.rb +1 -1
- data/lib/arachni/component/base.rb +1 -1
- data/lib/arachni/component/manager.rb +1 -1
- data/lib/arachni/component/options/address.rb +1 -1
- data/lib/arachni/component/options/base.rb +1 -1
- data/lib/arachni/component/options/bool.rb +1 -1
- data/lib/arachni/component/options/float.rb +1 -1
- data/lib/arachni/component/options/int.rb +1 -1
- data/lib/arachni/component/options/multiple_choice.rb +1 -1
- data/lib/arachni/component/options/object.rb +1 -1
- data/lib/arachni/component/options/path.rb +1 -1
- data/lib/arachni/component/options/port.rb +1 -1
- data/lib/arachni/component/options/string.rb +1 -1
- data/lib/arachni/component/options/url.rb +1 -1
- data/lib/arachni/component/options.rb +1 -1
- data/lib/arachni/component/output.rb +1 -1
- data/lib/arachni/component/utilities.rb +1 -1
- data/lib/arachni/component.rb +1 -1
- data/lib/arachni/data/framework/rpc.rb +2 -2
- data/lib/arachni/data/framework.rb +2 -2
- data/lib/arachni/data/issues.rb +1 -1
- data/lib/arachni/data/plugins.rb +1 -1
- data/lib/arachni/data/session.rb +1 -1
- data/lib/arachni/data.rb +1 -1
- data/lib/arachni/element/base.rb +1 -1
- data/lib/arachni/element/body.rb +1 -1
- data/lib/arachni/element/capabilities/analyzable/differential.rb +1 -1
- data/lib/arachni/element/capabilities/analyzable/signature.rb +2 -2
- data/lib/arachni/element/capabilities/analyzable/timeout.rb +1 -1
- data/lib/arachni/element/capabilities/analyzable.rb +1 -1
- data/lib/arachni/element/capabilities/auditable/buffered.rb +1 -1
- data/lib/arachni/element/capabilities/auditable/line_buffered.rb +1 -1
- data/lib/arachni/element/capabilities/auditable.rb +1 -1
- data/lib/arachni/element/capabilities/dom_only.rb +1 -1
- data/lib/arachni/element/capabilities/inputtable.rb +1 -1
- data/lib/arachni/element/capabilities/mutable.rb +1 -1
- data/lib/arachni/element/capabilities/refreshable.rb +1 -1
- data/lib/arachni/element/capabilities/submittable.rb +1 -1
- data/lib/arachni/element/capabilities/with_auditor/output.rb +1 -1
- data/lib/arachni/element/capabilities/with_auditor.rb +1 -1
- data/lib/arachni/element/capabilities/with_dom.rb +1 -1
- data/lib/arachni/element/capabilities/with_node.rb +1 -1
- data/lib/arachni/element/capabilities/with_scope/scope.rb +1 -1
- data/lib/arachni/element/capabilities/with_scope.rb +1 -1
- data/lib/arachni/element/capabilities/with_source.rb +1 -1
- data/lib/arachni/element/cookie/capabilities/inputtable.rb +1 -1
- data/lib/arachni/element/cookie/capabilities/mutable.rb +1 -1
- data/lib/arachni/element/cookie/capabilities/with_dom.rb +1 -1
- data/lib/arachni/element/cookie/dom.rb +1 -1
- data/lib/arachni/element/cookie.rb +1 -1
- data/lib/arachni/element/dom/capabilities/auditable.rb +1 -1
- data/lib/arachni/element/dom/capabilities/inputtable.rb +1 -1
- data/lib/arachni/element/dom/capabilities/locatable.rb +1 -1
- data/lib/arachni/element/dom/capabilities/mutable.rb +1 -1
- data/lib/arachni/element/dom/capabilities/submittable.rb +1 -1
- data/lib/arachni/element/dom.rb +1 -1
- data/lib/arachni/element/form/capabilities/auditable.rb +1 -1
- data/lib/arachni/element/form/capabilities/mutable.rb +1 -1
- data/lib/arachni/element/form/capabilities/submittable.rb +1 -1
- data/lib/arachni/element/form/capabilities/with_dom.rb +1 -1
- data/lib/arachni/element/form/dom.rb +1 -1
- data/lib/arachni/element/form.rb +1 -1
- data/lib/arachni/element/generic_dom.rb +1 -1
- data/lib/arachni/element/header/capabilities/inputtable.rb +1 -1
- data/lib/arachni/element/header/capabilities/mutable.rb +1 -1
- data/lib/arachni/element/header.rb +1 -1
- data/lib/arachni/element/json/capabilities/inputtable.rb +1 -1
- data/lib/arachni/element/json/capabilities/mutable.rb +1 -1
- data/lib/arachni/element/json.rb +1 -1
- data/lib/arachni/element/link/capabilities/auditable.rb +1 -1
- data/lib/arachni/element/link/capabilities/submittable.rb +1 -1
- data/lib/arachni/element/link/capabilities/with_dom.rb +1 -1
- data/lib/arachni/element/link/dom/capabilities/submittable.rb +1 -1
- data/lib/arachni/element/link/dom.rb +1 -1
- data/lib/arachni/element/link.rb +1 -1
- data/lib/arachni/element/link_template/capabilities/auditable.rb +1 -1
- data/lib/arachni/element/link_template/capabilities/inputtable.rb +1 -1
- data/lib/arachni/element/link_template/capabilities/with_dom.rb +1 -1
- data/lib/arachni/element/link_template/dom/capabilities/submittable.rb +1 -1
- data/lib/arachni/element/link_template/dom.rb +1 -1
- data/lib/arachni/element/link_template.rb +1 -1
- data/lib/arachni/element/nested_cookie/capabilities/submittable.rb +35 -0
- data/lib/arachni/element/nested_cookie.rb +370 -0
- data/lib/arachni/element/path.rb +1 -1
- data/lib/arachni/element/server.rb +1 -1
- data/lib/arachni/element/ui_form/dom.rb +1 -1
- data/lib/arachni/element/ui_form.rb +1 -1
- data/lib/arachni/element/ui_input/dom.rb +1 -1
- data/lib/arachni/element/ui_input.rb +1 -1
- data/lib/arachni/element/xml/capabilities/inputtable.rb +1 -1
- data/lib/arachni/element/xml/capabilities/mutable.rb +1 -1
- data/lib/arachni/element/xml.rb +1 -1
- data/lib/arachni/element_filter.rb +1 -1
- data/lib/arachni/error.rb +1 -1
- data/lib/arachni/ethon/easy.rb +1 -1
- data/lib/arachni/framework/parts/audit.rb +1 -1
- data/lib/arachni/framework/parts/browser.rb +1 -1
- data/lib/arachni/framework/parts/check.rb +1 -1
- data/lib/arachni/framework/parts/data.rb +1 -1
- data/lib/arachni/framework/parts/platform.rb +1 -1
- data/lib/arachni/framework/parts/plugin.rb +1 -1
- data/lib/arachni/framework/parts/report.rb +2 -2
- data/lib/arachni/framework/parts/scope.rb +1 -1
- data/lib/arachni/framework/parts/state.rb +1 -1
- data/lib/arachni/framework.rb +1 -1
- data/lib/arachni/http/client/dynamic_404_handler.rb +1 -1
- data/lib/arachni/http/client.rb +7 -5
- data/lib/arachni/http/cookie_jar.rb +1 -1
- data/lib/arachni/http/headers.rb +1 -1
- data/lib/arachni/http/message/scope.rb +1 -1
- data/lib/arachni/http/message.rb +2 -2
- data/lib/arachni/http/proxy_server/connection.rb +3 -8
- data/lib/arachni/http/proxy_server/ssl-interceptor-cacert.pem +18 -32
- data/lib/arachni/http/proxy_server/ssl-interceptor-cakey.pem +28 -49
- data/lib/arachni/http/proxy_server/ssl_interceptor.rb +7 -6
- data/lib/arachni/http/proxy_server/tunnel.rb +1 -1
- data/lib/arachni/http/proxy_server.rb +1 -1
- data/lib/arachni/http/request/scope.rb +1 -1
- data/lib/arachni/http/request.rb +8 -2
- data/lib/arachni/http/response/scope.rb +1 -1
- data/lib/arachni/http/response.rb +3 -3
- data/lib/arachni/http.rb +1 -1
- data/lib/arachni/issue/severity/base.rb +1 -1
- data/lib/arachni/issue/severity.rb +1 -1
- data/lib/arachni/issue.rb +1 -1
- data/lib/arachni/option_group.rb +1 -1
- data/lib/arachni/option_groups/audit.rb +11 -2
- data/lib/arachni/option_groups/browser_cluster.rb +28 -4
- data/lib/arachni/option_groups/datastore.rb +1 -1
- data/lib/arachni/option_groups/dispatcher.rb +1 -1
- data/lib/arachni/option_groups/http.rb +5 -5
- data/lib/arachni/option_groups/input.rb +1 -1
- data/lib/arachni/option_groups/output.rb +1 -1
- data/lib/arachni/option_groups/paths.rb +12 -1
- data/lib/arachni/option_groups/rpc.rb +1 -1
- data/lib/arachni/option_groups/scope.rb +46 -4
- data/lib/arachni/option_groups/session.rb +1 -1
- data/lib/arachni/option_groups/snapshot.rb +1 -1
- data/lib/arachni/option_groups.rb +1 -1
- data/lib/arachni/options.rb +2 -2
- data/lib/arachni/page/dom/transition.rb +1 -1
- data/lib/arachni/page/dom.rb +1 -1
- data/lib/arachni/page/scope.rb +1 -1
- data/lib/arachni/page.rb +3 -3
- data/lib/arachni/parser/document.rb +1 -1
- data/lib/arachni/parser/extractors/base.rb +1 -1
- data/lib/arachni/parser/nodes/base.rb +1 -1
- data/lib/arachni/parser/nodes/comment.rb +1 -1
- data/lib/arachni/parser/nodes/element/with_attributes/attributes.rb +2 -2
- data/lib/arachni/parser/nodes/element/with_attributes.rb +1 -1
- data/lib/arachni/parser/nodes/element.rb +1 -1
- data/lib/arachni/parser/nodes/text.rb +2 -2
- data/lib/arachni/parser/nodes/with_value.rb +2 -2
- data/lib/arachni/parser/sax.rb +2 -1
- data/lib/arachni/parser/with_children/search.rb +1 -1
- data/lib/arachni/parser/with_children.rb +2 -2
- data/lib/arachni/parser.rb +33 -10
- data/lib/arachni/platform/fingerprinter.rb +1 -1
- data/lib/arachni/platform/list.rb +1 -1
- data/lib/arachni/platform/manager.rb +1 -1
- data/lib/arachni/platform.rb +1 -1
- data/lib/arachni/plugin/base.rb +1 -1
- data/lib/arachni/plugin/formatter.rb +1 -1
- data/lib/arachni/plugin/manager.rb +1 -1
- data/lib/arachni/plugin.rb +1 -1
- data/lib/arachni/processes/dispatchers.rb +1 -1
- data/lib/arachni/processes/executables/base.rb +2 -1
- data/lib/arachni/processes/helpers/dispatchers.rb +1 -1
- data/lib/arachni/processes/helpers/instances.rb +1 -1
- data/lib/arachni/processes/helpers/processes.rb +1 -1
- data/lib/arachni/processes/helpers.rb +1 -1
- data/lib/arachni/processes/instances.rb +1 -1
- data/lib/arachni/processes/manager.rb +9 -5
- data/lib/arachni/processes.rb +1 -1
- data/lib/arachni/report.rb +1 -1
- data/lib/arachni/reporter/base.rb +1 -1
- data/lib/arachni/reporter/formatter_manager.rb +1 -1
- data/lib/arachni/reporter/manager.rb +1 -1
- data/lib/arachni/reporter/options.rb +1 -10
- data/lib/arachni/reporter.rb +1 -1
- data/lib/arachni/rest/server/instance_helpers.rb +10 -1
- data/lib/arachni/rest/server.rb +7 -1
- data/lib/arachni/rpc/client/base.rb +1 -1
- data/lib/arachni/rpc/client/dispatcher.rb +1 -1
- data/lib/arachni/rpc/client/instance/framework.rb +1 -1
- data/lib/arachni/rpc/client/instance/service.rb +1 -1
- data/lib/arachni/rpc/client/instance.rb +1 -1
- data/lib/arachni/rpc/serializer.rb +1 -1
- data/lib/arachni/rpc/server/active_options.rb +1 -1
- data/lib/arachni/rpc/server/base.rb +1 -1
- data/lib/arachni/rpc/server/check/manager.rb +1 -1
- data/lib/arachni/rpc/server/dispatcher/node.rb +1 -1
- data/lib/arachni/rpc/server/dispatcher/service.rb +1 -1
- data/lib/arachni/rpc/server/dispatcher.rb +1 -1
- data/lib/arachni/rpc/server/framework/distributor.rb +1 -1
- data/lib/arachni/rpc/server/framework/master.rb +1 -1
- data/lib/arachni/rpc/server/framework/multi_instance.rb +1 -1
- data/lib/arachni/rpc/server/framework/slave.rb +1 -1
- data/lib/arachni/rpc/server/framework.rb +1 -1
- data/lib/arachni/rpc/server/instance.rb +1 -1
- data/lib/arachni/rpc/server/output.rb +1 -1
- data/lib/arachni/rpc/server/plugin/manager.rb +1 -1
- data/lib/arachni/ruby/array.rb +1 -1
- data/lib/arachni/ruby/hash.rb +1 -1
- data/lib/arachni/ruby/object.rb +1 -1
- data/lib/arachni/ruby/set.rb +1 -1
- data/lib/arachni/ruby/string.rb +1 -1
- data/lib/arachni/ruby/webrick/cookie.rb +1 -1
- data/lib/arachni/ruby/webrick/httprequest.rb +1 -1
- data/lib/arachni/ruby/webrick.rb +1 -1
- data/lib/arachni/ruby.rb +1 -1
- data/lib/arachni/scope.rb +1 -1
- data/lib/arachni/selenium/webdriver/remote/typhoeus.rb +6 -16
- data/lib/arachni/session.rb +1 -1
- data/lib/arachni/snapshot.rb +2 -2
- data/lib/arachni/state/audit.rb +1 -1
- data/lib/arachni/state/element_filter.rb +1 -1
- data/lib/arachni/state/framework/rpc.rb +1 -1
- data/lib/arachni/state/framework.rb +1 -1
- data/lib/arachni/state/http.rb +1 -1
- data/lib/arachni/state/options.rb +1 -1
- data/lib/arachni/state/plugins.rb +1 -1
- data/lib/arachni/state.rb +1 -1
- data/lib/arachni/support/buffer/autoflush.rb +1 -1
- data/lib/arachni/support/buffer/base.rb +1 -1
- data/lib/arachni/support/buffer.rb +1 -1
- data/lib/arachni/support/cache/base.rb +1 -1
- data/lib/arachni/support/cache/least_cost_replacement.rb +1 -1
- data/lib/arachni/support/cache/least_recently_pushed.rb +1 -1
- data/lib/arachni/support/cache/least_recently_used.rb +1 -1
- data/lib/arachni/support/cache/preference.rb +1 -1
- data/lib/arachni/support/cache/random_replacement.rb +1 -1
- data/lib/arachni/support/cache.rb +1 -1
- data/lib/arachni/support/crypto/rsa_aes_cbc.rb +1 -1
- data/lib/arachni/support/crypto.rb +1 -1
- data/lib/arachni/support/database/base.rb +16 -10
- data/lib/arachni/support/database/hash.rb +1 -1
- data/lib/arachni/support/database/queue.rb +1 -1
- data/lib/arachni/support/database.rb +1 -1
- data/lib/arachni/support/glob.rb +1 -1
- data/lib/arachni/support/lookup/base.rb +1 -1
- data/lib/arachni/support/lookup/hash_set.rb +1 -1
- data/lib/arachni/support/lookup/moolb.rb +1 -1
- data/lib/arachni/support/lookup.rb +1 -1
- data/lib/arachni/support/mixins/observable.rb +1 -1
- data/lib/arachni/support/mixins/terminal.rb +1 -1
- data/lib/arachni/support/mixins.rb +1 -1
- data/lib/arachni/support/profiler.rb +1 -1
- data/lib/arachni/support/signature.rb +1 -1
- data/lib/arachni/support.rb +1 -1
- data/lib/arachni/trainer.rb +1 -1
- data/lib/arachni/ui/foo/output.rb +1 -1
- data/lib/arachni/uri/scope.rb +1 -1
- data/lib/arachni/uri.rb +6 -9
- data/lib/arachni/utilities.rb +1 -1
- data/lib/arachni/version.rb +1 -1
- data/lib/arachni.rb +1 -7
- data/lib/version +1 -1
- data/spec/arachni/browser/javascript/dom_monitor_spec.rb +81 -77
- data/spec/arachni/browser/javascript/proxy_spec.rb +0 -10
- data/spec/arachni/browser/javascript/taint_tracer_spec.rb +68 -90
- data/spec/arachni/browser/javascript_spec.rb +10 -16
- data/spec/arachni/browser_cluster/worker_spec.rb +23 -55
- data/spec/arachni/browser_spec.rb +160 -158
- data/spec/arachni/check/auditor_spec.rb +44 -165
- data/spec/arachni/data/framework/rpc_spec.rb +1 -1
- data/spec/arachni/data/framework_spec.rb +1 -1
- data/spec/arachni/element/cookie_spec.rb +1 -1
- data/spec/arachni/element/nested_cookie_spec.rb +687 -0
- data/spec/arachni/element/ui_form_spec.rb +2 -2
- data/spec/arachni/element/ui_input_spec.rb +1 -1
- data/spec/arachni/http/client_spec.rb +14 -26
- data/spec/arachni/http/cookie_jar_spec.rb +2 -2
- data/spec/arachni/http/proxy_server_spec.rb +2 -0
- data/spec/arachni/http/request_spec.rb +3 -2
- data/spec/arachni/issue_spec.rb +1 -1
- data/spec/arachni/option_groups/browser_cluster_spec.rb +17 -0
- data/spec/arachni/option_groups/http_spec.rb +6 -6
- data/spec/arachni/option_groups/paths_spec.rb +23 -1
- data/spec/arachni/option_groups/scope_spec.rb +1 -6
- data/spec/arachni/page_spec.rb +3 -2
- data/spec/arachni/parser_spec.rb +45 -1
- data/spec/arachni/platform/list_spec.rb +1 -2
- data/spec/arachni/reporter/options_spec.rb +0 -14
- data/spec/arachni/rest/server_spec.rb +39 -2
- data/spec/arachni/snapshot_spec.rb +1 -1
- data/spec/arachni/state/framework_spec.rb +2 -2
- data/spec/arachni/uri_spec.rb +1 -1
- data/spec/components/checks/active/code_injection_spec.rb +12 -7
- data/spec/components/checks/active/code_injection_timing_spec.rb +4 -3
- data/spec/components/checks/active/file_inclusion_spec.rb +15 -10
- data/spec/components/checks/active/ldap_injection_spec.rb +5 -4
- data/spec/components/checks/active/no_sql_injection_differential_spec.rb +1 -1
- data/spec/components/checks/active/no_sql_injection_spec.rb +5 -4
- data/spec/components/checks/active/os_cmd_injection_spec.rb +6 -4
- data/spec/components/checks/active/os_cmd_injection_timing_spec.rb +4 -3
- data/spec/components/checks/active/path_traversal_spec.rb +10 -7
- data/spec/components/checks/active/response_splitting_spec.rb +5 -4
- data/spec/components/checks/active/rfi_spec.rb +9 -8
- data/spec/components/checks/active/source_code_disclosure_spec.rb +33 -10
- data/spec/components/checks/active/sql_injection_differential_spec.rb +1 -1
- data/spec/components/checks/active/sql_injection_spec.rb +53 -36
- data/spec/components/checks/active/sql_injection_timing_spec.rb +11 -8
- data/spec/components/checks/active/unvalidated_redirect_spec.rb +9 -8
- data/spec/components/checks/active/xpath_injection_spec.rb +5 -4
- data/spec/components/checks/active/xss_dom_script_context_spec.rb +5 -5
- data/spec/components/checks/active/xss_event_spec.rb +5 -3
- data/spec/components/checks/active/xss_script_context_spec.rb +4 -3
- data/spec/components/checks/active/xss_spec.rb +5 -4
- data/spec/components/checks/active/xss_tag_spec.rb +11 -3
- data/spec/components/checks/passive/backup_files_spec.rb +0 -4
- data/spec/components/checks/passive/grep/x_frame_options_spec.rb +6 -0
- data/spec/spec_helper.rb +2 -1
- data/spec/support/factories/http/response.rb +1 -1
- data/spec/support/factories/issue.rb +1 -2
- data/spec/support/fixtures/check_with_invalid_platforms/with_invalid_platforms.rb +1 -1
- data/spec/support/fixtures/checks/test.rb +4 -4
- data/spec/support/fixtures/checks/test2.rb +1 -1
- data/spec/support/fixtures/checks/test3.rb +1 -1
- data/spec/support/fixtures/cookies.txt +1 -1
- data/spec/support/fixtures/executables/node.rb +2 -3
- data/spec/support/fixtures/fingerprinters/test.rb +1 -1
- data/spec/support/fixtures/nested_cookies.txt +11 -0
- data/spec/support/fixtures/plugins/bad.rb +1 -1
- data/spec/support/fixtures/plugins/defaults/default.rb +1 -1
- data/spec/support/fixtures/plugins/distributable.rb +1 -1
- data/spec/support/fixtures/plugins/loop.rb +1 -1
- data/spec/support/fixtures/plugins/suspendable.rb +1 -1
- data/spec/support/fixtures/plugins/wait.rb +1 -1
- data/spec/support/fixtures/plugins/with_options.rb +1 -1
- data/spec/support/fixtures/plugins_with_priorities/p0.rb +1 -1
- data/spec/support/fixtures/plugins_with_priorities/p00.rb +1 -1
- data/spec/support/fixtures/plugins_with_priorities/p1.rb +1 -1
- data/spec/support/fixtures/plugins_with_priorities/p2.rb +1 -1
- data/spec/support/fixtures/plugins_with_priorities/p22.rb +1 -1
- data/spec/support/fixtures/plugins_with_priorities/p222.rb +1 -1
- data/spec/support/fixtures/plugins_with_priorities/p_nil.rb +1 -1
- data/spec/support/fixtures/plugins_with_priorities/p_nil2.rb +1 -1
- data/spec/support/fixtures/report.afr +0 -0
- data/spec/support/fixtures/reporters/base_spec/plugin_formatters/with_formatters/foobar.rb +1 -1
- data/spec/support/fixtures/reporters/base_spec/with_formatters.rb +1 -1
- data/spec/support/fixtures/reporters/base_spec/with_outfile.rb +1 -1
- data/spec/support/fixtures/reporters/base_spec/without_outfile.rb +1 -1
- data/spec/support/fixtures/reporters/manager_spec/afr.rb +1 -1
- data/spec/support/fixtures/reporters/manager_spec/error.rb +1 -1
- data/spec/support/fixtures/reporters/manager_spec/foo.rb +1 -1
- data/spec/support/fixtures/run_check/body.rb +1 -1
- data/spec/support/fixtures/run_check/cookies.rb +1 -1
- data/spec/support/fixtures/run_check/empty.rb +1 -1
- data/spec/support/fixtures/run_check/flch.rb +1 -1
- data/spec/support/fixtures/run_check/forms.rb +1 -1
- data/spec/support/fixtures/run_check/headers.rb +1 -1
- data/spec/support/fixtures/run_check/links.rb +1 -1
- data/spec/support/fixtures/run_check/nil.rb +1 -1
- data/spec/support/fixtures/run_check/path.rb +1 -1
- data/spec/support/fixtures/run_check/server.rb +1 -1
- data/spec/support/fixtures/signature_check/signature.rb +1 -1
- data/spec/support/fixtures/wait_check/wait.rb +1 -1
- data/spec/support/helpers/framework.rb +1 -1
- data/spec/support/helpers/misc.rb +1 -1
- data/spec/support/helpers/paths.rb +1 -1
- data/spec/support/helpers/requires.rb +1 -1
- data/spec/support/helpers/resets.rb +1 -1
- data/spec/support/helpers/web_server.rb +1 -1
- data/spec/support/lib/factory.rb +1 -1
- data/spec/support/lib/web_server_client.rb +1 -1
- data/spec/support/lib/web_server_dispatcher.rb +1 -1
- data/spec/support/lib/web_server_manager.rb +1 -1
- data/spec/support/servers/arachni/check/auditor.rb +1 -0
- data/spec/support/servers/arachni/element/form/form_dom.rb +1 -0
- data/spec/support/servers/arachni/element/form.rb +4 -4
- data/spec/support/servers/arachni/element/header.rb +1 -1
- data/spec/support/servers/arachni/element/nested_cookie.rb +84 -0
- data/spec/support/servers/arachni/parser.rb +6 -0
- data/spec/support/servers/checks/active/code_injection.rb +18 -0
- data/spec/support/servers/checks/active/code_injection_timing.rb +18 -0
- data/spec/support/servers/checks/active/file_inclusion.rb +19 -1
- data/spec/support/servers/checks/active/ldap_injection.rb +18 -0
- data/spec/support/servers/checks/active/no_sql_injection.rb +27 -0
- data/spec/support/servers/checks/active/no_sql_injection_differential.rb +19 -0
- data/spec/support/servers/checks/active/os_cmd_injection.rb +29 -0
- data/spec/support/servers/checks/active/os_cmd_injection_timing.rb +18 -1
- data/spec/support/servers/checks/active/path_traversal.rb +30 -3
- data/spec/support/servers/checks/active/response_splitting.rb +30 -1
- data/spec/support/servers/checks/active/rfi.rb +30 -2
- data/spec/support/servers/checks/active/session_fixation.rb +1 -3
- data/spec/support/servers/checks/active/source_code_disclosure.rb +16 -0
- data/spec/support/servers/checks/active/sql_injection.rb +27 -0
- data/spec/support/servers/checks/active/sql_injection_differential.rb +19 -0
- data/spec/support/servers/checks/active/sql_injection_timing.rb +19 -1
- data/spec/support/servers/checks/active/unvalidated_redirect.rb +40 -1
- data/spec/support/servers/checks/active/xpath_injection.rb +27 -0
- data/spec/support/servers/checks/active/xss.rb +40 -0
- data/spec/support/servers/checks/active/xss_event.rb +22 -1
- data/spec/support/servers/checks/active/xss_script_context.rb +18 -0
- data/spec/support/servers/checks/active/xss_tag.rb +40 -0
- data/spec/support/servers/checks/passive/grep/x_frame_options.rb +5 -0
- data/spec/support/shared/check.rb +1 -0
- data/spec/support/shared/element/capabilities/auditable/buffered.rb +2 -2
- data/spec/support/shared/element/capabilities/auditable/line_buffered.rb +2 -2
- data/spec/support/shared/element/capabilities/auditable.rb +2 -2
- data/ui/cli/framework/option_parser.rb +44 -8
- data/ui/cli/framework.rb +6 -5
- data/ui/cli/option_parser.rb +1 -1
- data/ui/cli/output.rb +1 -1
- data/ui/cli/reporter/option_parser.rb +1 -1
- data/ui/cli/reporter.rb +1 -1
- data/ui/cli/reproduce/option_parser.rb +1 -1
- data/ui/cli/reproduce.rb +1 -1
- data/ui/cli/rest/server/option_parser.rb +1 -1
- data/ui/cli/rest/server.rb +1 -1
- data/ui/cli/restored_framework/option_parser.rb +1 -1
- data/ui/cli/restored_framework.rb +1 -1
- data/ui/cli/rpc/client/dispatcher_monitor/option_parser.rb +1 -1
- data/ui/cli/rpc/client/dispatcher_monitor.rb +1 -1
- data/ui/cli/rpc/client/instance.rb +7 -4
- data/ui/cli/rpc/client/local/option_parser.rb +1 -1
- data/ui/cli/rpc/client/local.rb +1 -1
- data/ui/cli/rpc/client/remote/option_parser.rb +1 -1
- data/ui/cli/rpc/client/remote.rb +1 -1
- data/ui/cli/rpc/server/dispatcher/option_parser.rb +1 -1
- data/ui/cli/rpc/server/dispatcher.rb +1 -1
- data/ui/cli/utilities.rb +1 -1
- metadata +602 -707
- data/logs/error-11897.log +0 -2006
- data/logs/error-3855.log +0 -382
- data/spec/support/logs/Dispatcher - 1024-31864.log +0 -10
- data/spec/support/logs/Dispatcher - 1047-41465.log +0 -10
- data/spec/support/logs/Dispatcher - 1274-60799.log +0 -64
- data/spec/support/logs/Dispatcher - 1295-1058.log +0 -44
- data/spec/support/logs/Dispatcher - 1313-27076.log +0 -40
- data/spec/support/logs/Dispatcher - 1332-17127.log +0 -35
- data/spec/support/logs/Dispatcher - 1350-7351.log +0 -29
- data/spec/support/logs/Dispatcher - 1368-38528.log +0 -22
- data/spec/support/logs/Dispatcher - 1386-17419.log +0 -14
- data/spec/support/logs/Dispatcher - 31030-26156.log +0 -10
- data/spec/support/logs/Dispatcher - 321-27189.log +0 -12
- data/spec/support/logs/Dispatcher - 32353-50061.log +0 -20
- data/spec/support/logs/Dispatcher - 32450-61574.log +0 -10
- data/spec/support/logs/Dispatcher - 32470-53874.log +0 -20
- data/spec/support/logs/Dispatcher - 32491-10523.log +0 -18
- data/spec/support/logs/Dispatcher - 32509-8583.log +0 -14
- data/spec/support/logs/Dispatcher - 32536-21209.log +0 -10
- data/spec/support/logs/Dispatcher - 32556-53881.log +0 -10
- data/spec/support/logs/Dispatcher - 32579-49083.log +0 -50
- data/spec/support/logs/Dispatcher - 32761-20025.log +0 -12
- data/spec/support/logs/Dispatcher - 347-17512.log +0 -12
- data/spec/support/logs/Dispatcher - 3489-43230.log +0 -24
- data/spec/support/logs/Dispatcher - 3524-57459.log +0 -26
- data/spec/support/logs/Dispatcher - 3559-21544.log +0 -20
- data/spec/support/logs/Dispatcher - 3764-33844.log +0 -25
- data/spec/support/logs/Dispatcher - 3798-45350.log +0 -26
- data/spec/support/logs/Dispatcher - 382-15725.log +0 -12
- data/spec/support/logs/Dispatcher - 3836-6205.log +0 -21
- data/spec/support/logs/Dispatcher - 4112-45433.log +0 -22
- data/spec/support/logs/Dispatcher - 4148-53510.log +0 -26
- data/spec/support/logs/Dispatcher - 415-29873.log +0 -14
- data/spec/support/logs/Dispatcher - 4185-29736.log +0 -18
- data/spec/support/logs/Dispatcher - 4268-60912.log +0 -25
- data/spec/support/logs/Dispatcher - 4303-39372.log +0 -26
- data/spec/support/logs/Dispatcher - 4342-42190.log +0 -21
- data/spec/support/logs/Dispatcher - 463-55220.log +0 -26
- data/spec/support/logs/Dispatcher - 4649-12104.log +0 -22
- data/spec/support/logs/Dispatcher - 4683-32355.log +0 -26
- data/spec/support/logs/Dispatcher - 4724-41636.log +0 -18
- data/spec/support/logs/Dispatcher - 4881-57692.log +0 -22
- data/spec/support/logs/Dispatcher - 4961-64665.log +0 -26
- data/spec/support/logs/Dispatcher - 502-8742.log +0 -25
- data/spec/support/logs/Dispatcher - 5052-61726.log +0 -18
- data/spec/support/logs/Dispatcher - 536-15972.log +0 -22
- data/spec/support/logs/Dispatcher - 620-2220.log +0 -20
- data/spec/support/logs/Dispatcher - 638-17826.log +0 -18
- data/spec/support/logs/Dispatcher - 656-23967.log +0 -16
- data/spec/support/logs/Dispatcher - 700-15701.log +0 -12
- data/spec/support/logs/Dispatcher - 726-6080.log +0 -10
- data/spec/support/logs/Dispatcher - 749-56590.log +0 -18
- data/spec/support/logs/Dispatcher - 807-19073.log +0 -18
- data/spec/support/logs/Dispatcher - 871-8764.log +0 -10
- data/spec/support/logs/Dispatcher - 898-21496.log +0 -12
- data/spec/support/logs/Dispatcher - 933-64070.log +0 -12
- data/spec/support/logs/Instance - 1577-32284.error.log +0 -151
- data/spec/support/logs/Instance - 1625-58174.error.log +0 -154
- data/spec/support/logs/Instance - 2727-57968.error.log +0 -151
- data/spec/support/logs/Instance - 2898-20648.error.log +0 -303
- data/spec/support/logs/Instance - 2901-30845.error.log +0 -429
- data/spec/support/logs/Instance - 31185-37600.error.log +0 -174
- data/spec/support/logs/Instance - 3319-20111.error.log +0 -175
- data/spec/support/logs/error-3855.log +0 -5132
@@ -0,0 +1,370 @@
|
|
1
|
+
=begin
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
|
+
|
4
|
+
This file is part of the Arachni Framework project and is subject to
|
5
|
+
redistribution and commercial restrictions. Please see the Arachni Framework
|
6
|
+
web site for more information on licensing and terms of use.
|
7
|
+
=end
|
8
|
+
|
9
|
+
require_relative 'cookie'
|
10
|
+
|
11
|
+
module Arachni::Element
|
12
|
+
|
13
|
+
# @author Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
|
14
|
+
class NestedCookie < Base
|
15
|
+
|
16
|
+
# Load and include all cookie-specific capability overrides.
|
17
|
+
lib = "#{File.dirname( __FILE__ )}/#{File.basename(__FILE__, '.rb')}/capabilities/**/*.rb"
|
18
|
+
Dir.glob( lib ).each { |f| require f }
|
19
|
+
|
20
|
+
include Arachni::Element::Capabilities::Inputtable
|
21
|
+
include Arachni::Element::Capabilities::Mutable
|
22
|
+
include Arachni::Element::Capabilities::Auditable
|
23
|
+
include Arachni::Element::Capabilities::Auditable::Buffered
|
24
|
+
include Arachni::Element::Capabilities::Auditable::LineBuffered
|
25
|
+
include Arachni::Element::Capabilities::Analyzable
|
26
|
+
include Arachni::Element::Capabilities::WithSource
|
27
|
+
|
28
|
+
include Capabilities::Submittable
|
29
|
+
|
30
|
+
# Default cookie values
|
31
|
+
DEFAULT = Cookie::DEFAULT
|
32
|
+
|
33
|
+
attr_reader :data
|
34
|
+
|
35
|
+
# @param [Hash] options
|
36
|
+
# For options see {DEFAULT}, with the following extras:
|
37
|
+
# @option options [String] :url
|
38
|
+
# URL of the page which created the cookie -- **required**.
|
39
|
+
# @option options [String] :action
|
40
|
+
# URL of the page to submit the cookie -- defaults to `:url`.
|
41
|
+
# @option options [Hash] :inputs
|
42
|
+
# Allows you to pass cookie data as a `name => value` pair instead of the
|
43
|
+
# more complex {DEFAULT} structure.
|
44
|
+
def initialize( options )
|
45
|
+
@data = {}
|
46
|
+
super( options )
|
47
|
+
|
48
|
+
if options[:name] && options[:value]
|
49
|
+
options[:name] = options[:name].to_s.recode
|
50
|
+
options[:value] = options[:value].to_s.recode
|
51
|
+
|
52
|
+
self.inputs = self.class.parse_inputs( options[:value] )
|
53
|
+
@data.merge!( options )
|
54
|
+
else
|
55
|
+
self.inputs = (options[:inputs] || {}).dup
|
56
|
+
end
|
57
|
+
|
58
|
+
@data.merge!( DEFAULT.merge( @data ) )
|
59
|
+
@data[:value] = decode( @data[:value].to_s ) rescue @data[:value].to_s
|
60
|
+
|
61
|
+
parsed_uri = uri_parse( action )
|
62
|
+
if !@data[:path]
|
63
|
+
path = parsed_uri.path
|
64
|
+
path = !path.empty? ? path : '/'
|
65
|
+
@data[:path] = path
|
66
|
+
end
|
67
|
+
|
68
|
+
if @data[:expires] && !@data[:expires].is_a?( Time )
|
69
|
+
@data[:expires] = Time.parse( @data[:expires].to_s ) rescue nil
|
70
|
+
end
|
71
|
+
|
72
|
+
@data[:domain] ||= parsed_uri.host
|
73
|
+
|
74
|
+
@default_inputs = self.inputs.dup.freeze
|
75
|
+
end
|
76
|
+
|
77
|
+
# Indicates whether the cookie must be only sent over an encrypted channel.
|
78
|
+
#
|
79
|
+
# @return [Bool]
|
80
|
+
def secure?
|
81
|
+
@data[:secure] == true
|
82
|
+
end
|
83
|
+
|
84
|
+
# Indicates whether the cookie is safe from modification from client-side code.
|
85
|
+
#
|
86
|
+
# @return [Bool]
|
87
|
+
def http_only?
|
88
|
+
@data[:httponly] == true
|
89
|
+
end
|
90
|
+
|
91
|
+
# Indicates whether the cookie is to be discarded at the end of the session.
|
92
|
+
#
|
93
|
+
# Doesn't play a role during the scan but it can provide useful info to checks and such.
|
94
|
+
#
|
95
|
+
# @return [Bool]
|
96
|
+
def session?
|
97
|
+
@data[:expires].nil?
|
98
|
+
end
|
99
|
+
|
100
|
+
# @return [Time, NilClass]
|
101
|
+
# Expiration `Time` of the cookie or `nil` if it doesn't have one
|
102
|
+
# (i.e. is a session cookie).
|
103
|
+
def expires_at
|
104
|
+
@data[:expires]
|
105
|
+
end
|
106
|
+
|
107
|
+
# Indicates whether or not the cookie has expired.
|
108
|
+
#
|
109
|
+
# @param [Time] time
|
110
|
+
# To compare against.
|
111
|
+
#
|
112
|
+
# @return [Boolean]
|
113
|
+
def expired?( time = Time.now )
|
114
|
+
expires_at != nil && time > expires_at
|
115
|
+
end
|
116
|
+
|
117
|
+
# @return [Hash]
|
118
|
+
# Simple representation of the cookie as a hash -- with the cookie name as
|
119
|
+
# `key` and the cookie value as `value`.
|
120
|
+
def simple
|
121
|
+
self.inputs.dup
|
122
|
+
end
|
123
|
+
|
124
|
+
# Uses the method name as a key to cookie attributes in {DEFAULT}.
|
125
|
+
def method_missing( sym, *args, &block )
|
126
|
+
return @data[sym] if @data.include? sym
|
127
|
+
super( sym, *args, &block )
|
128
|
+
end
|
129
|
+
|
130
|
+
# Used by {#method_missing} to determine if it should process the call.
|
131
|
+
#
|
132
|
+
# @return [Bool]
|
133
|
+
#
|
134
|
+
def respond_to?( *args )
|
135
|
+
(@data && @data.include?( args.first )) || super
|
136
|
+
end
|
137
|
+
|
138
|
+
def value
|
139
|
+
self.inputs.map { |n, v| "#{encode( n )}=#{encode( v )}" }.join( '&' )
|
140
|
+
end
|
141
|
+
|
142
|
+
# @return [String]
|
143
|
+
# To be used in a `Cookie` HTTP request header.
|
144
|
+
def to_s
|
145
|
+
# Only do encoding if we're dealing with updated inputs, otherwise pass
|
146
|
+
# along the raw data as set in order to deal with server-side decoding
|
147
|
+
# quirks.
|
148
|
+
if updated? || !(raw_name || raw_value )
|
149
|
+
"#{encode( name )}=#{value}"
|
150
|
+
else
|
151
|
+
"#{raw_name}=#{raw_value}"
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
# @return [String]
|
156
|
+
# Converts self to a `Set-Cookie` string.
|
157
|
+
def to_set_cookie
|
158
|
+
set_cookie = "#{self.to_s}"
|
159
|
+
|
160
|
+
@data.each do |k, v|
|
161
|
+
next if !v || !Cookie.keep_for_set_cookie.include?( k )
|
162
|
+
|
163
|
+
set_cookie << "; #{k.capitalize}=#{v}"
|
164
|
+
end
|
165
|
+
|
166
|
+
set_cookie << '; Secure' if secure?
|
167
|
+
set_cookie << '; HttpOnly' if http_only?
|
168
|
+
|
169
|
+
# If we want to set a cookie for only the domain that responded to the
|
170
|
+
# request, Set-Cookie should not specify a domain.
|
171
|
+
#
|
172
|
+
# If we want the cookie to apply to all subdomains, we need to either
|
173
|
+
# specify a dot-prefixed domain or a domain, the browser client will
|
174
|
+
# prefix the dot anyways.
|
175
|
+
#
|
176
|
+
# http://stackoverflow.com/questions/1062963/how-do-browser-cookie-domains-work/1063760#1063760
|
177
|
+
set_cookie << "; Domain=#{domain}" if domain.start_with?( '.' )
|
178
|
+
|
179
|
+
set_cookie
|
180
|
+
end
|
181
|
+
|
182
|
+
# @see .encode
|
183
|
+
def encode( *args )
|
184
|
+
self.class.encode( *args )
|
185
|
+
end
|
186
|
+
|
187
|
+
# @see .decode
|
188
|
+
def decode( str )
|
189
|
+
self.class.decode( str )
|
190
|
+
end
|
191
|
+
|
192
|
+
def to_rpc_data
|
193
|
+
h = super
|
194
|
+
|
195
|
+
if h['initialization_options']['expires']
|
196
|
+
h['initialization_options']['expires'] =
|
197
|
+
h['initialization_options']['expires'].to_s
|
198
|
+
end
|
199
|
+
|
200
|
+
h['data'] = h['data'].my_stringify_keys(false)
|
201
|
+
if h['data']['expires']
|
202
|
+
h['data']['expires'] = h['data']['expires'].to_s
|
203
|
+
end
|
204
|
+
|
205
|
+
h
|
206
|
+
end
|
207
|
+
|
208
|
+
class <<self
|
209
|
+
|
210
|
+
def type
|
211
|
+
:nested_cookie
|
212
|
+
end
|
213
|
+
|
214
|
+
def from_rpc_data( data )
|
215
|
+
if data['initialization_options']['expires']
|
216
|
+
data['initialization_options']['expires'] =
|
217
|
+
Time.parse( data['initialization_options']['expires'] )
|
218
|
+
end
|
219
|
+
|
220
|
+
if data['data']['expires']
|
221
|
+
data['data']['expires'] = Time.parse( data['data']['expires'] )
|
222
|
+
end
|
223
|
+
|
224
|
+
data['data'] = data['data'].my_symbolize_keys(false)
|
225
|
+
|
226
|
+
super data
|
227
|
+
end
|
228
|
+
|
229
|
+
# Parses a Netscape Cookie-jar into an Array of {Cookie}.
|
230
|
+
#
|
231
|
+
# @param [String] url
|
232
|
+
# {HTTP::Request} URL.
|
233
|
+
# @param [String] filepath
|
234
|
+
# Netscape HTTP cookiejar file.
|
235
|
+
#
|
236
|
+
# @return [Array<NestedCookie>]
|
237
|
+
#
|
238
|
+
# @see http://curl.haxx.se/rfc/cookie_spec.html
|
239
|
+
def from_file( url, filepath )
|
240
|
+
from_cookies( Cookie.from_file( url, filepath ) )
|
241
|
+
end
|
242
|
+
|
243
|
+
# Extracts cookies from an HTTP {Arachni::HTTP::Response response}.
|
244
|
+
#
|
245
|
+
# @param [Arachni::HTTP::Response] response
|
246
|
+
#
|
247
|
+
# @return [Array<NestedCookie>]
|
248
|
+
#
|
249
|
+
# @see .from_parser
|
250
|
+
# @see .from_headers
|
251
|
+
def from_response( response )
|
252
|
+
from_parser( Arachni::Parser.new( response ) ) +
|
253
|
+
from_headers( response.url, response.headers )
|
254
|
+
end
|
255
|
+
|
256
|
+
# Extracts cookies from a document based on `Set-Cookie` `http-equiv`
|
257
|
+
# meta tags.
|
258
|
+
#
|
259
|
+
# @param [Arachni::Parser] parser
|
260
|
+
#
|
261
|
+
# @return [Array<NestedCookie>]
|
262
|
+
#
|
263
|
+
# @see .parse_set_cookie
|
264
|
+
def from_parser( parser )
|
265
|
+
from_cookies( Cookie.from_parser( parser ) )
|
266
|
+
end
|
267
|
+
|
268
|
+
def in_html?( html )
|
269
|
+
html =~ /set-cookie.*&/i
|
270
|
+
end
|
271
|
+
|
272
|
+
# Extracts cookies from the `Set-Cookie` HTTP response header field.
|
273
|
+
#
|
274
|
+
# @param [String] url
|
275
|
+
# {HTTP::Request} URL.
|
276
|
+
# @param [Hash] headers
|
277
|
+
#
|
278
|
+
# @return [Array<NestedCookie>]
|
279
|
+
#
|
280
|
+
# @see .forms_set_cookie
|
281
|
+
def from_headers( url, headers )
|
282
|
+
from_cookies( Cookie.from_headers( url, headers ) )
|
283
|
+
end
|
284
|
+
|
285
|
+
# Parses the `Set-Cookie` header value into cookie elements.
|
286
|
+
#
|
287
|
+
# @param [String] url
|
288
|
+
# {HTTP::Request} URL.
|
289
|
+
# @param [Hash] str
|
290
|
+
# `Set-Cookie` string
|
291
|
+
#
|
292
|
+
# @return [Array<NestedCookie>]
|
293
|
+
def from_set_cookie( url, str )
|
294
|
+
from_cookies( Cookie.from_set_cookie( url, str ) )
|
295
|
+
end
|
296
|
+
alias :parse_set_cookie :from_set_cookie
|
297
|
+
|
298
|
+
# Parses a string formatted for the `Cookie` HTTP request header field
|
299
|
+
# into cookie elements.
|
300
|
+
#
|
301
|
+
# @param [String] url
|
302
|
+
# {HTTP::Request} URL.
|
303
|
+
# @param [Hash] string
|
304
|
+
# `Cookie` string.
|
305
|
+
#
|
306
|
+
# @return [Array<NestedCookie>]
|
307
|
+
def from_string( url, string )
|
308
|
+
from_cookies( Cookie.from_string( url, string ) )
|
309
|
+
end
|
310
|
+
|
311
|
+
def from_cookies( cookies )
|
312
|
+
[cookies].flatten.compact.map do |cookie|
|
313
|
+
next if !cookie.value.include?( '=' )
|
314
|
+
|
315
|
+
inputs = parse_inputs( cookie.value )
|
316
|
+
next if inputs.empty?
|
317
|
+
|
318
|
+
new({
|
319
|
+
url: cookie.url,
|
320
|
+
action: cookie.action,
|
321
|
+
method: cookie.method,
|
322
|
+
inputs: inputs,
|
323
|
+
source: cookie.source
|
324
|
+
}.merge( cookie.data ))
|
325
|
+
end.compact
|
326
|
+
end
|
327
|
+
|
328
|
+
def parse_inputs( value )
|
329
|
+
value.to_s.split( '&' ).inject( {} ) do |h, pair|
|
330
|
+
name, value = pair.split( '=', 2 )
|
331
|
+
h[decode( name.to_s )] = decode( value.to_s )
|
332
|
+
h
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
336
|
+
# Encodes a {String}'s reserved characters in order to prepare it for
|
337
|
+
# the `Cookie` header field.
|
338
|
+
#
|
339
|
+
# @param [String] str
|
340
|
+
#
|
341
|
+
# @return [String]
|
342
|
+
def encode( str )
|
343
|
+
Cookie.encode( str )
|
344
|
+
end
|
345
|
+
|
346
|
+
# Decodes a {String} encoded for the `Cookie` header field.
|
347
|
+
#
|
348
|
+
# @param [String] str
|
349
|
+
#
|
350
|
+
# @return [String]
|
351
|
+
def decode( str )
|
352
|
+
Cookie.decode( str )
|
353
|
+
end
|
354
|
+
|
355
|
+
end
|
356
|
+
|
357
|
+
private
|
358
|
+
|
359
|
+
def http_request( opts = {}, &block )
|
360
|
+
opts[:cookies] = opts.delete( :parameters )
|
361
|
+
|
362
|
+
self.method == :get ?
|
363
|
+
http.get( self.action, opts, &block ) :
|
364
|
+
http.post( self.action, opts, &block )
|
365
|
+
end
|
366
|
+
|
367
|
+
end
|
368
|
+
end
|
369
|
+
|
370
|
+
Arachni::NestedCookie = Arachni::Element::NestedCookie
|
data/lib/arachni/element/path.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
data/lib/arachni/element/xml.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
data/lib/arachni/error.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
data/lib/arachni/ethon/easy.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -79,7 +79,7 @@ module Report
|
|
79
79
|
"Reporter '#{name}' cannot format the audit results as a String."
|
80
80
|
end
|
81
81
|
|
82
|
-
outfile = "#{
|
82
|
+
outfile = "#{Options.paths.tmpdir}/#{generate_token}"
|
83
83
|
@reporters.run( name, external_report, outfile: outfile )
|
84
84
|
|
85
85
|
IO.binread( outfile )
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
data/lib/arachni/framework.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
=begin
|
4
|
-
Copyright 2010-
|
4
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
5
5
|
|
6
6
|
This file is part of the Arachni Framework project and is subject to
|
7
7
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
data/lib/arachni/http/client.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -361,14 +361,16 @@ class Client
|
|
361
361
|
fail ArgumentError, 'URL cannot be empty.' if !url
|
362
362
|
|
363
363
|
options = options.dup
|
364
|
-
cookies = options.delete( :cookies )
|
365
|
-
raw_cookies = []
|
364
|
+
cookies = options.delete( :cookies ) || {}
|
365
|
+
raw_cookies = options.delete( :raw_cookies ) || []
|
366
|
+
raw_cookie_names = Set.new( raw_cookies.map(&:name) )
|
366
367
|
|
367
368
|
exception_jail false do
|
368
369
|
if !options.delete( :no_cookie_jar )
|
369
|
-
raw_cookies
|
370
|
+
raw_cookies |= begin
|
370
371
|
cookie_jar.for_url( url ).reject do |c|
|
371
|
-
cookies.include? c.name
|
372
|
+
cookies.include?( c.name ) ||
|
373
|
+
raw_cookie_names.include?( c.name )
|
372
374
|
end
|
373
375
|
rescue => e
|
374
376
|
print_error "Could not get cookies for URL '#{url}' from Cookiejar (#{e})."
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
data/lib/arachni/http/headers.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
data/lib/arachni/http/message.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright 2010-
|
2
|
+
Copyright 2010-2022 Ecsypno <http://www.ecsypno.com>
|
3
3
|
|
4
4
|
This file is part of the Arachni Framework project and is subject to
|
5
5
|
redistribution and commercial restrictions. Please see the Arachni Framework
|
@@ -73,7 +73,7 @@ class Message
|
|
73
73
|
|
74
74
|
def url=( url )
|
75
75
|
if @normalize_url || @normalize_url.nil?
|
76
|
-
@url = URI.
|
76
|
+
@url = URI.normalize( url ).to_s.freeze
|
77
77
|
else
|
78
78
|
@url = url.to_s.freeze
|
79
79
|
end
|