arachni 0.4.0.4 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ACKNOWLEDGMENTS.md +2 -2
- data/AUTHORS.md +1 -4
- data/CHANGELOG.md +102 -3
- data/CONTRIBUTORS.md +4 -1
- data/EXPLOITATION.md +6 -6
- data/Gemfile +3 -0
- data/HACKING.md +29 -10
- data/LICENSE.md +176 -339
- data/NOTICE +12 -0
- data/README.md +160 -119
- data/Rakefile +83 -45
- data/arachni.gemspec +124 -0
- data/bin/arachni +14 -8
- data/bin/arachni_console +52 -0
- data/bin/arachni_rpc +14 -8
- data/bin/arachni_rpcd +15 -9
- data/bin/arachni_rpcd_monitor +14 -8
- data/bin/arachni_script +41 -0
- data/bin/arachni_web +18 -19
- data/bin/arachni_web_autostart +17 -18
- data/external/metasploit/plugins/arachni.rb +7 -9
- data/external/metasploit/{LICENSE → plugins/arachni/LICENSE} +0 -0
- data/external/metasploit/{modules → plugins/arachni/modules}/exploits/unix/webapp/arachni_exec.rb +1 -1
- data/external/metasploit/{modules → plugins/arachni/modules}/exploits/unix/webapp/arachni_path_traversal.rb +2 -2
- data/external/metasploit/{modules → plugins/arachni/modules}/exploits/unix/webapp/arachni_php_eval.rb +1 -1
- data/external/metasploit/{modules → plugins/arachni/modules}/exploits/unix/webapp/arachni_php_include.rb +1 -1
- data/external/metasploit/{modules → plugins/arachni/modules}/exploits/unix/webapp/arachni_sqlmap.rb +2 -2
- data/external/scripts/LICENSE.tpl +174 -0
- data/external/scripts/README.md +95 -0
- data/external/scripts/README.tpl +30 -0
- data/external/scripts/build.sh +631 -0
- data/external/scripts/build_all.sh +29 -0
- data/external/scripts/build_and_package.sh +100 -0
- data/external/scripts/cross_build_and_package.sh +20 -0
- data/external/scripts/installer.sh.tpl +166 -0
- data/external/scripts/lib/readlink_f.sh +40 -0
- data/external/scripts/package.sh +134 -0
- data/external/scripts/push_nightlies.sh +125 -0
- data/extras/placeholder +0 -0
- data/gfx/README.md +18 -0
- data/gfx/compiled/banner.png +0 -0
- data/gfx/compiled/favicon.ico +0 -0
- data/gfx/compiled/icon.png +0 -0
- data/gfx/compiled/logo.png +0 -0
- data/gfx/compiled/spider.png +0 -0
- data/gfx/font/Beneath_the_Surface.ttf +0 -0
- data/gfx/font/bts_readme.txt +14 -0
- data/gfx/source/banner.svg +999 -0
- data/gfx/source/icon.svg +627 -0
- data/gfx/source/logo.svg +672 -0
- data/gfx/source/spider.png +0 -0
- data/gfx/source/spider.svg +277 -0
- data/lib/arachni.rb +30 -5
- data/lib/arachni/audit_store.rb +111 -143
- data/lib/arachni/banner.rb +37 -0
- data/lib/arachni/bloom_filter.rb +74 -0
- data/lib/arachni/cache.rb +21 -0
- data/lib/arachni/cache/base.rb +170 -0
- data/lib/arachni/cache/least_cost_replacement.rb +89 -0
- data/lib/arachni/cache/least_recently_used.rb +73 -0
- data/lib/arachni/cache/random_replacement.rb +52 -0
- data/lib/arachni/component/manager.rb +391 -0
- data/lib/arachni/component/options.rb +38 -0
- data/lib/arachni/component/options/address.rb +41 -0
- data/lib/arachni/component/options/base.rb +126 -0
- data/lib/arachni/component/options/bool.rb +55 -0
- data/lib/arachni/component/options/enum.rb +51 -0
- data/lib/arachni/component/options/float.rb +45 -0
- data/lib/arachni/component/options/int.rb +44 -0
- data/lib/arachni/component/options/path.rb +36 -0
- data/lib/arachni/component/options/port.rb +37 -0
- data/lib/arachni/component/options/string.rb +44 -0
- data/lib/arachni/component/options/url.rb +42 -0
- data/lib/arachni/crypto/rsa_aes_cbc.rb +14 -8
- data/lib/arachni/database.rb +4 -4
- data/lib/arachni/database/base.rb +14 -8
- data/lib/arachni/database/hash.rb +21 -12
- data/lib/arachni/database/queue.rb +15 -9
- data/lib/arachni/element/base.rb +147 -0
- data/lib/arachni/element/capabilities/auditable.rb +623 -0
- data/lib/arachni/element/capabilities/auditable/rdiff.rb +243 -0
- data/lib/arachni/element/capabilities/auditable/taint.rb +141 -0
- data/lib/arachni/element/capabilities/auditable/timeout.rb +330 -0
- data/lib/arachni/element/capabilities/body.rb +19 -0
- data/lib/arachni/element/capabilities/mutable.rb +286 -0
- data/lib/arachni/element/capabilities/path.rb +19 -0
- data/lib/arachni/element/capabilities/refreshable.rb +48 -0
- data/lib/arachni/element/capabilities/server.rb +19 -0
- data/lib/arachni/element/cookie.rb +1043 -0
- data/lib/arachni/element/form.rb +1364 -0
- data/lib/arachni/element/header.rb +87 -0
- data/lib/arachni/element/link.rb +227 -0
- data/lib/arachni/exceptions.rb +12 -34
- data/lib/arachni/framework.rb +345 -436
- data/lib/arachni/http.rb +445 -409
- data/lib/arachni/http/cookie_jar.rb +163 -0
- data/lib/arachni/issue.rb +102 -65
- data/lib/arachni/mixins/observable.rb +25 -28
- data/lib/arachni/mixins/progress_bar.rb +11 -5
- data/lib/arachni/mixins/terminal.rb +17 -11
- data/lib/arachni/module.rb +4 -4
- data/lib/arachni/module/auditor.rb +270 -793
- data/lib/arachni/module/base.rb +107 -101
- data/lib/arachni/module/element_db.rb +54 -59
- data/lib/arachni/module/key_filler.rb +35 -35
- data/lib/arachni/module/manager.rb +178 -68
- data/lib/arachni/module/output.rb +25 -30
- data/lib/arachni/module/trainer.rb +85 -156
- data/lib/arachni/module/utilities.rb +29 -138
- data/lib/arachni/options.rb +496 -162
- data/lib/arachni/page.rb +186 -0
- data/lib/arachni/parser.rb +392 -2
- data/lib/arachni/plugin.rb +4 -4
- data/lib/arachni/plugin/base.rb +113 -44
- data/lib/arachni/plugin/manager.rb +120 -54
- data/lib/arachni/report.rb +4 -4
- data/lib/arachni/report/base.rb +59 -44
- data/lib/arachni/report/manager.rb +33 -32
- data/lib/arachni/rpc/client.rb +2 -0
- data/lib/arachni/rpc/client/base.rb +31 -18
- data/lib/arachni/rpc/client/dispatcher.rb +24 -11
- data/lib/arachni/rpc/client/instance.rb +24 -11
- data/lib/arachni/rpc/server/base.rb +12 -9
- data/lib/arachni/rpc/server/dispatcher.rb +161 -164
- data/lib/arachni/rpc/server/dispatcher/handler.rb +164 -0
- data/lib/arachni/rpc/server/{node.rb → dispatcher/node.rb} +86 -104
- data/lib/arachni/rpc/server/distributor.rb +432 -0
- data/lib/arachni/rpc/server/framework.rb +266 -758
- data/lib/arachni/rpc/server/instance.rb +38 -53
- data/lib/arachni/rpc/server/module/manager.rb +17 -20
- data/lib/arachni/rpc/server/output.rb +73 -179
- data/lib/arachni/rpc/server/plugin/manager.rb +58 -24
- data/lib/arachni/ruby.rb +6 -4
- data/lib/arachni/ruby/array.rb +30 -9
- data/lib/arachni/ruby/enumerable.rb +29 -0
- data/lib/arachni/ruby/object.rb +47 -12
- data/lib/arachni/ruby/string.rb +69 -24
- data/lib/arachni/ruby/webrick.rb +31 -0
- data/lib/arachni/session.rb +279 -0
- data/lib/arachni/spider.rb +295 -149
- data/lib/arachni/typhoeus/hydra.rb +18 -4
- data/lib/arachni/typhoeus/request.rb +52 -65
- data/lib/arachni/typhoeus/response.rb +62 -22
- data/lib/arachni/typhoeus/utils.rb +25 -0
- data/lib/arachni/ui/cli/cli.rb +331 -298
- data/lib/arachni/ui/cli/output.rb +105 -77
- data/lib/arachni/ui/foo/output.rb +116 -0
- data/lib/arachni/ui/rpc/dispatcher_monitor.rb +5 -12
- data/lib/arachni/ui/rpc/rpc.rb +43 -48
- data/lib/arachni/ui/web/addon_manager.rb +18 -13
- data/lib/arachni/ui/web/addons/sample.rb +14 -8
- data/lib/arachni/ui/web/addons/scheduler.rb +14 -8
- data/lib/arachni/ui/web/addons/scheduler/views/index.erb +1 -1
- data/lib/arachni/ui/web/addons/scheduler/views/options.erb +0 -3
- data/lib/arachni/ui/web/dispatcher_manager.rb +14 -9
- data/lib/arachni/ui/web/instance_manager.rb +14 -8
- data/lib/arachni/ui/web/log.rb +14 -10
- data/lib/arachni/ui/web/output_stream.rb +11 -5
- data/lib/arachni/ui/web/report_manager.rb +14 -10
- data/lib/arachni/ui/web/scheduler.rb +16 -11
- data/lib/arachni/ui/web/server.rb +62 -56
- data/lib/arachni/ui/web/server/public/style.css +1 -1
- data/lib/arachni/ui/web/server/views/addon.erb +1 -1
- data/lib/arachni/ui/web/server/views/dispatchers.erb +3 -3
- data/lib/arachni/ui/web/server/views/dispatchers_edit.erb +2 -2
- data/lib/arachni/ui/web/server/views/error.erb +1 -1
- data/lib/arachni/ui/web/server/views/home.erb +2 -2
- data/lib/arachni/ui/web/server/views/instance.erb +6 -6
- data/lib/arachni/ui/web/server/views/layout.erb +4 -4
- data/lib/arachni/ui/web/server/views/settings.erb +13 -8
- data/lib/arachni/ui/web/server/views/welcome.erb +1 -1
- data/lib/arachni/ui/web/utilities.rb +24 -35
- data/lib/arachni/uri.rb +619 -0
- data/lib/arachni/utilities.rb +316 -0
- data/lib/arachni/version.rb +12 -6
- data/lib/version +1 -0
- data/modules/audit/code_injection.rb +64 -81
- data/modules/audit/code_injection_timing.rb +57 -75
- data/modules/audit/csrf.rb +87 -185
- data/modules/audit/ldapi.rb +42 -67
- data/modules/audit/os_cmd_injection.rb +53 -71
- data/modules/audit/os_cmd_injection/payloads.txt +1 -1
- data/modules/audit/os_cmd_injection_timing.rb +54 -75
- data/modules/audit/os_cmd_injection_timing/payloads.txt +1 -3
- data/modules/audit/path_traversal.rb +84 -110
- data/modules/audit/response_splitting.rb +41 -53
- data/modules/audit/rfi.rb +68 -76
- data/modules/audit/session_fixation.rb +86 -0
- data/modules/audit/sqli.rb +51 -77
- data/modules/audit/sqli/regexp_ids.txt +5 -19
- data/modules/audit/sqli/regexp_ignore.txt +2 -0
- data/modules/audit/sqli_blind_rdiff.rb +51 -62
- data/modules/audit/sqli_blind_timing.rb +53 -73
- data/modules/audit/trainer.rb +21 -58
- data/modules/audit/unvalidated_redirect.rb +41 -51
- data/modules/audit/xpath.rb +38 -69
- data/modules/audit/xpath/errors.txt +2 -3
- data/modules/audit/xss.rb +65 -69
- data/modules/audit/xss_event.rb +50 -69
- data/modules/audit/xss_path.rb +63 -89
- data/modules/audit/xss_script_tag.rb +53 -66
- data/modules/audit/xss_tag.rb +46 -65
- data/modules/audit/xss_uri.rb +22 -24
- data/modules/recon/allowed_methods.rb +46 -62
- data/modules/recon/backdoors.rb +39 -66
- data/modules/recon/backup_files.rb +49 -79
- data/modules/recon/common_directories.rb +39 -63
- data/modules/recon/common_directories/directories.txt +0 -5
- data/modules/recon/common_files.rb +34 -63
- data/modules/recon/directory_listing.rb +66 -116
- data/modules/recon/grep/captcha.rb +34 -41
- data/modules/recon/grep/credit_card.rb +57 -68
- data/modules/recon/grep/cvs_svn_users.rb +40 -50
- data/modules/recon/grep/emails.rb +34 -41
- data/modules/recon/grep/html_objects.rb +30 -33
- data/modules/recon/grep/http_only_cookies.rb +57 -0
- data/modules/recon/grep/insecure_cookies.rb +55 -0
- data/modules/recon/grep/mixed_resource.rb +93 -0
- data/modules/recon/grep/private_ip.rb +34 -32
- data/modules/recon/grep/ssn.rb +33 -31
- data/modules/recon/grep/unencrypted_password_forms.rb +84 -0
- data/modules/recon/htaccess_limit.rb +38 -54
- data/modules/recon/http_put.rb +48 -62
- data/modules/recon/interesting_responses.rb +77 -79
- data/modules/recon/webdav.rb +53 -79
- data/modules/recon/xst.rb +44 -63
- data/modules/test2.rb +46 -0
- data/path_extractors/anchors.rb +17 -15
- data/path_extractors/forms.rb +17 -15
- data/path_extractors/frames.rb +17 -18
- data/path_extractors/generic.rb +52 -55
- data/path_extractors/links.rb +16 -14
- data/path_extractors/meta_refresh.rb +33 -18
- data/path_extractors/scripts.rb +17 -15
- data/plugins/autologin.rb +60 -85
- data/plugins/beep_notify.rb +25 -27
- data/plugins/cookie_collector.rb +28 -45
- data/plugins/defaults/autothrottle.rb +43 -51
- data/plugins/defaults/content_types.rb +63 -52
- data/plugins/defaults/healthmap.rb +45 -62
- data/plugins/defaults/{metamodules → meta}/remedies/discovery.rb +34 -69
- data/plugins/defaults/meta/remedies/manual_verification.rb +61 -0
- data/plugins/defaults/meta/remedies/timing_attacks.rb +108 -0
- data/plugins/defaults/meta/uniformity.rb +81 -0
- data/plugins/defaults/profiler.rb +68 -115
- data/plugins/defaults/resolver.rb +33 -28
- data/plugins/email_notify.rb +60 -62
- data/plugins/form_dicattack.rb +67 -121
- data/plugins/http_dicattack.rb +51 -65
- data/plugins/libnotify.rb +37 -41
- data/plugins/proxy.rb +407 -152
- data/plugins/proxy/panel/403_forbidden.html.erb +11 -0
- data/plugins/proxy/panel/404_not_found.html.erb +6 -0
- data/plugins/proxy/panel/css/bootstrap.min.css +9 -0
- data/plugins/proxy/panel/css/panel.css +30 -0
- data/plugins/proxy/panel/help.html.erb +66 -0
- data/plugins/proxy/panel/img/glyphicons-halflings-white.png +0 -0
- data/plugins/proxy/panel/img/glyphicons-halflings.png +0 -0
- data/plugins/proxy/panel/img/record.png +0 -0
- data/plugins/proxy/panel/inspect.html.erb +7 -0
- data/plugins/proxy/panel/js/bootstrap.min.js +6 -0
- data/plugins/proxy/panel/js/jquery.min.js +2 -0
- data/plugins/proxy/panel/js/panel.js +39 -0
- data/plugins/proxy/panel/layout.html.erb +25 -0
- data/plugins/proxy/panel/page_accordion.html.erb +67 -0
- data/plugins/proxy/panel/page_twin_accordion.html.erb +18 -0
- data/plugins/proxy/panel/panel.html.erb +63 -0
- data/plugins/proxy/panel/shutdown_message.html.erb +7 -0
- data/plugins/proxy/panel/verify_login_check.html.erb +31 -0
- data/plugins/proxy/panel/verify_login_final.html.erb +26 -0
- data/plugins/proxy/panel/verify_login_sequence.html.erb +45 -0
- data/plugins/proxy/server.rb +175 -47
- data/plugins/proxy/ssl-interceptor-cert.pem +34 -0
- data/plugins/proxy/ssl-interceptor-pkey.pem +51 -0
- data/plugins/rescan.rb +27 -28
- data/plugins/script.rb +53 -0
- data/plugins/vector_feed.rb +226 -0
- data/plugins/waf_detector.rb +70 -73
- data/reports/afr.rb +23 -24
- data/reports/ap.rb +25 -36
- data/reports/html.rb +109 -163
- data/reports/html/default.erb +13 -12
- data/reports/html/default/configuration.erb +21 -21
- data/reports/html/default/css/main.css +350 -350
- data/reports/html/default/issues.erb +1 -1
- data/reports/html/default/js/charts.js +2 -2
- data/reports/html/default/js/helpers.js +0 -42
- data/reports/html/default/js/init.js +0 -1
- data/reports/html/default/sitemap.erb +2 -2
- data/reports/html/default/summary.erb +4 -4
- data/reports/html/default/summary_issue.erb +1 -1
- data/reports/json.rb +26 -28
- data/reports/marshal.rb +23 -25
- data/reports/metareport.rb +65 -98
- data/reports/plugin_formatters/html/autologin.rb +34 -41
- data/reports/plugin_formatters/html/content_types.rb +46 -52
- data/reports/plugin_formatters/html/cookie_collector.rb +41 -47
- data/reports/plugin_formatters/html/discovery.rb +36 -41
- data/reports/plugin_formatters/html/form_dicattack.rb +28 -34
- data/reports/plugin_formatters/html/healthmap.rb +48 -55
- data/reports/plugin_formatters/html/http_dicattack.rb +28 -34
- data/reports/plugin_formatters/html/profiler.rb +26 -30
- data/reports/plugin_formatters/html/profiler/template.erb +7 -7
- data/reports/plugin_formatters/html/resolver.rb +44 -52
- data/reports/plugin_formatters/html/timing_attacks.rb +42 -44
- data/reports/plugin_formatters/html/uniformity.rb +37 -42
- data/reports/plugin_formatters/html/waf_detector.rb +26 -34
- data/reports/plugin_formatters/stdout/autologin.rb +28 -40
- data/reports/plugin_formatters/stdout/content_types.rb +36 -53
- data/reports/plugin_formatters/stdout/cookie_collector.rb +28 -41
- data/reports/plugin_formatters/stdout/discovery.rb +27 -37
- data/reports/plugin_formatters/stdout/form_dicattack.rb +22 -35
- data/reports/plugin_formatters/stdout/healthmap.rb +40 -57
- data/reports/plugin_formatters/stdout/http_dicattack.rb +22 -36
- data/reports/plugin_formatters/stdout/profiler.rb +55 -74
- data/reports/plugin_formatters/stdout/resolver.rb +18 -34
- data/reports/plugin_formatters/stdout/timing_attacks.rb +27 -39
- data/reports/plugin_formatters/stdout/uniformity.rb +32 -44
- data/reports/plugin_formatters/stdout/waf_detector.rb +20 -32
- data/reports/plugin_formatters/xml/autologin.rb +27 -49
- data/reports/plugin_formatters/xml/content_types.rb +41 -66
- data/reports/plugin_formatters/xml/cookie_collector.rb +29 -49
- data/reports/plugin_formatters/xml/discovery.rb +23 -41
- data/reports/plugin_formatters/xml/form_dicattack.rb +22 -40
- data/reports/plugin_formatters/xml/healthmap.rb +44 -63
- data/reports/plugin_formatters/xml/http_dicattack.rb +22 -41
- data/reports/plugin_formatters/xml/profiler.rb +65 -89
- data/reports/plugin_formatters/xml/resolver.rb +21 -41
- data/reports/plugin_formatters/xml/timing_attacks.rb +27 -45
- data/reports/plugin_formatters/xml/uniformity.rb +36 -55
- data/reports/plugin_formatters/xml/waf_detector.rb +23 -42
- data/reports/stdout.rb +120 -121
- data/reports/txt.rb +29 -45
- data/reports/xml.rb +109 -148
- data/reports/xml/buffer.rb +66 -79
- data/reports/yaml.rb +26 -28
- data/rpcd_handlers/placeholder +0 -0
- data/spec/arachni/audit_store_spec.rb +223 -0
- data/spec/arachni/bloom_filter_spec.rb +76 -0
- data/spec/arachni/cache/base_spec.rb +275 -0
- data/spec/arachni/cache/least_cost_replacement_spec.rb +58 -0
- data/spec/arachni/cache/least_recently_used_spec.rb +91 -0
- data/spec/arachni/cache/random_replacement_spec.rb +43 -0
- data/spec/arachni/component/manager_spec.rb +448 -0
- data/spec/arachni/component/options/address_spec.rb +32 -0
- data/spec/arachni/component/options/base_spec.rb +105 -0
- data/spec/arachni/component/options/bool_spec.rb +67 -0
- data/spec/arachni/component/options/enum_spec.rb +51 -0
- data/spec/arachni/component/options/float_spec.rb +42 -0
- data/spec/arachni/component/options/int_spec.rb +46 -0
- data/spec/arachni/component/options/path_spec.rb +32 -0
- data/spec/arachni/component/options/port_spec.rb +38 -0
- data/spec/arachni/component/options/string_spec.rb +38 -0
- data/spec/arachni/component/options/url_spec.rb +36 -0
- data/spec/arachni/crypto/rsa_aes_cbc_spec.rb +31 -0
- data/spec/arachni/database/hash_spec.rb +217 -0
- data/spec/arachni/database/queue_spec.rb +52 -0
- data/spec/arachni/element/base_spec.rb +127 -0
- data/spec/arachni/element/body_spec.rb +9 -0
- data/spec/arachni/element/capabilities/auditable/rdiff_spec.rb +47 -0
- data/spec/arachni/element/capabilities/auditable/taint_spec.rb +110 -0
- data/spec/arachni/element/capabilities/auditable/timeout_spec.rb +107 -0
- data/spec/arachni/element/capabilities/mutable_spec.rb +261 -0
- data/spec/arachni/element/cookie_spec.rb +362 -0
- data/spec/arachni/element/form_spec.rb +668 -0
- data/spec/arachni/element/header_spec.rb +49 -0
- data/spec/arachni/element/link_spec.rb +220 -0
- data/spec/arachni/element/path_spec.rb +9 -0
- data/spec/arachni/element/server_spec.rb +9 -0
- data/spec/arachni/framework_spec.rb +860 -0
- data/spec/arachni/http/cookie_jar_spec.rb +267 -0
- data/spec/arachni/http_spec.rb +991 -0
- data/spec/arachni/issue_spec.rb +307 -0
- data/spec/arachni/mixins/observable_spec.rb +59 -0
- data/spec/arachni/mixins/progress_bar_spec.rb +41 -0
- data/spec/arachni/module/auditor_spec.rb +506 -0
- data/spec/arachni/module/element_db_spec.rb +131 -0
- data/spec/arachni/module/key_filler.rb +15 -0
- data/spec/arachni/module/manager_spec.rb +154 -0
- data/spec/arachni/module/trainer_spec.rb +102 -0
- data/spec/arachni/module/utilities_spec.rb +30 -0
- data/spec/arachni/module/utilities_spec/read_file.txt +3 -0
- data/spec/arachni/options_spec.rb +555 -0
- data/spec/arachni/page_spec.rb +290 -0
- data/spec/arachni/parser_spec.rb +508 -0
- data/spec/arachni/plugin/manager_spec.rb +174 -0
- data/spec/arachni/report/base_spec.rb +53 -0
- data/spec/arachni/report/manager_spec.rb +82 -0
- data/spec/arachni/rpc/client/base_spec.rb +157 -0
- data/spec/arachni/rpc/client/dispatcher_spec.rb +40 -0
- data/spec/arachni/rpc/client/instance_spec.rb +92 -0
- data/spec/arachni/rpc/server/base_spec.rb +40 -0
- data/spec/arachni/rpc/server/dispatcher/handler.rb +120 -0
- data/spec/arachni/rpc/server/dispatcher/node_spec.rb +220 -0
- data/spec/arachni/rpc/server/dispatcher_spec.rb +136 -0
- data/spec/arachni/rpc/server/distributor_spec.rb +628 -0
- data/spec/arachni/rpc/server/framework_hpg_spec.rb +321 -0
- data/spec/arachni/rpc/server/framework_simple_spec.rb +453 -0
- data/spec/arachni/rpc/server/instance_spec.rb +81 -0
- data/spec/arachni/rpc/server/modules/manager_spec.rb +79 -0
- data/spec/arachni/rpc/server/options_spec.rb +124 -0
- data/spec/arachni/rpc/server/output_spec.rb +238 -0
- data/spec/arachni/rpc/server/plugin/manager_spec.rb +86 -0
- data/spec/arachni/ruby/array_spec.rb +103 -0
- data/spec/arachni/ruby/enumerable_spec.rb +37 -0
- data/spec/arachni/ruby/object_spec.rb +38 -0
- data/spec/arachni/ruby/string_spec.rb +77 -0
- data/spec/arachni/ruby/webrick_spec.rb +15 -0
- data/spec/arachni/session_spec.rb +308 -0
- data/spec/arachni/spider_spec.rb +383 -0
- data/spec/arachni/typhoeus/hydra_spec.rb +14 -0
- data/spec/arachni/typhoeus/requrest_spec.rb +58 -0
- data/spec/arachni/typhoeus/response_spec.rb +78 -0
- data/spec/arachni/uri_spec.rb +462 -0
- data/spec/arachni/utilities_spec.rb +297 -0
- data/spec/fixtures/auditstore.afr +2959 -0
- data/spec/fixtures/cookies.txt +9 -0
- data/spec/fixtures/modules/test.rb +58 -0
- data/spec/fixtures/modules/test2.rb +46 -0
- data/spec/fixtures/modules/test3.rb +46 -0
- data/spec/fixtures/passwords.txt +17 -0
- data/spec/fixtures/plugins/bad.rb +46 -0
- data/spec/fixtures/plugins/defaults/default.rb +45 -0
- data/spec/fixtures/plugins/distributable.rb +42 -0
- data/spec/fixtures/plugins/loop.rb +32 -0
- data/spec/fixtures/plugins/wait.rb +34 -0
- data/spec/fixtures/plugins/with_options.rb +31 -0
- data/spec/fixtures/reports/base_spec/plugin_formatters/with_formatters/foobar.rb +21 -0
- data/spec/fixtures/reports/base_spec/with_formatters.rb +23 -0
- data/spec/fixtures/reports/base_spec/with_outfile.rb +24 -0
- data/spec/fixtures/reports/base_spec/without_outfile.rb +20 -0
- data/spec/fixtures/reports/manager_spec/afr.rb +21 -0
- data/spec/fixtures/reports/manager_spec/foo.rb +26 -0
- data/spec/fixtures/rescan.afr.tpl +145 -0
- data/spec/fixtures/rpcd_handlers/echo.rb +68 -0
- data/spec/fixtures/run_mod/body.rb +58 -0
- data/spec/fixtures/run_mod/cookies.rb +58 -0
- data/spec/fixtures/run_mod/empty.rb +58 -0
- data/spec/fixtures/run_mod/flch.rb +63 -0
- data/spec/fixtures/run_mod/forms.rb +58 -0
- data/spec/fixtures/run_mod/headers.rb +58 -0
- data/spec/fixtures/run_mod/links.rb +58 -0
- data/spec/fixtures/run_mod/nil.rb +57 -0
- data/spec/fixtures/run_mod/path.rb +58 -0
- data/spec/fixtures/run_mod/server.rb +58 -0
- data/spec/fixtures/script_plugin.rb +1 -0
- data/spec/fixtures/taint_module/taint.rb +48 -0
- data/spec/fixtures/usernames.txt +13 -0
- data/spec/fixtures/wait_module/wait.rb +48 -0
- data/spec/helpers/auditor.rb +9 -0
- data/spec/helpers/misc.rb +41 -0
- data/spec/helpers/processes.rb +112 -0
- data/spec/helpers/requires.rb +8 -0
- data/spec/helpers/server.rb +54 -0
- data/spec/logs/Dispatcher - 2752-13830.log +49 -0
- data/spec/logs/Dispatcher - 2766-8238.log +35 -0
- data/spec/logs/Dispatcher - 2808-9029.log +31 -0
- data/spec/logs/Dispatcher - 2854-8571.log +26 -0
- data/spec/logs/Dispatcher - 2888-10411.log +20 -0
- data/spec/logs/Dispatcher - 2922-14464.log +13 -0
- data/spec/logs/Dispatcher - 2957-15255.log +19 -0
- data/spec/logs/Dispatcher - 3216-14203.log +35 -0
- data/spec/logs/Dispatcher - 3305-8622.log +43 -0
- data/spec/logs/Dispatcher - 3340-15426.log +35 -0
- data/spec/logs/Dispatcher - 3399-12586.log +40 -0
- data/spec/logs/Dispatcher - 3433-14149.log +26 -0
- data/spec/logs/Dispatcher - 3582-6198.log +27 -0
- data/spec/logs/Dispatcher - 3616-11169.log +13 -0
- data/spec/logs/Dispatcher - 3849-9016.log +7 -0
- data/spec/logs/output_spec.log +4 -0
- data/spec/logs/placeholder +0 -0
- data/spec/modules/audit/code_injection_spec.rb +25 -0
- data/spec/modules/audit/code_injection_timing_spec.rb +24 -0
- data/spec/modules/audit/csrf_spec.rb +38 -0
- data/spec/modules/audit/ldapi_spec.rb +19 -0
- data/spec/modules/audit/os_cmd_injection_spec.rb +24 -0
- data/spec/modules/audit/os_cmd_injection_timing_spec.rb +24 -0
- data/spec/modules/audit/path_traversal_spec.rb +23 -0
- data/spec/modules/audit/response_splitting_spec.rb +19 -0
- data/spec/modules/audit/rfi_spec.rb +19 -0
- data/spec/modules/audit/session_fixation_spec.rb +23 -0
- data/spec/modules/audit/sqli_blind_rdiff_spec.rb +19 -0
- data/spec/modules/audit/sqli_blind_timing_spec.rb +23 -0
- data/spec/modules/audit/sqli_spec.rb +24 -0
- data/spec/modules/audit/trainer_spec.rb +25 -0
- data/spec/modules/audit/unvalidated_redirect_spec.rb +24 -0
- data/spec/modules/audit/xpath_spec.rb +25 -0
- data/spec/modules/audit/xss_event_spec.rb +19 -0
- data/spec/modules/audit/xss_path_spec.rb +19 -0
- data/spec/modules/audit/xss_script_tag_spec.rb +19 -0
- data/spec/modules/audit/xss_spec.rb +24 -0
- data/spec/modules/audit/xss_tag_spec.rb +19 -0
- data/spec/modules/recon/allowed_methods_spec.rb +19 -0
- data/spec/modules/recon/backdoors_spec.rb +19 -0
- data/spec/modules/recon/backup_files_spec.rb +19 -0
- data/spec/modules/recon/common_directories_spec.rb +19 -0
- data/spec/modules/recon/common_files_spec.rb +19 -0
- data/spec/modules/recon/directory_listing_spec.rb +19 -0
- data/spec/modules/recon/grep/captcha_spec.rb +19 -0
- data/spec/modules/recon/grep/credit_card_spec.rb +19 -0
- data/spec/modules/recon/grep/cvs_svn_users_spec.rb +19 -0
- data/spec/modules/recon/grep/emails_spec.rb +19 -0
- data/spec/modules/recon/grep/html_objects_spec.rb +19 -0
- data/spec/modules/recon/grep/http_only_cookies_spec.rb +19 -0
- data/spec/modules/recon/grep/insecure_cookies_spec.rb +19 -0
- data/spec/modules/recon/grep/mixed_resource_spec.rb +20 -0
- data/spec/modules/recon/grep/private_ip_spec.rb +26 -0
- data/spec/modules/recon/grep/ssn_spec.rb +19 -0
- data/spec/modules/recon/grep/unencrypted_password_forms_spec.rb +19 -0
- data/spec/modules/recon/htaccess_limit_spec.rb +19 -0
- data/spec/modules/recon/http_put_spec.rb +19 -0
- data/spec/modules/recon/interesting_responses_spec.rb +27 -0
- data/spec/modules/recon/webdav_spec.rb +19 -0
- data/spec/modules/recon/xst_spec.rb +19 -0
- data/spec/path_extractors/anchors_spec.rb +19 -0
- data/spec/path_extractors/forms_spec.rb +19 -0
- data/spec/path_extractors/frames_spec.rb +20 -0
- data/spec/path_extractors/generic_spec.rb +28 -0
- data/spec/path_extractors/links_spec.rb +19 -0
- data/spec/path_extractors/meta_refresh_spec.rb +24 -0
- data/spec/path_extractors/scripts_spec.rb +19 -0
- data/spec/pems/cacert.pem +39 -0
- data/spec/pems/client/cert.pem +39 -0
- data/spec/pems/client/foo-cert.pem +39 -0
- data/spec/pems/client/foo-key.pem +51 -0
- data/spec/pems/client/key.pem +51 -0
- data/spec/pems/server/cert.pem +39 -0
- data/spec/pems/server/key.pem +51 -0
- data/spec/plugins/autologin_spec.rb +76 -0
- data/spec/plugins/autothrottle_spec.rb +45 -0
- data/spec/plugins/content_types_spec.rb +93 -0
- data/spec/plugins/cookie_collector_spec.rb +32 -0
- data/spec/plugins/form_dicattack_spec.rb +60 -0
- data/spec/plugins/healthmap_spec.rb +40 -0
- data/spec/plugins/http_dicattack_spec.rb +40 -0
- data/spec/plugins/meta/remedies/discovery_spec.rb +15 -0
- data/spec/plugins/meta/remedies/manual_verification_spec.rb +28 -0
- data/spec/plugins/meta/remedies/timing_attacks_spec.rb +30 -0
- data/spec/plugins/meta/uniformity_spec.rb +83 -0
- data/spec/plugins/profiler_spec.rb +82 -0
- data/spec/plugins/rescan_spec.rb +26 -0
- data/spec/plugins/resolver_spec.rb +16 -0
- data/spec/plugins/script_spec.rb +12 -0
- data/spec/plugins/vector_feed_spec.rb +155 -0
- data/spec/plugins/waf_detector_spec.rb +41 -0
- data/spec/reports/afr_spec.rb +13 -0
- data/spec/reports/ap_spec.rb +9 -0
- data/spec/reports/html_spec.rb +13 -0
- data/spec/reports/json_spec.rb +17 -0
- data/spec/reports/marshal_spec.rb +13 -0
- data/spec/reports/stdout_spec.rb +9 -0
- data/spec/reports/txt_spec.rb +8 -0
- data/spec/reports/xml_spec.rb +13 -0
- data/spec/reports/yaml_spec.rb +13 -0
- data/spec/servers/arachni/element/capabilities/auditable/rdiff.rb +36 -0
- data/spec/servers/arachni/element/capabilities/auditable/taint.rb +10 -0
- data/spec/servers/arachni/element/capabilities/auditable/timeout.rb +30 -0
- data/spec/servers/arachni/element/cookie.rb +37 -0
- data/spec/servers/arachni/element/form.rb +93 -0
- data/spec/servers/arachni/element/header.rb +22 -0
- data/spec/servers/arachni/element/link.rb +26 -0
- data/spec/servers/arachni/framework.rb +54 -0
- data/spec/servers/arachni/http.rb +140 -0
- data/spec/servers/arachni/http_auth.rb +9 -0
- data/spec/servers/arachni/module/auditor.rb +135 -0
- data/spec/servers/arachni/module/trainer.rb +40 -0
- data/spec/servers/arachni/parser.rb +70 -0
- data/spec/servers/arachni/rpc/server/framework_hpg.rb +21 -0
- data/spec/servers/arachni/rpc/server/framework_simple.rb +30 -0
- data/spec/servers/arachni/session.rb +110 -0
- data/spec/servers/arachni/spider.rb +148 -0
- data/spec/servers/modules/audit/code_injection.rb +140 -0
- data/spec/servers/modules/audit/code_injection_timing.rb +110 -0
- data/spec/servers/modules/audit/csrf.rb +80 -0
- data/spec/servers/modules/audit/ldapi.rb +73 -0
- data/spec/servers/modules/audit/os_cmd_injection.rb +140 -0
- data/spec/servers/modules/audit/os_cmd_injection_timing.rb +111 -0
- data/spec/servers/modules/audit/path_traversal.rb +176 -0
- data/spec/servers/modules/audit/response_splitting.rb +114 -0
- data/spec/servers/modules/audit/rfi.rb +113 -0
- data/spec/servers/modules/audit/session_fixation.rb +87 -0
- data/spec/servers/modules/audit/sqli.rb +118 -0
- data/spec/servers/modules/audit/sqli/coldfusion +1 -0
- data/spec/servers/modules/audit/sqli/db2 +4 -0
- data/spec/servers/modules/audit/sqli/emc +2 -0
- data/spec/servers/modules/audit/sqli/informix +3 -0
- data/spec/servers/modules/audit/sqli/interbase +2 -0
- data/spec/servers/modules/audit/sqli/jdbc +0 -0
- data/spec/servers/modules/audit/sqli/mssql +26 -0
- data/spec/servers/modules/audit/sqli/mysql +13 -0
- data/spec/servers/modules/audit/sqli/oracle +6 -0
- data/spec/servers/modules/audit/sqli/postgresql +7 -0
- data/spec/servers/modules/audit/sqli/sqlite +4 -0
- data/spec/servers/modules/audit/sqli/sybase +0 -0
- data/spec/servers/modules/audit/sqli_blind_rdiff.rb +74 -0
- data/spec/servers/modules/audit/sqli_blind_timing.rb +121 -0
- data/spec/servers/modules/audit/trainer_module.rb +160 -0
- data/spec/servers/modules/audit/unvalidated_redirect.rb +115 -0
- data/spec/servers/modules/audit/xpath.rb +111 -0
- data/spec/servers/modules/audit/xpath/dotnet +5 -0
- data/spec/servers/modules/audit/xpath/general +13 -0
- data/spec/servers/modules/audit/xpath/java +3 -0
- data/spec/servers/modules/audit/xpath/libxml2 +2 -0
- data/spec/servers/modules/audit/xpath/php +2 -0
- data/spec/servers/modules/audit/xss.rb +152 -0
- data/spec/servers/modules/audit/xss_event.rb +80 -0
- data/spec/servers/modules/audit/xss_path.rb +44 -0
- data/spec/servers/modules/audit/xss_script_tag.rb +73 -0
- data/spec/servers/modules/audit/xss_tag.rb +139 -0
- data/spec/servers/modules/module_server.rb +14 -0
- data/spec/servers/modules/recon/allowed_methods.rb +5 -0
- data/spec/servers/modules/recon/backdoors.rb +4 -0
- data/spec/servers/modules/recon/backup_files.rb +28 -0
- data/spec/servers/modules/recon/common_directories.rb +6 -0
- data/spec/servers/modules/recon/common_files.rb +6 -0
- data/spec/servers/modules/recon/directory_listing.rb +30 -0
- data/spec/servers/modules/recon/grep/captcha.rb +27 -0
- data/spec/servers/modules/recon/grep/credit_card.rb +28 -0
- data/spec/servers/modules/recon/grep/cvs_svn_users.rb +23 -0
- data/spec/servers/modules/recon/grep/emails.rb +21 -0
- data/spec/servers/modules/recon/grep/html_objects.rb +7 -0
- data/spec/servers/modules/recon/grep/http_only_cookies.rb +21 -0
- data/spec/servers/modules/recon/grep/insecure_cookies.rb +21 -0
- data/spec/servers/modules/recon/grep/mixed_resource.rb +83 -0
- data/spec/servers/modules/recon/grep/private_ip.rb +18 -0
- data/spec/servers/modules/recon/grep/ssn.rb +5 -0
- data/spec/servers/modules/recon/grep/unencrypted_password_forms.rb +33 -0
- data/spec/servers/modules/recon/htaccess_limit.rb +8 -0
- data/spec/servers/modules/recon/http_put.rb +7 -0
- data/spec/servers/modules/recon/interesting_responses.rb +5 -0
- data/spec/servers/modules/recon/webdav.rb +25 -0
- data/spec/servers/modules/recon/xst.rb +6 -0
- data/spec/servers/plugins/autologin.rb +38 -0
- data/spec/servers/plugins/autothrottle.rb +8 -0
- data/spec/servers/plugins/content_types.rb +17 -0
- data/spec/servers/plugins/cookie_collector.rb +20 -0
- data/spec/servers/plugins/form_dicattack.rb +28 -0
- data/spec/servers/plugins/healthmap.rb +16 -0
- data/spec/servers/plugins/http_dicattack.rb +9 -0
- data/spec/servers/plugins/http_dicattack_secure.rb +9 -0
- data/spec/servers/plugins/http_dicattack_unprotected.rb +5 -0
- data/spec/servers/plugins/meta/remedies/discovery.rb +7 -0
- data/spec/servers/plugins/meta/remedies/timing_attacks.rb +29 -0
- data/spec/servers/plugins/profiler.rb +82 -0
- data/spec/servers/plugins/rescan.rb +31 -0
- data/spec/servers/plugins/waf_detector.rb +33 -0
- data/spec/shared/component.rb +43 -0
- data/spec/shared/element/capabilities/auditable.rb +729 -0
- data/spec/shared/element/capabilities/refreshable.rb +56 -0
- data/spec/shared/module.rb +162 -0
- data/spec/shared/path_extractor.rb +47 -0
- data/spec/shared/plugin.rb +50 -0
- data/spec/shared/reports.rb +47 -0
- data/spec/spec_helper.rb +53 -0
- metadata +870 -323
- data/extras/modules/recon/raft_dirs.rb +0 -108
- data/extras/modules/recon/raft_dirs/raft-large-directories.txt +0 -62290
- data/extras/modules/recon/raft_files.rb +0 -110
- data/extras/modules/recon/raft_files/raft-large-files.txt +0 -37037
- data/extras/modules/recon/svn_digger_dirs.rb +0 -108
- data/extras/modules/recon/svn_digger_dirs/Licence.txt +0 -674
- data/extras/modules/recon/svn_digger_dirs/ReadMe-Arachni.txt +0 -4
- data/extras/modules/recon/svn_digger_dirs/ReadMe.txt +0 -6
- data/extras/modules/recon/svn_digger_dirs/all-dirs.txt +0 -5960
- data/extras/modules/recon/svn_digger_files.rb +0 -114
- data/extras/modules/recon/svn_digger_files/Licence.txt +0 -674
- data/extras/modules/recon/svn_digger_files/ReadMe-Arachni.txt +0 -4
- data/extras/modules/recon/svn_digger_files/ReadMe.txt +0 -6
- data/extras/modules/recon/svn_digger_files/all-extensionless.txt +0 -25419
- data/extras/modules/recon/svn_digger_files/all.txt +0 -43135
- data/lib/arachni/component_manager.rb +0 -293
- data/lib/arachni/component_options.rb +0 -425
- data/lib/arachni/parser/auditable.rb +0 -606
- data/lib/arachni/parser/elements.rb +0 -315
- data/lib/arachni/parser/page.rb +0 -168
- data/lib/arachni/parser/parser.rb +0 -866
- data/lib/arachni/rpc/server/options.rb +0 -95
- data/lib/arachni/ui/web/addons/autodeploy.rb +0 -207
- data/lib/arachni/ui/web/addons/autodeploy/lib/manager.rb +0 -398
- data/lib/arachni/ui/web/addons/autodeploy/views/index.erb +0 -291
- data/modules/recon/mixed_resource.rb +0 -100
- data/modules/recon/unencrypted_password_forms.rb +0 -107
- data/path_extractors/sitemap.rb +0 -31
- data/plugins/defaults/metamodules/remedies/manual_verification.rb +0 -65
- data/plugins/defaults/metamodules/remedies/timing_attacks.rb +0 -134
- data/plugins/defaults/metamodules/uniformity.rb +0 -99
- data/reports/metareport/arachni_metareport.rb +0 -174
- data/reports/plugin_formatters/stdout/metamodules.rb +0 -82
data/ACKNOWLEDGMENTS.md
CHANGED
@@ -10,5 +10,5 @@ I’d like to thank:
|
|
10
10
|
|
11
11
|
for allowing me to test Arachni against their websites during the early stages of development.
|
12
12
|
|
13
|
-
All the people on [GitHub](http://github.com/
|
14
|
-
|
13
|
+
All the people on [GitHub](http://github.com/Arachni/arachni/issues)
|
14
|
+
who have submitted bugs and given constructive feedback.
|
data/AUTHORS.md
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,107 @@
|
|
1
1
|
# ChangeLog
|
2
2
|
|
3
|
-
## Version 0.4.
|
4
|
-
-
|
5
|
-
-
|
3
|
+
## Version 0.4.1 _(October 2, 2012)_
|
4
|
+
- License -- Moved from GPLv2 to Apache License Version 2.
|
5
|
+
- Major refactoring
|
6
|
+
- ```Arachni::Parser::Element::Auditable``` and ```Arachni::Module::Auditor```.
|
7
|
+
- Moved analysis techniques from ```Auditor``` to ```Auditable``` to enable per element audits and analysis
|
8
|
+
in order to increase audit granularity and ease scripting.
|
9
|
+
- ```Auditor``` methods now simply iterate over candidate elements and delegate analysis to them.
|
10
|
+
- Updated URL normalization methods and added caching to resource intensive parsing operations,
|
11
|
+
leading to overall improvements, especially during the initial crawling process. (**New**)
|
12
|
+
- Moved from Ruby's URI lib to ```Arachni::URI```. (**New**)
|
13
|
+
- Project-wide code clean-up, documentation and style improvements.
|
14
|
+
- Replaced ```Set``` with ```Arachni::BloomFilter```, where possible, to keep memory consumption to a minimum and speed up look-up comparisons.
|
15
|
+
- Namespace cleanup
|
16
|
+
- Moved ```Parser::Element``` classes directly under ```Arachni```;
|
17
|
+
- Moved ```Parser::Page``` class directly under ```Arachni```;
|
18
|
+
- Moved ```Auditable``` and ```Mutable``` under ```Element::Capabilities```;
|
19
|
+
- Added ```Element::Capabilities::Refreshable``` -- refreshes the input values of a link/form;
|
20
|
+
- Moved analysis techniques out of ```Analysis``` and directly under ```Element::Capabilities::Auditable```;
|
21
|
+
- Added constants for each element directly under the ```Arachni``` namespace to facilitate easy access ( like ```Arachni::Link```, ```Arachni::Form```, etc.)
|
22
|
+
- Framework - Can be configured to detect logouts and re-login between page audits. (**New**)
|
23
|
+
- Options
|
24
|
+
- Removed
|
25
|
+
- ```--http-harvest-last```
|
26
|
+
- Added
|
27
|
+
- ```--login-check-url``` -- A URL used to verify that the scanner is still logged in to the web application.
|
28
|
+
- ```--login-check-pattern``` -- A pattern used against the body of the 'login-check-url' to verify that the scanner is still logged in to the web application.
|
29
|
+
- ```--auto-redundant``` -- Ignores a specified amount of URLs with identical query parameter names.
|
30
|
+
- ```--fuzz-methods``` -- Audits links, forms and cookies using both ```GET``` and ```POST``` HTTP methods.
|
31
|
+
- ```--audit-cookies-extensively``` -- Submits all links and forms of the page along with the cookie permutations.
|
32
|
+
- ```--cookie-string``` -- Allows the specification of cookies as a string in the form of: ```name=value; name2=value2```
|
33
|
+
- ```--exclude-vectors``` -- Excludes vectors (parameters), by name, from the audit.
|
34
|
+
- ```--exclude-binaries``` -- Excludes pages with non text-based content-types from the audit.
|
35
|
+
- Dispatcher
|
36
|
+
- Added modularity by way of support for handler components whose API can be exposed over RPC (under ```rpcd_handlers/```).
|
37
|
+
- Modules - Every single one has been cleaned up and have had RSpec tests added.
|
38
|
+
- Scheduling - Expensive modules are now scheduled to be run after cheaper ones
|
39
|
+
of similar type and only audit elements missed by the cheaper ones.
|
40
|
+
- API
|
41
|
+
- Updated to provide access to running plugins.
|
42
|
+
- Updated remote file detection and logging helpers to improve performance and accuracy in case of custom 404s.
|
43
|
+
- Audit operations by default follow redirects.
|
44
|
+
- Issue de-duplication has been updated to be a lot more aggressive for
|
45
|
+
issues discovered by manipulating inputs, variations have been restricted to just 1.
|
46
|
+
- Unencrypted password forms -- Checks for non-nil form fields before iterating. [Issue #136]
|
47
|
+
- SSN -- Improved regexp and logging. [Issue #170]
|
48
|
+
- Insecure cookies -- Logs cookies without the 'secure' flag. (**New**)
|
49
|
+
- HttpOnly cookies -- Logs cookies without the 'HttpOnly' flag. (**New**)
|
50
|
+
- SQL injection -- Now ignores irrelevant error messages in order to reduce false-positives.
|
51
|
+
- XSS -- Improved detection accuracy.
|
52
|
+
- RFI -- Added a seed URL without a protocol.
|
53
|
+
- Path traversal -- Added seeds with file:// URLs and for Tomcat webapps.
|
54
|
+
- Added (**New**)
|
55
|
+
- Session fixation
|
56
|
+
- Lots of information updates for things such as remedy guidances and references. (Thanks to Samil Kumar)
|
57
|
+
- Plugins - Every single one has been cleaned up and have had RSpec tests added.
|
58
|
+
- AutoLogin
|
59
|
+
- Added a mandatory verifier regexp to make sure that the login was successful. (**New**)
|
60
|
+
- Now configures the ```Framework``` to be able to detect logouts and re-login during the audit. (**New**)
|
61
|
+
- Proxy
|
62
|
+
- Fixed typo in code which prevented headers from being properly forwarded which
|
63
|
+
resulted in non-existent content-types which prevented proper parsing. [Issue #135]
|
64
|
+
- Updated to use the framework HTTP interface instead of Net::HTTP
|
65
|
+
- Now injects a handy little control panel into each responce which allows recording of
|
66
|
+
login sequences and inspection of discovered pages/elements.
|
67
|
+
- VectorFeed -- Reads in vector data from which it creates elements to be audited.
|
68
|
+
Can be used to perform extremely specialized/narrow audits on a per vector/element basis.
|
69
|
+
Useful for unit-testing or a gazillion other things. (**New**)
|
70
|
+
- Script -- Loads and runs an external Ruby script under the scope of a plugin, used for debugging and general hackery. (**New**)
|
71
|
+
- Extras
|
72
|
+
- All modules under <tt>/extras</tt> had to be removed because they distributed GPLv3 licensed content.
|
73
|
+
- HTTP
|
74
|
+
- Improved detection of custom 404 pages.
|
75
|
+
- Now accepts a global timeout (```--http-timeout```) in milliseconds.
|
76
|
+
- Updated ```#add_on_queue``` hook (called by ```#queue```) which allows HTTP requests to be intercepted and modified before being fired.
|
77
|
+
- Fixed burst average requests/second calculation.
|
78
|
+
- Implemented a Cookiejar. (**New**)
|
79
|
+
- Removed tagging of requests with the system-wide seed.
|
80
|
+
- Added a maximum queue size limit -- once the request limit has been reached the queued requests will be fired in order to unload the queue.
|
81
|
+
- Added ```#sandbox``` -- isolates the given block from the rest of the HTTP env and executes it.
|
82
|
+
- Spider -- Re-written, much cleaner design and code. (**New**)
|
83
|
+
- Ignores path parameters to avoid infinite loops (like ```http://stuff.com/deep/path;jsessid=deadbeef```).
|
84
|
+
- Parser
|
85
|
+
- Removed clutter by moving parsing of elements into their respective classes (Form, Link, Cookie).
|
86
|
+
- Replaced sanitization hacks with Nokogiri's sanitization -- cleaner code, better performance.
|
87
|
+
- Form
|
88
|
+
- Nonce tokens are being automatically detected and refreshed before submission.
|
89
|
+
- WebUI
|
90
|
+
- Removed the AutoDeploy add-on -- no sense maintaining it since the WebUI is about to be scrapped (and no-one used it anyways).
|
91
|
+
- Tests
|
92
|
+
- Added full test suite using RSpec. (**New**)
|
93
|
+
- Added
|
94
|
+
- ```Arachni::Session``` - Session manager, handling session maintenance, login sequences, log-out detection etc.
|
95
|
+
- ```Arachni::URI``` class to handle URI parsing and normalization -- Uses Random Replacement caches to maintain low-latency.
|
96
|
+
- ```Arachni::BloomFilter``` class, a ```Hash```-based, lightweight Bloom-filter implementation requiring minimum storage space and providing fast look-ups.
|
97
|
+
- ```Arachni::Cache``` classes
|
98
|
+
- ```LeastCostReplacement``` -- Least Cost Replacement cache implementation.
|
99
|
+
- ```LeastRecentlyUsed``` -- Least Recently Used cache implementation.
|
100
|
+
- ```RandomReplacement``` -- Random Replacement cache implementation.
|
101
|
+
- Executables
|
102
|
+
- ```arachni_web_autostart``` -- removed calls to ```xterm``` and ```xdg-open```.
|
103
|
+
- ```arachni_script``` -- Pre-loads Arachni's libraries and loads and runs a series of Ruby scripts. (**New**)
|
104
|
+
- ```arachni_console``` -- Pre-loads Arachni's libraries and loads and runs an IRB shell with persistent history and tab-completion. (**New**)
|
6
105
|
|
7
106
|
## Version 0.4.0.3 _(March 12, 2012)_
|
8
107
|
- Gemspec -- Updated ```do_sqlite3``` dependency. ( [kost](https://github.com/kost) ) [#166]
|
data/CONTRIBUTORS.md
CHANGED
@@ -2,11 +2,14 @@
|
|
2
2
|
|
3
3
|
These are the people that helped improve Arachni either by submitting code, suggestions or testing it.
|
4
4
|
|
5
|
-
- [Matías Aereal Aeón](http://mfsec.com.ar/),
|
5
|
+
- [Matías Aereal Aeón](http://mfsec.com.ar/), for general suggestions and beta testing.
|
6
6
|
- [Christos Chiotis](mailto:chris@survivetheinternet.com) for designing the new HTML report template.
|
7
7
|
- [Brandon Potter](mailto:bpotter8705@gmail.com) for the original "arachni_web_autostart" script
|
8
8
|
- [Steve Pinkham](http://github.com/spinkham) for beta testing and patches.
|
9
9
|
- [Aung Khant](mailto:aungkhant@yehg.net) for general suggestions.
|
10
10
|
- [Herman Stevens](mailto:herman@astyran.com) for contributing recon modules.
|
11
|
+
- [Edwin van Andel](mailto:evanandel@yafsec.com) for contributing *BSD patches and testing the build script.
|
12
|
+
- [Dan Woodruff](mailto:daniel.woodruff@gmail.com) for contributing OSX patches and testing the build script.
|
13
|
+
- [Robert Gouin](mailto:rgouin@webmaxdb.com) for relentless testing.
|
11
14
|
|
12
15
|
A big thanks to my buddy [Andreas](mailto:rainmakergr@gmail.com) for the original spider drawing used in the project graphics.
|
data/EXPLOITATION.md
CHANGED
@@ -20,11 +20,11 @@ To install the necessary files all you need to do is copy the contents of the "e
|
|
20
20
|
$ ./arachni.rb http://localhost/~zapotek/tests/ --report=metareport:outfile=localhost.afr.msf
|
21
21
|
Arachni - Web Application Security Scanner Framework v0.2.1 [0.1.9]
|
22
22
|
Author: Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
23
|
-
|
23
|
+
|
24
24
|
(With the support of the community and the Arachni Team.)
|
25
25
|
|
26
|
-
Website: http://github.com/
|
27
|
-
Documentation: http://github.com/
|
26
|
+
Website: http://github.com/Arachni/arachni
|
27
|
+
Documentation: http://github.com/Arachni/arachni/wiki
|
28
28
|
|
29
29
|
|
30
30
|
[~] No modules were specified.
|
@@ -46,11 +46,11 @@ To convert a standard Arachni Framework Report (.afr) file to a Metareport (.afr
|
|
46
46
|
$ ./arachni.rb --repload=localhost.afr --report=metareport:outfile=localhost.afr.msf
|
47
47
|
Arachni - Web Application Security Scanner Framework v0.2.1 [0.1.9]
|
48
48
|
Author: Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
49
|
-
|
49
|
+
|
50
50
|
(With the support of the community and the Arachni Team.)
|
51
51
|
|
52
|
-
Website: http://github.com/
|
53
|
-
Documentation: http://github.com/
|
52
|
+
Website: http://github.com/Arachni/arachni
|
53
|
+
Documentation: http://github.com/Arachni/arachni/wiki
|
54
54
|
|
55
55
|
|
56
56
|
|
data/Gemfile
ADDED
data/HACKING.md
CHANGED
@@ -8,13 +8,34 @@ adhere to the following guidelines:
|
|
8
8
|
|
9
9
|
- 4 spaces, no tabs.
|
10
10
|
- Maximum line length 75-80 columns, try not to exceed that limit.
|
11
|
-
-
|
12
|
-
Like so:
|
13
|
-
arr.each {
|
14
|
-
|item|
|
15
|
-
}
|
11
|
+
- For single-line blocks, use:
|
16
12
|
|
17
|
-
|
13
|
+
```ruby
|
14
|
+
arr.each { |item| stuff( item ) }
|
15
|
+
```
|
16
|
+
|
17
|
+
- For multi-line blocks which expect parameters use:
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
arr.each do |item|
|
21
|
+
stuff( item )
|
22
|
+
end
|
23
|
+
```
|
24
|
+
|
25
|
+
- Use space before, between, and after method parameters:
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
my_method( param1, param2 )
|
29
|
+
```
|
30
|
+
|
31
|
+
- Use the new syntax when defining hashes, i.e. ':' instead of '=>'.
|
32
|
+
- Use '?' at the end of methods which are expected to return a boolean result.
|
33
|
+
- Use '!' at the end of methods only for ones which perform a similar operation
|
34
|
+
but requiring extra attention from the ones without.
|
35
|
+
Do not use it to just signify destructive action.
|
36
|
+
|
37
|
+
In general, take a look at the existing code and try to follow that style **but**
|
38
|
+
keep in mind that these guidelines should be given higher priority.
|
18
39
|
|
19
40
|
|
20
41
|
## Code No-Nos
|
@@ -32,7 +53,7 @@ It is unlikely that you will need it, but if you do, use
|
|
32
53
|
|
33
54
|
|
34
55
|
**3. Avoid creating your own instance of Net::HTTP or other lib.**<br/>
|
35
|
-
You are provided with a pre-configured wrapper ({Arachni::Module::
|
56
|
+
You are provided with a pre-configured wrapper ({Arachni::Module::Auditor#http}) of [Typhoeus](http://github.com/pauldix/typhoeus).
|
36
57
|
|
37
58
|
Take a look in the tutorial module to see what you get: {Arachni::Modules::RFI}
|
38
59
|
|
@@ -96,6 +117,4 @@ Via the framework they have access to all Arachni subsystems and can alter or ex
|
|
96
117
|
Plug-ins run in parallel to the framework and are executed right before the scan process starts.
|
97
118
|
|
98
119
|
## Licensing
|
99
|
-
All code must be contributed with
|
100
|
-
Do place licensing information in your code files.
|
101
|
-
|
120
|
+
All code must be contributed with an Apache License Version 2.0 compatible license.
|
data/LICENSE.md
CHANGED
@@ -1,341 +1,178 @@
|
|
1
1
|
# License
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
this License will not have their licenses terminated so long as such
|
180
|
-
parties remain in full compliance.
|
181
|
-
|
182
|
-
5. You are not required to accept this License, since you have not
|
183
|
-
signed it. However, nothing else grants you permission to modify or
|
184
|
-
distribute the Program or its derivative works. These actions are
|
185
|
-
prohibited by law if you do not accept this License. Therefore, by
|
186
|
-
modifying or distributing the Program (or any work based on the
|
187
|
-
Program), you indicate your acceptance of this License to do so, and
|
188
|
-
all its terms and conditions for copying, distributing or modifying
|
189
|
-
the Program or works based on it.
|
190
|
-
|
191
|
-
6. Each time you redistribute the Program (or any work based on the
|
192
|
-
Program), the recipient automatically receives a license from the
|
193
|
-
original licensor to copy, distribute or modify the Program subject to
|
194
|
-
these terms and conditions. You may not impose any further
|
195
|
-
restrictions on the recipients' exercise of the rights granted herein.
|
196
|
-
You are not responsible for enforcing compliance by third parties to
|
197
|
-
this License.
|
198
|
-
|
199
|
-
7. If, as a consequence of a court judgment or allegation of patent
|
200
|
-
infringement or for any other reason (not limited to patent issues),
|
201
|
-
conditions are imposed on you (whether by court order, agreement or
|
202
|
-
otherwise) that contradict the conditions of this License, they do not
|
203
|
-
excuse you from the conditions of this License. If you cannot
|
204
|
-
distribute so as to satisfy simultaneously your obligations under this
|
205
|
-
License and any other pertinent obligations, then as a consequence you
|
206
|
-
may not distribute the Program at all. For example, if a patent
|
207
|
-
license would not permit royalty-free redistribution of the Program by
|
208
|
-
all those who receive copies directly or indirectly through you, then
|
209
|
-
the only way you could satisfy both it and this License would be to
|
210
|
-
refrain entirely from distribution of the Program.
|
211
|
-
|
212
|
-
If any portion of this section is held invalid or unenforceable under
|
213
|
-
any particular circumstance, the balance of the section is intended to
|
214
|
-
apply and the section as a whole is intended to apply in other
|
215
|
-
circumstances.
|
216
|
-
|
217
|
-
It is not the purpose of this section to induce you to infringe any
|
218
|
-
patents or other property right claims or to contest validity of any
|
219
|
-
such claims; this section has the sole purpose of protecting the
|
220
|
-
integrity of the free software distribution system, which is
|
221
|
-
implemented by public license practices. Many people have made
|
222
|
-
generous contributions to the wide range of software distributed
|
223
|
-
through that system in reliance on consistent application of that
|
224
|
-
system; it is up to the author/donor to decide if he or she is willing
|
225
|
-
to distribute software through any other system and a licensee cannot
|
226
|
-
impose that choice.
|
227
|
-
|
228
|
-
This section is intended to make thoroughly clear what is believed to
|
229
|
-
be a consequence of the rest of this License.
|
230
|
-
|
231
|
-
8. If the distribution and/or use of the Program is restricted in
|
232
|
-
certain countries either by patents or by copyrighted interfaces, the
|
233
|
-
original copyright holder who places the Program under this License
|
234
|
-
may add an explicit geographical distribution limitation excluding
|
235
|
-
those countries, so that distribution is permitted only in or among
|
236
|
-
countries not thus excluded. In such case, this License incorporates
|
237
|
-
the limitation as if written in the body of this License.
|
238
|
-
|
239
|
-
9. The Free Software Foundation may publish revised and/or new versions
|
240
|
-
of the General Public License from time to time. Such new versions will
|
241
|
-
be similar in spirit to the present version, but may differ in detail to
|
242
|
-
address new problems or concerns.
|
243
|
-
|
244
|
-
Each version is given a distinguishing version number. If the Program
|
245
|
-
specifies a version number of this License which applies to it and "any
|
246
|
-
later version", you have the option of following the terms and conditions
|
247
|
-
either of that version or of any later version published by the Free
|
248
|
-
Software Foundation. If the Program does not specify a version number of
|
249
|
-
this License, you may choose any version ever published by the Free Software
|
250
|
-
Foundation.
|
251
|
-
|
252
|
-
10. If you wish to incorporate parts of the Program into other free
|
253
|
-
programs whose distribution conditions are different, write to the author
|
254
|
-
to ask for permission. For software which is copyrighted by the Free
|
255
|
-
Software Foundation, write to the Free Software Foundation; we sometimes
|
256
|
-
make exceptions for this. Our decision will be guided by the two goals
|
257
|
-
of preserving the free status of all derivatives of our free software and
|
258
|
-
of promoting the sharing and reuse of software generally.
|
259
|
-
|
260
|
-
NO WARRANTY
|
261
|
-
|
262
|
-
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
263
|
-
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
264
|
-
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
265
|
-
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
266
|
-
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
267
|
-
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
268
|
-
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
269
|
-
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
270
|
-
REPAIR OR CORRECTION.
|
271
|
-
|
272
|
-
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
273
|
-
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
274
|
-
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
275
|
-
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
276
|
-
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
277
|
-
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
278
|
-
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
279
|
-
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
280
|
-
POSSIBILITY OF SUCH DAMAGES.
|
281
|
-
|
282
|
-
END OF TERMS AND CONDITIONS
|
283
|
-
|
284
|
-
How to Apply These Terms to Your New Programs
|
285
|
-
|
286
|
-
If you develop a new program, and you want it to be of the greatest
|
287
|
-
possible use to the public, the best way to achieve this is to make it
|
288
|
-
free software which everyone can redistribute and change under these terms.
|
289
|
-
|
290
|
-
To do so, attach the following notices to the program. It is safest
|
291
|
-
to attach them to the start of each source file to most effectively
|
292
|
-
convey the exclusion of warranty; and each file should have at least
|
293
|
-
the "copyright" line and a pointer to where the full notice is found.
|
294
|
-
|
295
|
-
<one line to give the program's name and a brief idea of what it does.>
|
296
|
-
Copyright (C) <year> <name of author>
|
297
|
-
|
298
|
-
This program is free software; you can redistribute it and/or modify
|
299
|
-
it under the terms of the GNU General Public License as published by
|
300
|
-
the Free Software Foundation; either version 2 of the License, or
|
301
|
-
(at your option) any later version.
|
302
|
-
|
303
|
-
This program is distributed in the hope that it will be useful,
|
304
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
305
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
306
|
-
GNU General Public License for more details.
|
307
|
-
|
308
|
-
You should have received a copy of the GNU General Public License along
|
309
|
-
with this program; if not, write to the Free Software Foundation, Inc.,
|
310
|
-
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
311
|
-
|
312
|
-
Also add information on how to contact you by electronic and paper mail.
|
313
|
-
|
314
|
-
If the program is interactive, make it output a short notice like this
|
315
|
-
when it starts in an interactive mode:
|
316
|
-
|
317
|
-
Gnomovision version 69, Copyright (C) year name of author
|
318
|
-
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
319
|
-
This is free software, and you are welcome to redistribute it
|
320
|
-
under certain conditions; type `show c' for details.
|
321
|
-
|
322
|
-
The hypothetical commands `show w' and `show c' should show the appropriate
|
323
|
-
parts of the General Public License. Of course, the commands you use may
|
324
|
-
be called something other than `show w' and `show c'; they could even be
|
325
|
-
mouse-clicks or menu items--whatever suits your program.
|
326
|
-
|
327
|
-
You should also get your employer (if you work as a programmer) or your
|
328
|
-
school, if any, to sign a "copyright disclaimer" for the program, if
|
329
|
-
necessary. Here is a sample; alter the names:
|
330
|
-
|
331
|
-
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
332
|
-
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
333
|
-
|
334
|
-
<signature of Ty Coon>, 1 April 1989
|
335
|
-
Ty Coon, President of Vice
|
336
|
-
|
337
|
-
This General Public License does not permit incorporating your program into
|
338
|
-
proprietary programs. If your program is a subroutine library, you may
|
339
|
-
consider it more useful to permit linking proprietary applications with the
|
340
|
-
library. If this is what you want to do, use the GNU Lesser General
|
341
|
-
Public License instead of this License.
|
3
|
+
```
|
4
|
+
Apache License
|
5
|
+
Version 2.0, January 2004
|
6
|
+
http://www.apache.org/licenses/
|
7
|
+
|
8
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
9
|
+
|
10
|
+
1. Definitions.
|
11
|
+
|
12
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
13
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
14
|
+
|
15
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
16
|
+
the copyright owner that is granting the License.
|
17
|
+
|
18
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
19
|
+
other entities that control, are controlled by, or are under common
|
20
|
+
control with that entity. For the purposes of this definition,
|
21
|
+
"control" means (i) the power, direct or indirect, to cause the
|
22
|
+
direction or management of such entity, whether by contract or
|
23
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
24
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
25
|
+
|
26
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
27
|
+
exercising permissions granted by this License.
|
28
|
+
|
29
|
+
"Source" form shall mean the preferred form for making modifications,
|
30
|
+
including but not limited to software source code, documentation
|
31
|
+
source, and configuration files.
|
32
|
+
|
33
|
+
"Object" form shall mean any form resulting from mechanical
|
34
|
+
transformation or translation of a Source form, including but
|
35
|
+
not limited to compiled object code, generated documentation,
|
36
|
+
and conversions to other media types.
|
37
|
+
|
38
|
+
"Work" shall mean the work of authorship, whether in Source or
|
39
|
+
Object form, made available under the License, as indicated by a
|
40
|
+
copyright notice that is included in or attached to the work
|
41
|
+
(an example is provided in the Appendix below).
|
42
|
+
|
43
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
44
|
+
form, that is based on (or derived from) the Work and for which the
|
45
|
+
editorial revisions, annotations, elaborations, or other modifications
|
46
|
+
represent, as a whole, an original work of authorship. For the purposes
|
47
|
+
of this License, Derivative Works shall not include works that remain
|
48
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
49
|
+
the Work and Derivative Works thereof.
|
50
|
+
|
51
|
+
"Contribution" shall mean any work of authorship, including
|
52
|
+
the original version of the Work and any modifications or additions
|
53
|
+
to that Work or Derivative Works thereof, that is intentionally
|
54
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
55
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
56
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
57
|
+
means any form of electronic, verbal, or written communication sent
|
58
|
+
to the Licensor or its representatives, including but not limited to
|
59
|
+
communication on electronic mailing lists, source code control systems,
|
60
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
61
|
+
Licensor for the purpose of discussing and improving the Work, but
|
62
|
+
excluding communication that is conspicuously marked or otherwise
|
63
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
64
|
+
|
65
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
66
|
+
on behalf of whom a Contribution has been received by Licensor and
|
67
|
+
subsequently incorporated within the Work.
|
68
|
+
|
69
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
70
|
+
this License, each Contributor hereby grants to You a perpetual,
|
71
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
72
|
+
copyright license to reproduce, prepare Derivative Works of,
|
73
|
+
publicly display, publicly perform, sublicense, and distribute the
|
74
|
+
Work and such Derivative Works in Source or Object form.
|
75
|
+
|
76
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
77
|
+
this License, each Contributor hereby grants to You a perpetual,
|
78
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
79
|
+
(except as stated in this section) patent license to make, have made,
|
80
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
81
|
+
where such license applies only to those patent claims licensable
|
82
|
+
by such Contributor that are necessarily infringed by their
|
83
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
84
|
+
with the Work to which such Contribution(s) was submitted. If You
|
85
|
+
institute patent litigation against any entity (including a
|
86
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
87
|
+
or a Contribution incorporated within the Work constitutes direct
|
88
|
+
or contributory patent infringement, then any patent licenses
|
89
|
+
granted to You under this License for that Work shall terminate
|
90
|
+
as of the date such litigation is filed.
|
91
|
+
|
92
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
93
|
+
Work or Derivative Works thereof in any medium, with or without
|
94
|
+
modifications, and in Source or Object form, provided that You
|
95
|
+
meet the following conditions:
|
96
|
+
|
97
|
+
(a) You must give any other recipients of the Work or
|
98
|
+
Derivative Works a copy of this License; and
|
99
|
+
|
100
|
+
(b) You must cause any modified files to carry prominent notices
|
101
|
+
stating that You changed the files; and
|
102
|
+
|
103
|
+
(c) You must retain, in the Source form of any Derivative Works
|
104
|
+
that You distribute, all copyright, patent, trademark, and
|
105
|
+
attribution notices from the Source form of the Work,
|
106
|
+
excluding those notices that do not pertain to any part of
|
107
|
+
the Derivative Works; and
|
108
|
+
|
109
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
110
|
+
distribution, then any Derivative Works that You distribute must
|
111
|
+
include a readable copy of the attribution notices contained
|
112
|
+
within such NOTICE file, excluding those notices that do not
|
113
|
+
pertain to any part of the Derivative Works, in at least one
|
114
|
+
of the following places: within a NOTICE text file distributed
|
115
|
+
as part of the Derivative Works; within the Source form or
|
116
|
+
documentation, if provided along with the Derivative Works; or,
|
117
|
+
within a display generated by the Derivative Works, if and
|
118
|
+
wherever such third-party notices normally appear. The contents
|
119
|
+
of the NOTICE file are for informational purposes only and
|
120
|
+
do not modify the License. You may add Your own attribution
|
121
|
+
notices within Derivative Works that You distribute, alongside
|
122
|
+
or as an addendum to the NOTICE text from the Work, provided
|
123
|
+
that such additional attribution notices cannot be construed
|
124
|
+
as modifying the License.
|
125
|
+
|
126
|
+
You may add Your own copyright statement to Your modifications and
|
127
|
+
may provide additional or different license terms and conditions
|
128
|
+
for use, reproduction, or distribution of Your modifications, or
|
129
|
+
for any such Derivative Works as a whole, provided Your use,
|
130
|
+
reproduction, and distribution of the Work otherwise complies with
|
131
|
+
the conditions stated in this License.
|
132
|
+
|
133
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
134
|
+
any Contribution intentionally submitted for inclusion in the Work
|
135
|
+
by You to the Licensor shall be under the terms and conditions of
|
136
|
+
this License, without any additional terms or conditions.
|
137
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
138
|
+
the terms of any separate license agreement you may have executed
|
139
|
+
with Licensor regarding such Contributions.
|
140
|
+
|
141
|
+
6. Trademarks. This License does not grant permission to use the trade
|
142
|
+
names, trademarks, service marks, or product names of the Licensor,
|
143
|
+
except as required for reasonable and customary use in describing the
|
144
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
145
|
+
|
146
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
147
|
+
agreed to in writing, Licensor provides the Work (and each
|
148
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
149
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
150
|
+
implied, including, without limitation, any warranties or conditions
|
151
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
152
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
153
|
+
appropriateness of using or redistributing the Work and assume any
|
154
|
+
risks associated with Your exercise of permissions under this License.
|
155
|
+
|
156
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
157
|
+
whether in tort (including negligence), contract, or otherwise,
|
158
|
+
unless required by applicable law (such as deliberate and grossly
|
159
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
160
|
+
liable to You for damages, including any direct, indirect, special,
|
161
|
+
incidental, or consequential damages of any character arising as a
|
162
|
+
result of this License or out of the use or inability to use the
|
163
|
+
Work (including but not limited to damages for loss of goodwill,
|
164
|
+
work stoppage, computer failure or malfunction, or any and all
|
165
|
+
other commercial damages or losses), even if such Contributor
|
166
|
+
has been advised of the possibility of such damages.
|
167
|
+
|
168
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
169
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
170
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
171
|
+
or other liability obligations and/or rights consistent with this
|
172
|
+
License. However, in accepting such obligations, You may act only
|
173
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
174
|
+
of any other Contributor, and only if You agree to indemnify,
|
175
|
+
defend, and hold each Contributor harmless for any liability
|
176
|
+
incurred by, or claims asserted against, such Contributor by reason
|
177
|
+
of your accepting any such warranty or additional liability.
|
178
|
+
```
|