arachni 0.4.6 → 0.4.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/CHANGELOG.md +21 -0
- data/Gemfile +1 -1
- data/README.md +1 -1
- data/lib/arachni/element/capabilities/auditable/taint.rb +1 -0
- data/lib/arachni/element/form.rb +4 -6
- data/lib/arachni/http.rb +1 -0
- data/lib/arachni/parser.rb +1 -1
- data/lib/arachni/spider.rb +14 -2
- data/lib/version +1 -1
- data/modules/audit/code_injection.rb +36 -10
- data/modules/audit/code_injection_php_input_wrapper.rb +38 -5
- data/modules/audit/code_injection_timing.rb +36 -13
- data/modules/audit/csrf.rb +41 -11
- data/modules/audit/file_inclusion.rb +36 -6
- data/modules/audit/ldapi.rb +31 -6
- data/modules/audit/os_cmd_injection.rb +28 -7
- data/modules/audit/os_cmd_injection_timing.rb +29 -15
- data/modules/audit/path_traversal.rb +42 -6
- data/modules/audit/response_splitting.rb +26 -9
- data/modules/audit/rfi.rb +37 -9
- data/modules/audit/session_fixation.rb +38 -7
- data/modules/audit/source_code_disclosure.rb +41 -5
- data/modules/audit/sqli.rb +57 -6
- data/modules/audit/sqli_blind_rdiff.rb +54 -9
- data/modules/audit/sqli_blind_timing.rb +58 -15
- data/modules/audit/unvalidated_redirect.rb +29 -9
- data/modules/audit/xpath.rb +35 -8
- data/modules/audit/xss.rb +54 -9
- data/modules/audit/xss_event.rb +54 -10
- data/modules/audit/xss_path.rb +56 -9
- data/modules/audit/xss_script_tag.rb +54 -8
- data/modules/audit/xss_tag.rb +53 -7
- data/modules/recon/allowed_methods.rb +24 -4
- data/modules/recon/backdoors.rb +29 -11
- data/modules/recon/backup_files.rb +30 -14
- data/modules/recon/common_directories.rb +27 -8
- data/modules/recon/common_files.rb +27 -7
- data/modules/recon/directory_listing.rb +30 -10
- data/modules/recon/grep/captcha.rb +26 -8
- data/modules/recon/grep/credit_card.rb +25 -6
- data/modules/recon/grep/cvs_svn_users.rb +23 -6
- data/modules/recon/grep/emails.rb +28 -8
- data/modules/recon/grep/form_upload.rb +31 -6
- data/modules/recon/grep/http_only_cookies.rb +33 -8
- data/modules/recon/grep/insecure_cookies.rb +36 -9
- data/modules/recon/grep/mixed_resource.rb +29 -9
- data/modules/recon/grep/password_autocomplete.rb +33 -6
- data/modules/recon/grep/private_ip.rb +21 -7
- data/modules/recon/grep/ssn.rb +17 -6
- data/modules/recon/grep/unencrypted_password_forms.rb +28 -9
- data/modules/recon/htaccess_limit.rb +23 -8
- data/modules/recon/http_put.rb +29 -7
- data/modules/recon/interesting_responses.rb +8 -10
- data/modules/recon/localstart_asp.rb +35 -5
- data/modules/recon/webdav.rb +23 -7
- data/modules/recon/x_forwarded_for_access_restriction_bypass.rb +27 -6
- data/modules/recon/xst.rb +26 -5
- data/plugins/autologin.rb +16 -5
- data/plugins/proxy/server.rb +2 -9
- data/spec/external/wavsep/active/lfi_spec.rb +6 -6
- data/spec/external/wavsep/active/rfi_spec.rb +6 -6
- data/spec/external/wavsep/active/sqli_spec.rb +4 -4
- data/spec/external/wavsep/active/xss_spec.rb +1 -1
- data/spec/support/logs/Dispatcher - 1332-56847.log +9 -0
- data/spec/support/logs/Dispatcher - 1361-63434.log +21 -0
- data/spec/support/logs/Dispatcher - 1545-55308.log +9 -0
- data/spec/support/logs/Dispatcher - 1559-18938.log +19 -0
- data/spec/support/logs/Dispatcher - 1568-25013.log +17 -0
- data/spec/support/logs/Dispatcher - 1577-55689.log +13 -0
- data/spec/support/logs/Dispatcher - 1586-18577.log +9 -0
- data/spec/support/logs/Dispatcher - 1595-49353.log +9 -0
- data/spec/support/logs/Dispatcher - 1604-27831.log +11 -0
- data/spec/support/logs/Dispatcher - 1617-57444.log +11 -0
- data/spec/support/logs/Dispatcher - 1631-28737.log +11 -0
- data/spec/support/logs/Dispatcher - 1644-21815.log +33 -0
- data/spec/support/logs/Dispatcher - 1738-53470.log +21 -0
- data/spec/support/logs/Dispatcher - 1747-64173.log +21 -0
- data/spec/support/logs/Dispatcher - 1756-11866.log +23 -0
- data/spec/support/logs/Dispatcher - 1798-12175.log +19 -0
- data/spec/support/logs/Dispatcher - 1807-22790.log +17 -0
- data/spec/support/logs/Dispatcher - 1816-57823.log +15 -0
- data/spec/support/logs/Dispatcher - 1831-64825.log +11 -0
- data/spec/support/logs/Dispatcher - 1845-27623.log +9 -0
- data/spec/support/logs/Dispatcher - 1854-26066.log +9 -0
- data/spec/support/logs/Dispatcher - 1863-37486.log +9 -0
- data/spec/support/logs/Dispatcher - 1874-22463.log +9 -0
- data/spec/support/logs/Dispatcher - 1883-41263.log +11 -0
- data/spec/support/logs/Dispatcher - 1900-53660.log +9 -0
- data/spec/support/logs/Dispatcher - 1909-44423.log +9 -0
- data/spec/support/logs/Dispatcher - 1921-58931.log +9 -0
- data/spec/support/logs/Dispatcher - 1993-6448.log +63 -0
- data/spec/support/logs/Dispatcher - 2002-19206.log +43 -0
- data/spec/support/logs/Dispatcher - 2011-11852.log +39 -0
- data/spec/support/logs/Dispatcher - 2020-65055.log +34 -0
- data/spec/support/logs/Dispatcher - 2029-48445.log +28 -0
- data/spec/support/logs/Dispatcher - 2038-55271.log +21 -0
- data/spec/support/logs/Dispatcher - 2047-45722.log +13 -0
- data/spec/support/logs/Dispatcher - 2057-48194.log +9 -0
- data/spec/support/logs/Dispatcher - 2189-39843.log +19 -0
- data/spec/support/logs/Dispatcher - 2199-15985.log +21 -0
- data/spec/support/logs/Dispatcher - 2208-22080.log +15 -0
- data/spec/support/logs/Dispatcher - 2221-37690.log +19 -0
- data/spec/support/logs/Dispatcher - 2230-47867.log +21 -0
- data/spec/support/logs/Dispatcher - 2239-27060.log +15 -0
- data/spec/support/logs/Dispatcher - 2358-8967.log +17 -0
- data/spec/support/logs/Dispatcher - 2367-27103.log +21 -0
- data/spec/support/logs/Dispatcher - 2376-16287.log +13 -0
- data/spec/support/logs/Dispatcher - 2389-9109.log +19 -0
- data/spec/support/logs/Dispatcher - 2398-62926.log +21 -0
- data/spec/support/logs/Dispatcher - 2407-48685.log +15 -0
- data/spec/support/logs/Dispatcher - 2459-62480.log +17 -0
- data/spec/support/logs/Dispatcher - 2470-57894.log +21 -0
- data/spec/support/logs/Dispatcher - 2479-51883.log +13 -0
- data/spec/support/logs/Dispatcher - 2493-36944.log +17 -0
- data/spec/support/logs/Dispatcher - 2503-59143.log +21 -0
- data/spec/support/logs/Dispatcher - 2513-33084.log +13 -0
- data/spec/support/logs/Dispatcher - 25430-46306.log +9 -0
- data/spec/support/logs/Dispatcher - 25457-10711.log +23 -0
- data/spec/support/logs/Dispatcher - 25603-48892.log +9 -0
- data/spec/support/logs/Dispatcher - 25613-24775.log +19 -0
- data/spec/support/logs/Dispatcher - 25622-59684.log +17 -0
- data/spec/support/logs/Dispatcher - 25631-23195.log +13 -0
- data/spec/support/logs/Dispatcher - 25640-9810.log +9 -0
- data/spec/support/logs/Dispatcher - 25649-52757.log +9 -0
- data/spec/support/logs/Dispatcher - 25658-58550.log +11 -0
- data/spec/support/logs/Dispatcher - 25671-30871.log +11 -0
- data/spec/support/logs/Dispatcher - 25684-48620.log +11 -0
- data/spec/support/logs/Dispatcher - 25697-18124.log +37 -0
- data/spec/support/logs/Dispatcher - 25762-35321.log +21 -0
- data/spec/support/logs/Dispatcher - 25771-64633.log +21 -0
- data/spec/support/logs/Dispatcher - 25780-43558.log +23 -0
- data/spec/support/logs/Dispatcher - 25821-43561.log +19 -0
- data/spec/support/logs/Dispatcher - 25830-39112.log +17 -0
- data/spec/support/logs/Dispatcher - 25839-44093.log +15 -0
- data/spec/support/logs/Dispatcher - 25852-12057.log +11 -0
- data/spec/support/logs/Dispatcher - 25866-49029.log +9 -0
- data/spec/support/logs/Dispatcher - 25875-32179.log +9 -0
- data/spec/support/logs/Dispatcher - 25884-62703.log +9 -0
- data/spec/support/logs/Dispatcher - 25894-4228.log +9 -0
- data/spec/support/logs/Dispatcher - 25903-6709.log +11 -0
- data/spec/support/logs/Dispatcher - 25917-29651.log +9 -0
- data/spec/support/logs/Dispatcher - 25926-12708.log +9 -0
- data/spec/support/logs/Dispatcher - 25935-54092.log +9 -0
- data/spec/support/logs/Dispatcher - 25990-26756.log +63 -0
- data/spec/support/logs/Dispatcher - 25999-4016.log +43 -0
- data/spec/support/logs/Dispatcher - 26008-52076.log +39 -0
- data/spec/support/logs/Dispatcher - 26017-48497.log +34 -0
- data/spec/support/logs/Dispatcher - 26026-28839.log +28 -0
- data/spec/support/logs/Dispatcher - 26035-54215.log +21 -0
- data/spec/support/logs/Dispatcher - 26044-27216.log +13 -0
- data/spec/support/logs/Dispatcher - 26054-53464.log +9 -0
- data/spec/support/logs/Dispatcher - 26163-65271.log +19 -0
- data/spec/support/logs/Dispatcher - 26173-58105.log +21 -0
- data/spec/support/logs/Dispatcher - 26182-40848.log +15 -0
- data/spec/support/logs/Dispatcher - 26195-2855.log +19 -0
- data/spec/support/logs/Dispatcher - 26204-35297.log +21 -0
- data/spec/support/logs/Dispatcher - 26213-59588.log +15 -0
- data/spec/support/logs/Dispatcher - 26333-40774.log +17 -0
- data/spec/support/logs/Dispatcher - 26342-45541.log +21 -0
- data/spec/support/logs/Dispatcher - 26351-3349.log +13 -0
- data/spec/support/logs/Dispatcher - 26364-37456.log +19 -0
- data/spec/support/logs/Dispatcher - 26373-37340.log +21 -0
- data/spec/support/logs/Dispatcher - 26382-54864.log +15 -0
- data/spec/support/logs/Dispatcher - 26434-3070.log +17 -0
- data/spec/support/logs/Dispatcher - 26448-14295.log +21 -0
- data/spec/support/logs/Dispatcher - 26474-30587.log +13 -0
- data/spec/support/logs/Dispatcher - 26500-32529.log +17 -0
- data/spec/support/logs/Dispatcher - 26509-16952.log +21 -0
- data/spec/support/logs/Dispatcher - 26519-43332.log +13 -0
- data/spec/support/logs/Dispatcher - 26750-61867.log +19 -0
- data/spec/support/logs/Dispatcher - 26759-22532.log +21 -0
- data/spec/support/logs/Dispatcher - 26768-18231.log +15 -0
- data/spec/support/logs/Dispatcher - 26792-41661.log +21 -0
- data/spec/support/logs/Dispatcher - 26801-14384.log +25 -0
- data/spec/support/logs/Dispatcher - 26810-2591.log +15 -0
- data/spec/support/logs/Dispatcher - 26846-14591.log +17 -0
- data/spec/support/logs/Dispatcher - 26855-15708.log +21 -0
- data/spec/support/logs/Dispatcher - 26864-2062.log +13 -0
- data/spec/support/logs/Dispatcher - 26877-14471.log +21 -0
- data/spec/support/logs/Dispatcher - 26886-49795.log +25 -0
- data/spec/support/logs/Dispatcher - 26895-21093.log +15 -0
- data/spec/support/logs/Dispatcher - 26931-30049.log +17 -0
- data/spec/support/logs/Dispatcher - 26940-34273.log +21 -0
- data/spec/support/logs/Dispatcher - 26949-30040.log +13 -0
- data/spec/support/logs/Dispatcher - 26962-8152.log +17 -0
- data/spec/support/logs/Dispatcher - 26971-53062.log +21 -0
- data/spec/support/logs/Dispatcher - 26980-7548.log +13 -0
- data/spec/support/logs/Dispatcher - 2737-20989.log +19 -0
- data/spec/support/logs/Dispatcher - 2746-5423.log +21 -0
- data/spec/support/logs/Dispatcher - 2755-53393.log +15 -0
- data/spec/support/logs/Dispatcher - 27615-41812.log +19 -0
- data/spec/support/logs/Dispatcher - 27624-43683.log +21 -0
- data/spec/support/logs/Dispatcher - 27633-11593.log +15 -0
- data/spec/support/logs/Dispatcher - 27658-12186.log +21 -0
- data/spec/support/logs/Dispatcher - 27667-15575.log +25 -0
- data/spec/support/logs/Dispatcher - 27676-17207.log +15 -0
- data/spec/support/logs/Dispatcher - 27712-2233.log +17 -0
- data/spec/support/logs/Dispatcher - 27721-3842.log +21 -0
- data/spec/support/logs/Dispatcher - 27730-22695.log +13 -0
- data/spec/support/logs/Dispatcher - 27743-8364.log +21 -0
- data/spec/support/logs/Dispatcher - 27752-6140.log +25 -0
- data/spec/support/logs/Dispatcher - 27761-25015.log +15 -0
- data/spec/support/logs/Dispatcher - 27797-9270.log +17 -0
- data/spec/support/logs/Dispatcher - 2780-58168.log +21 -0
- data/spec/support/logs/Dispatcher - 27806-48623.log +21 -0
- data/spec/support/logs/Dispatcher - 27815-58778.log +13 -0
- data/spec/support/logs/Dispatcher - 27828-29742.log +17 -0
- data/spec/support/logs/Dispatcher - 27837-46211.log +21 -0
- data/spec/support/logs/Dispatcher - 27846-16143.log +13 -0
- data/spec/support/logs/Dispatcher - 2789-29375.log +25 -0
- data/spec/support/logs/Dispatcher - 2798-10983.log +15 -0
- data/spec/support/logs/Dispatcher - 2836-2354.log +17 -0
- data/spec/support/logs/Dispatcher - 2845-65341.log +21 -0
- data/spec/support/logs/Dispatcher - 2854-18936.log +13 -0
- data/spec/support/logs/Dispatcher - 2867-51979.log +21 -0
- data/spec/support/logs/Dispatcher - 2876-21086.log +25 -0
- data/spec/support/logs/Dispatcher - 2887-17393.log +15 -0
- data/spec/support/logs/Dispatcher - 2930-37394.log +17 -0
- data/spec/support/logs/Dispatcher - 2943-46737.log +21 -0
- data/spec/support/logs/Dispatcher - 2956-37866.log +13 -0
- data/spec/support/logs/Dispatcher - 2976-21012.log +17 -0
- data/spec/support/logs/Dispatcher - 2990-48082.log +21 -0
- data/spec/support/logs/Dispatcher - 2999-16391.log +13 -0
- data/spec/support/logs/{Instance - 10762-33696.error.log → Instance - 2204-45164.error.log } +59 -40
- data/spec/support/logs/{Instance - 11038-18065.error.log → Instance - 2475-49789.error.log } +61 -42
- data/spec/support/logs/{Instance - 11069-34848.error.log → Instance - 2509-39450.error.log } +158 -139
- data/spec/support/logs/{Instance - 11229-38634.error.log → Instance - 2533-5785.error.log } +56 -37
- data/spec/support/logs/Instance - 2539-42941.error.log +356 -0
- data/spec/support/logs/Instance - 26178-57631.error.log +324 -0
- data/spec/support/logs/Instance - 26458-60253.error.log +326 -0
- data/spec/support/logs/Instance - 26514-44685.error.log +423 -0
- data/spec/support/logs/Instance - 26538-43093.error.log +322 -0
- data/spec/support/logs/Instance - 26544-52217.error.log +328 -0
- data/spec/support/logs/{Instance - 11097-33191.error.log → Instance - 26682-37056.error.log } +65 -57
- data/spec/support/logs/{Instance - 11091-33954.error.log → Instance - 2669-56818.error.log } +56 -37
- data/spec/support/logs/Instance - 27547-3928.error.log +309 -0
- data/spec/support/servers/plugins/autologin.rb +13 -1
- metadata +974 -782
- data/spec/support/logs/Dispatcher - 10129-46995.log +0 -9
- data/spec/support/logs/Dispatcher - 10139-63648.log +0 -19
- data/spec/support/logs/Dispatcher - 10149-5551.log +0 -17
- data/spec/support/logs/Dispatcher - 10158-34385.log +0 -13
- data/spec/support/logs/Dispatcher - 10167-55701.log +0 -9
- data/spec/support/logs/Dispatcher - 10176-8922.log +0 -9
- data/spec/support/logs/Dispatcher - 10185-53716.log +0 -11
- data/spec/support/logs/Dispatcher - 10198-44724.log +0 -11
- data/spec/support/logs/Dispatcher - 10211-7697.log +0 -11
- data/spec/support/logs/Dispatcher - 10224-3751.log +0 -35
- data/spec/support/logs/Dispatcher - 10285-7404.log +0 -21
- data/spec/support/logs/Dispatcher - 10294-56221.log +0 -21
- data/spec/support/logs/Dispatcher - 10303-2483.log +0 -23
- data/spec/support/logs/Dispatcher - 10344-60543.log +0 -19
- data/spec/support/logs/Dispatcher - 10355-31708.log +0 -17
- data/spec/support/logs/Dispatcher - 10364-63170.log +0 -15
- data/spec/support/logs/Dispatcher - 10377-37936.log +0 -11
- data/spec/support/logs/Dispatcher - 10390-37511.log +0 -9
- data/spec/support/logs/Dispatcher - 10400-29603.log +0 -9
- data/spec/support/logs/Dispatcher - 10409-57042.log +0 -9
- data/spec/support/logs/Dispatcher - 10418-17812.log +0 -9
- data/spec/support/logs/Dispatcher - 10427-59862.log +0 -11
- data/spec/support/logs/Dispatcher - 10440-48351.log +0 -9
- data/spec/support/logs/Dispatcher - 10449-24218.log +0 -9
- data/spec/support/logs/Dispatcher - 10458-54646.log +0 -9
- data/spec/support/logs/Dispatcher - 10511-3333.log +0 -63
- data/spec/support/logs/Dispatcher - 10520-50009.log +0 -43
- data/spec/support/logs/Dispatcher - 10529-44870.log +0 -39
- data/spec/support/logs/Dispatcher - 10538-49556.log +0 -34
- data/spec/support/logs/Dispatcher - 10547-61887.log +0 -28
- data/spec/support/logs/Dispatcher - 10556-31163.log +0 -21
- data/spec/support/logs/Dispatcher - 10565-40008.log +0 -13
- data/spec/support/logs/Dispatcher - 10575-18836.log +0 -9
- data/spec/support/logs/Dispatcher - 10747-32268.log +0 -19
- data/spec/support/logs/Dispatcher - 10757-4081.log +0 -21
- data/spec/support/logs/Dispatcher - 10766-49190.log +0 -15
- data/spec/support/logs/Dispatcher - 10780-46610.log +0 -19
- data/spec/support/logs/Dispatcher - 10789-5332.log +0 -21
- data/spec/support/logs/Dispatcher - 10798-56243.log +0 -15
- data/spec/support/logs/Dispatcher - 10920-32037.log +0 -17
- data/spec/support/logs/Dispatcher - 10929-35662.log +0 -21
- data/spec/support/logs/Dispatcher - 10938-64010.log +0 -13
- data/spec/support/logs/Dispatcher - 10951-44746.log +0 -19
- data/spec/support/logs/Dispatcher - 10961-55791.log +0 -21
- data/spec/support/logs/Dispatcher - 10972-58913.log +0 -15
- data/spec/support/logs/Dispatcher - 11023-45004.log +0 -17
- data/spec/support/logs/Dispatcher - 11033-55505.log +0 -21
- data/spec/support/logs/Dispatcher - 11042-46123.log +0 -13
- data/spec/support/logs/Dispatcher - 11055-26836.log +0 -17
- data/spec/support/logs/Dispatcher - 11064-60361.log +0 -21
- data/spec/support/logs/Dispatcher - 11073-17507.log +0 -13
- data/spec/support/logs/Dispatcher - 11298-28357.log +0 -19
- data/spec/support/logs/Dispatcher - 11307-62669.log +0 -21
- data/spec/support/logs/Dispatcher - 11316-9391.log +0 -15
- data/spec/support/logs/Dispatcher - 11340-45921.log +0 -21
- data/spec/support/logs/Dispatcher - 11349-8693.log +0 -25
- data/spec/support/logs/Dispatcher - 11358-53753.log +0 -15
- data/spec/support/logs/Dispatcher - 11394-29437.log +0 -17
- data/spec/support/logs/Dispatcher - 11403-59953.log +0 -21
- data/spec/support/logs/Dispatcher - 11412-51134.log +0 -13
- data/spec/support/logs/Dispatcher - 11425-42569.log +0 -21
- data/spec/support/logs/Dispatcher - 11434-16150.log +0 -25
- data/spec/support/logs/Dispatcher - 11443-19072.log +0 -15
- data/spec/support/logs/Dispatcher - 11479-39149.log +0 -17
- data/spec/support/logs/Dispatcher - 11488-42169.log +0 -21
- data/spec/support/logs/Dispatcher - 11497-29822.log +0 -13
- data/spec/support/logs/Dispatcher - 11510-8273.log +0 -17
- data/spec/support/logs/Dispatcher - 11519-18206.log +0 -21
- data/spec/support/logs/Dispatcher - 11528-55825.log +0 -13
- data/spec/support/logs/Dispatcher - 9969-52890.log +0 -9
- data/spec/support/logs/Dispatcher - 9996-38451.log +0 -21
@@ -20,7 +20,7 @@
|
|
20
20
|
#
|
21
21
|
# @author Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
22
22
|
#
|
23
|
-
# @version 0.2
|
23
|
+
# @version 0.2.1
|
24
24
|
#
|
25
25
|
# @see http://cwe.mitre.org/data/definitions/540.html
|
26
26
|
class Arachni::Modules::SourceCodeDisclosure < Arachni::Module::Base
|
@@ -122,19 +122,55 @@ class Arachni::Modules::SourceCodeDisclosure < Arachni::Module::Base
|
|
122
122
|
can be forced to reveal source code.},
|
123
123
|
elements: [ Element::FORM, Element::LINK, Element::COOKIE, Element::HEADER ],
|
124
124
|
author: 'Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>',
|
125
|
-
version: '0.2',
|
125
|
+
version: '0.2.1',
|
126
126
|
targets: %w(PHP ASP JSP),
|
127
127
|
references: {
|
128
128
|
'CWE' => 'http://cwe.mitre.org/data/definitions/540.html'
|
129
129
|
},
|
130
130
|
issue: {
|
131
131
|
name: %q{Source code disclosure},
|
132
|
-
description: %q{
|
132
|
+
description: %q{A modern web application will be reliant on
|
133
|
+
several different programming languages. These languages can
|
134
|
+
be broken up into two flavours. These are client side
|
135
|
+
languages such as those that run in the browser eg.
|
136
|
+
JavaScript and HTML, and server side languages that are
|
137
|
+
executed by the server (ASP, PHP, JSP, etc) to form the
|
138
|
+
dynamic pages (client side code) that are then sent to the
|
139
|
+
client. Because all server side code should be executed by
|
140
|
+
the server, it should never be seen by the client. However
|
141
|
+
in some scenarios, it is possible that 1. The server side
|
142
|
+
code has syntax errors and therefore is not executed by the
|
143
|
+
server but is instead sent to the client, or 2. Using
|
144
|
+
crafted requests it is possible to force the server into
|
145
|
+
displaying the source code of the application without
|
146
|
+
executing it. As the server side source code often contains
|
147
|
+
sensitive information such as database connection strings or
|
148
|
+
details into the application workflow this can be extremely
|
149
|
+
risky. Cyber-criminals will attempt to discover pages that
|
150
|
+
either accidentally or forcefully allow the server side source
|
151
|
+
code to be disclosed, to assist in discovering further
|
152
|
+
vulnerabilities or sensitive information. Arachni has
|
153
|
+
detected server side source code within the server's
|
154
|
+
response. Note: false positives may occur when requesting
|
155
|
+
binary files such as images (.JPG or .PNG) and may require
|
156
|
+
manual verification.},
|
133
157
|
tags: %w(code source file inclusion disclosure),
|
134
158
|
cwe: '540',
|
135
159
|
severity: Severity::HIGH,
|
136
|
-
remedy_guidance: %q{
|
137
|
-
|
160
|
+
remedy_guidance: %q{If confirmation reveals the leakage of
|
161
|
+
server side source code, then the following remediation
|
162
|
+
actions should be applied. Determine the context in which
|
163
|
+
the source code is disclosed. ie. Caused through coding
|
164
|
+
errors, or abusing existing functionality. If due to errors
|
165
|
+
in the server side code, then the code causing the
|
166
|
+
disclosure should be rewritten. If it is through the abuse
|
167
|
+
of existing functionality then it is important that input
|
168
|
+
sanitisation be conducted to prevent application files (ASP,
|
169
|
+
JSP, PHP or config files) from being called. It is also
|
170
|
+
important that the file system permissions are correctly
|
171
|
+
configured, and that all unused files are removed from the
|
172
|
+
web root. If these are not an option, then the vulnerable
|
173
|
+
file should be removed from the server.},
|
138
174
|
}
|
139
175
|
|
140
176
|
}
|
data/modules/audit/sqli.rb
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
#
|
19
19
|
# @author Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
20
20
|
#
|
21
|
-
# @version 0.2.
|
21
|
+
# @version 0.2.2
|
22
22
|
#
|
23
23
|
# @see http://cwe.mitre.org/data/definitions/89.html
|
24
24
|
# @see http://unixwiz.net/techtips/sql-injection.html
|
@@ -71,24 +71,75 @@ class Arachni::Modules::SQLInjection < Arachni::Module::Base
|
|
71
71
|
description: %q{SQL injection module, uses known SQL DB errors to identify vulnerabilities.},
|
72
72
|
elements: [Element::LINK, Element::FORM, Element::COOKIE, Element::HEADER],
|
73
73
|
author: 'Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>',
|
74
|
-
version: '0.2.
|
74
|
+
version: '0.2.2',
|
75
75
|
references: {
|
76
76
|
'UnixWiz' => 'http://unixwiz.net/techtips/sql-injection.html',
|
77
77
|
'Wikipedia' => 'http://en.wikipedia.org/wiki/SQL_injection',
|
78
78
|
'SecuriTeam' => 'http://www.securiteam.com/securityreviews/5DP0N1P76E.html',
|
79
|
-
'OWASP' => 'http://www.owasp.org/index.php/SQL_Injection'
|
79
|
+
'OWASP' => 'http://www.owasp.org/index.php/SQL_Injection',
|
80
|
+
'WASC' => 'http://projects.webappsec.org/w/page/13246963/SQL%20Injection',
|
81
|
+
'W3 Schools' => 'http://www.w3schools.com/sql/sql_injection.asp'
|
80
82
|
},
|
81
83
|
targets: %w(Oracle ColdFusion InterBase PostgreSQL MySQL MSSQL EMC
|
82
84
|
SQLite DB2 Informix Firebird MaxDB Sybase Frontbase Ingres HSQLDB),
|
83
85
|
issue: {
|
84
86
|
name: %q{SQL Injection},
|
85
|
-
description: %q{
|
87
|
+
description: %q{Databases are used to store data. Due to the
|
88
|
+
requirement for dynamic content of today's web applications,
|
89
|
+
many web applications rely on a database backend to store
|
90
|
+
data that will be called upon and processed by the web
|
91
|
+
application (or other programs). Web applications retrieve
|
92
|
+
data from the database by using a Structured Query Language
|
93
|
+
(SQL) query. To meet demands of many developers, database
|
94
|
+
servers (such as MSSQL, MySQL, Oracle etc.) have
|
95
|
+
additional built-in functionality that can allow extensive
|
96
|
+
control of the database and interaction with the host
|
97
|
+
operating system itself. An SQL injection occurs when a
|
98
|
+
value originating from the client's request is used within an
|
99
|
+
SQL query without prior sanitisation. This could allow the
|
100
|
+
cyber-criminal to steal the data stored in the database, or
|
101
|
+
use the additional functionality of the database server to
|
102
|
+
take complete control of the server. When discovered, this
|
103
|
+
allows cyber-criminals the ability to inject their own SQL
|
104
|
+
query (injected query will normally be placed within the
|
105
|
+
existing application query) and have it executed by the
|
106
|
+
database server. The successful exploitation of a SQL
|
107
|
+
injection can be a devastating to an organisation, and is
|
108
|
+
one of the most commonly exploited web application
|
109
|
+
vulnerabilities. To discover a SQL injection, Arachni
|
110
|
+
injects multiple different payloads into specific locations
|
111
|
+
within the client request. Arachni discovered that the
|
112
|
+
affected page and parameter may be vulnerable. This
|
113
|
+
injection was detected as Arachni was able to cause the
|
114
|
+
server to respond to the request with a database related
|
115
|
+
error. This is the easiest form of detection, and is known
|
116
|
+
as error based SQL injection vulnerability.},
|
86
117
|
tags: %w(sql injection regexp database error),
|
87
118
|
cwe: '89',
|
88
119
|
severity: Severity::HIGH,
|
89
120
|
cvssv2: '9.0',
|
90
|
-
remedy_guidance:
|
91
|
-
|
121
|
+
remedy_guidance: %q{The only proven method to prevent against
|
122
|
+
SQL injection attacks while still maintaining full
|
123
|
+
application functionality is to use parameterized queries
|
124
|
+
(also known as prepared statements). When utilising this
|
125
|
+
method of querying the database any value supplied by the
|
126
|
+
client will be handled as a string value rather than part of
|
127
|
+
the SQL query. Additionally, when utilising parameterized
|
128
|
+
queries, the database engine will automatically check to
|
129
|
+
make sure the string being used matches that of the column.
|
130
|
+
For example the database engine will check the user supplied
|
131
|
+
input is an integer if the database column is also an
|
132
|
+
integer. Depending on the framework being used,
|
133
|
+
implementation of parameterized queries will differ.
|
134
|
+
Other methods to help protect against SQL injection
|
135
|
+
vulnerabilities exist however are not as effective and may
|
136
|
+
either limit web application functionality, or remain
|
137
|
+
vulnerable.
|
138
|
+
Additional remediation activities such as configuring strict
|
139
|
+
database permissions to limit queries that can be executed,
|
140
|
+
and configuring the webserver to display custom error
|
141
|
+
messages to prevent error based detection will both further
|
142
|
+
reduce the risk.},
|
92
143
|
metasploitable: 'auxiliary/arachni_sqlmap'
|
93
144
|
}
|
94
145
|
}
|
@@ -21,7 +21,7 @@
|
|
21
21
|
#
|
22
22
|
# @author Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
23
23
|
#
|
24
|
-
# @version 0.4.
|
24
|
+
# @version 0.4.2
|
25
25
|
#
|
26
26
|
# @see http://cwe.mitre.org/data/definitions/89.html
|
27
27
|
# @see http://capec.mitre.org/data/definitions/7.html
|
@@ -64,25 +64,70 @@ class Arachni::Modules::BlindrDiffSQLInjection < Arachni::Module::Base
|
|
64
64
|
with that of a vulnerable application.},
|
65
65
|
elements: [ Element::LINK, Element::FORM, Element::COOKIE ],
|
66
66
|
author: 'Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>',
|
67
|
-
version: '0.4.
|
67
|
+
version: '0.4.2',
|
68
68
|
references: {
|
69
69
|
'OWASP' => 'http://www.owasp.org/index.php/Blind_SQL_Injection',
|
70
|
-
'MITRE - CAPEC' => 'http://capec.mitre.org/data/definitions/7.html'
|
70
|
+
'MITRE - CAPEC' => 'http://capec.mitre.org/data/definitions/7.html',
|
71
|
+
'WASC' => 'http://projects.webappsec.org/w/page/13246963/SQL%20Injection',
|
72
|
+
'W3 Schools' => 'http://www.w3schools.com/sql/sql_injection.asp'
|
71
73
|
},
|
72
74
|
targets: %w(Generic),
|
73
75
|
|
74
76
|
issue: {
|
75
77
|
name: %q{Blind SQL Injection (differential analysis)},
|
76
|
-
description: %q{
|
77
|
-
|
78
|
+
description: %q{Databases are used to store data. Due to the
|
79
|
+
requirement for dynamic content of today's web applications,
|
80
|
+
many web applications rely on a database backend to store
|
81
|
+
data that will be called upon and processed by the web
|
82
|
+
application (or other programs). Web applications retrieve
|
83
|
+
data from the database by using a Structured Query Language
|
84
|
+
(SQL) query. To meet demands of many developers, database
|
85
|
+
servers (such as MSSQL, MySQL, Oracle etc.) have additional
|
86
|
+
built-in functionality that can allow extensive control of
|
87
|
+
the database and interaction with the host operating system
|
88
|
+
itself. An SQL injection occurs when a value originating
|
89
|
+
from the client's request is used within an SQL query without
|
90
|
+
prior sanitisation. This could allow the cyber-criminal to
|
91
|
+
steal the data stored in the database, or use the additional
|
92
|
+
functionality of the database server to take complete
|
93
|
+
control of the server. When discovered, this allows cyber-
|
94
|
+
criminals the ability to inject their own SQL query
|
95
|
+
(injected query will normally be placed within the existing
|
96
|
+
application query) and have it executed by the database
|
97
|
+
server. The successful exploitation of a SQL injection can
|
98
|
+
be a devastating to an organisation, and is one of the most
|
99
|
+
commonly exploited web application vulnerabilities. To
|
100
|
+
discover a SQL injection, Arachni injects multiple different
|
101
|
+
payloads into specific locations within the client request.
|
102
|
+
Arachni discovered that the affected page and parameter may
|
103
|
+
be vulnerable. This injection was detected as Arachni was
|
104
|
+
able to inject specific SQL queries that if vulnerable
|
105
|
+
result in the responses for each injection being different.
|
106
|
+
This is known as a blind SQL injection vulnerability.},
|
78
107
|
tags: %w(sql blind rdiff injection database),
|
79
108
|
cwe: '89',
|
80
109
|
severity: Severity::HIGH,
|
81
110
|
cvssv2: '9.0',
|
82
|
-
remedy_guidance: %q{
|
83
|
-
|
84
|
-
|
85
|
-
|
111
|
+
remedy_guidance: %q{The only proven method to prevent against
|
112
|
+
SQL injection attacks while still maintaining full
|
113
|
+
application functionality is to use parameterized queries
|
114
|
+
(also known as prepared statements). When utilising this
|
115
|
+
method of querying the database any value supplied by the
|
116
|
+
client will be handled as a string value rather than part of
|
117
|
+
the SQL query. Additionally, when utilising parameterized
|
118
|
+
queries, the database engine will automatically check to
|
119
|
+
make sure the sting being used matches that of the column.
|
120
|
+
For example the database engine will check the user supplied
|
121
|
+
input is an integer if the database column is also an
|
122
|
+
integer. Depending on the framework being used,
|
123
|
+
implementation of parameterized queries will differ.
|
124
|
+
Other methods to help protect against SQL injection
|
125
|
+
vulnerabilities exist however are not as effective and may
|
126
|
+
either limit web application functionality, or remain
|
127
|
+
vulnerable.
|
128
|
+
Additional remediation activities such as configuring strict
|
129
|
+
database permissions to limit queries that can be executed
|
130
|
+
will further reduce the risk.},
|
86
131
|
remedy_code: '',
|
87
132
|
metasploitable: 'unix/webapp/arachni_sqlmap'
|
88
133
|
}
|
@@ -18,7 +18,7 @@
|
|
18
18
|
#
|
19
19
|
# @author Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
20
20
|
#
|
21
|
-
# @version 0.3.
|
21
|
+
# @version 0.3.2
|
22
22
|
#
|
23
23
|
# @see http://cwe.mitre.org/data/definitions/89.html
|
24
24
|
# @see http://capec.mitre.org/data/definitions/7.html
|
@@ -50,30 +50,73 @@ class Arachni::Modules::BlindTimingSQLInjection < Arachni::Module::Base
|
|
50
50
|
connection suddenly chokes up this module will probably produce false positives).},
|
51
51
|
elements: [ Element::FORM, Element::LINK, Element::COOKIE, Element::HEADER ],
|
52
52
|
author: 'Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>',
|
53
|
-
version: '0.3',
|
53
|
+
version: '0.3.2',
|
54
54
|
references: {
|
55
55
|
'OWASP' => 'http://www.owasp.org/index.php/Blind_SQL_Injection',
|
56
|
-
'MITRE - CAPEC' => 'http://capec.mitre.org/data/definitions/7.html'
|
56
|
+
'MITRE - CAPEC' => 'http://capec.mitre.org/data/definitions/7.html',
|
57
|
+
'WASC' => 'http://projects.webappsec.org/w/page/13246963/SQL%20Injection',
|
58
|
+
'W3 Schools' => 'http://www.w3schools.com/sql/sql_injection.asp'
|
57
59
|
},
|
58
60
|
targets: %w(MySQL PostgreSQL MSSQL),
|
59
61
|
issue: {
|
60
62
|
name: %q{Blind SQL Injection (timing attack)},
|
61
|
-
description: %q{
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
63
|
+
description: %q{Databases are used to store data. Due to the
|
64
|
+
requirement for dynamic content of today's web applications,
|
65
|
+
many web applications rely on a database backend to store
|
66
|
+
data that will be called upon and processed by the web
|
67
|
+
application (or other programs). Web applications retrieve
|
68
|
+
data from the database by using a Structured Query Language
|
69
|
+
(SQL) query. To meet demands of many developers, database
|
70
|
+
servers (such as MSSQL, MySQL, Oracle etc.) have
|
71
|
+
additional built-in functionality that can allow extensive
|
72
|
+
control of the database and interaction with the host
|
73
|
+
operating system itself. An SQL injection occurs when a
|
74
|
+
value originating from the clients request is used within an
|
75
|
+
SQL query without prior sanitisation. This could allow the
|
76
|
+
cyber-criminal to steal the data stored in the database, or
|
77
|
+
use the additional functionality of the database server to
|
78
|
+
ake complete control of the server. When discovered, this
|
79
|
+
allows cyber-criminals the ability to inject their own SQL
|
80
|
+
query (injected query will normally be placed within the
|
81
|
+
existing application query) and have it executed by the
|
82
|
+
database server. The successful exploitation of a SQL
|
83
|
+
injection can be a devastating to an organisation, and is
|
84
|
+
one of the most commonly exploited web application
|
85
|
+
vulnerabilities. To discover a SQL injection, Arachni
|
86
|
+
injects multiple different payloads into specific locations
|
87
|
+
within the client request. Arachni discovered that the
|
88
|
+
affected page and parameter may be vulnerable. This
|
89
|
+
injection was detected as Arachni was able to inject
|
90
|
+
specific SQL queries containing 'waits' and/or 'benchmarks'
|
91
|
+
that if vulnerable result in the responses for each request
|
92
|
+
being delayed before being send by the server. For example
|
93
|
+
if the injection payload told the database server to way for
|
94
|
+
20 seconds, then the client will receive the response 20
|
95
|
+
seconds after making the initial request. This is known as a
|
96
|
+
time based blind SQL injection vulnerability.},
|
68
97
|
tags: %w(sql blind timing injection database),
|
69
98
|
cwe: '89',
|
70
99
|
severity: Severity::HIGH,
|
71
100
|
cvssv2: '9.0',
|
72
|
-
remedy_guidance: %q{
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
101
|
+
remedy_guidance: %q{The only proven method to prevent against
|
102
|
+
SQL injection attacks while still maintaining full
|
103
|
+
application functionality is to use parameterized queries
|
104
|
+
(also known as prepared statements). When utilising this
|
105
|
+
method of querying the database any value supplied by the
|
106
|
+
client will be handled as a string value rather than part of
|
107
|
+
the SQL query. Additionally, when utilising parameterized
|
108
|
+
queries, the database engine will automatically check to
|
109
|
+
make sure the sting being used matches that of the column.
|
110
|
+
For example the database engine will check the user supplied
|
111
|
+
input is an integer if the database column is also an
|
112
|
+
integer. Depending on the framework being used,
|
113
|
+
implementation of parameterized queries will differ. Other methods to
|
114
|
+
help protect against SQL injection vulnerabilities exist
|
115
|
+
however are not as effective and may either limit web
|
116
|
+
application functionality, or remain vulnerable.
|
117
|
+
Additional remediation activities such as configuring strict
|
118
|
+
database permissions to limit queries that can be executed
|
119
|
+
will further reduce the risk.},
|
77
120
|
metasploitable: 'unix/webapp/arachni_sqlmap'
|
78
121
|
}
|
79
122
|
|
@@ -14,7 +14,6 @@
|
|
14
14
|
limitations under the License.
|
15
15
|
=end
|
16
16
|
|
17
|
-
#
|
18
17
|
# Unvalidated redirect audit module.
|
19
18
|
#
|
20
19
|
# It audits links, forms and cookies, injects URLs and checks the `Location`
|
@@ -22,10 +21,9 @@
|
|
22
21
|
#
|
23
22
|
# @author Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
24
23
|
#
|
25
|
-
# @version 0.1.
|
24
|
+
# @version 0.1.6
|
26
25
|
#
|
27
26
|
# @see http://www.owasp.org/index.php/Top_10_2010-A10-Unvalidated_Redirects_and_Forwards
|
28
|
-
#
|
29
27
|
class Arachni::Modules::UnvalidatedRedirect < Arachni::Module::Base
|
30
28
|
|
31
29
|
def self.payloads
|
@@ -50,20 +48,42 @@ class Arachni::Modules::UnvalidatedRedirect < Arachni::Module::Base
|
|
50
48
|
to determnine whether the attack was successful.},
|
51
49
|
elements: [Element::FORM, Element::LINK, Element::COOKIE, Element::HEADER],
|
52
50
|
author: 'Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>',
|
53
|
-
version: '0.1.
|
51
|
+
version: '0.1.6',
|
54
52
|
references: {
|
55
|
-
'OWASP
|
53
|
+
'OWASP' => 'http://www.owasp.org/index.php/Top_10_2010-A10-Unvalidated_Redirects_and_Forwards',
|
54
|
+
'WASC' => 'http://projects.webappsec.org/w/page/13246981/URL%20Redirector%20Abuse'
|
56
55
|
},
|
57
56
|
targets: %w(Generic),
|
58
57
|
|
59
58
|
issue: {
|
60
59
|
name: %q{Unvalidated redirect},
|
61
|
-
description: %q{
|
62
|
-
|
60
|
+
description: %q{Web applications occasionally use
|
61
|
+
parameter values to store the address of the page to which
|
62
|
+
the client will be redirected. As an example, this is
|
63
|
+
often seen in error pages where the error page is the page
|
64
|
+
to be displayed. For example
|
65
|
+
'yoursite.com/page.asp?redirect=www.yoursite.com/404.asp'.
|
66
|
+
An unvalidated redirect occurs when the client is able to
|
67
|
+
modify the affected parameter value in the request and have
|
68
|
+
a redirect response to the new value sent by the server.
|
69
|
+
Therefore, redirecting the client to that site. For example,
|
70
|
+
the following request 'yoursite.com/page.asp?redirect=www.anothersite.com'
|
71
|
+
will redirect to 'anothersite.com'. Cyber-criminals will abuse
|
72
|
+
these vulnerabilities in social engineering attacks to get
|
73
|
+
users to unknowingly visit a malicious site hosted by the
|
74
|
+
cyber-criminal. Arachni has discovered that the server does
|
75
|
+
not validate the parameter value prior to redirecting the
|
76
|
+
client to the injected value.},
|
77
|
+
tags: %w(unvalidated redirect injection header location),
|
63
78
|
cwe: '819',
|
64
79
|
severity: Severity::MEDIUM,
|
65
|
-
remedy_guidance: %q{
|
66
|
-
|
80
|
+
remedy_guidance: %q{The application should ensure that the
|
81
|
+
supplied value for a redirect is permitted. This can be
|
82
|
+
achieved by performing whitelisting on the parameter value.
|
83
|
+
The whitelist should contain a list of pages or sites that
|
84
|
+
the application is permitted to redirect users to. If the
|
85
|
+
supplied value does not match any value in the whitelist
|
86
|
+
then the server should redirect to a standard error page.}
|
67
87
|
}
|
68
88
|
}
|
69
89
|
end
|
data/modules/audit/xpath.rb
CHANGED
@@ -14,17 +14,15 @@
|
|
14
14
|
limitations under the License.
|
15
15
|
=end
|
16
16
|
|
17
|
-
#
|
18
17
|
# XPath Injection audit module.
|
19
18
|
#
|
20
19
|
# @author Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
21
20
|
#
|
22
|
-
# @version 0.1.
|
21
|
+
# @version 0.1.4
|
23
22
|
#
|
24
23
|
# @see http://cwe.mitre.org/data/definitions/91.html
|
25
24
|
# @see http://www.owasp.org/index.php/XPATH_Injection
|
26
25
|
# @see http://www.owasp.org/index.php/Testing_for_XPath_Injection_%28OWASP-DV-010%29
|
27
|
-
#
|
28
26
|
class Arachni::Modules::XPathInjection < Arachni::Module::Base
|
29
27
|
|
30
28
|
def self.error_strings
|
@@ -50,19 +48,48 @@ class Arachni::Modules::XPathInjection < Arachni::Module::Base
|
|
50
48
|
description: %q{XPath injection module},
|
51
49
|
elements: [ Element::FORM, Element::LINK, Element::COOKIE, Element::HEADER ],
|
52
50
|
author: 'Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>',
|
53
|
-
version: '0.1.
|
51
|
+
version: '0.1.4',
|
54
52
|
references: {
|
55
|
-
'OWASP' => 'http://www.owasp.org/index.php/XPATH_Injection'
|
53
|
+
'OWASP' => 'http://www.owasp.org/index.php/XPATH_Injection',
|
54
|
+
'WASC' => 'http://projects.webappsec.org/w/page/13247005/XPath%20Injection'
|
56
55
|
},
|
57
56
|
targets: %w(General PHP Java dotNET libXML2),
|
58
57
|
issue: {
|
59
58
|
name: %q{XPath Injection},
|
60
|
-
description: %q{
|
59
|
+
description: %q{XML Path Language (XPath) queries are used
|
60
|
+
by web applications for selecting nodes from XML documents.
|
61
|
+
Once selected, the value of these nodes can then be used by
|
62
|
+
the application. A simple example for the use of XML
|
63
|
+
documents is to store user information. As part of the
|
64
|
+
authentication process, the application will perform an
|
65
|
+
XPath query to confirm the login credentials and retrieve
|
66
|
+
that user's information to use in the following request.
|
67
|
+
XPath injection occurs where untrusted data is used to build
|
68
|
+
the XPath query. Cyber-criminals may abuse this injection
|
69
|
+
vulnerability to bypass authentication, query other user's
|
70
|
+
information, or, if the XML document contains privileged user
|
71
|
+
credentials, allow the cyber-criminal to escalate their
|
72
|
+
privileges. Arachni injected XPath queries into the page,
|
73
|
+
and based on the responses from the server, has discovered
|
74
|
+
the page is vulnerable to XPath injection.},
|
61
75
|
tags: %w(xpath database error injection regexp),
|
62
76
|
cwe: '91',
|
63
77
|
severity: Severity::HIGH,
|
64
|
-
remedy_guidance:
|
65
|
-
|
78
|
+
remedy_guidance: %q{The preferred way to protect against XPath
|
79
|
+
injection is to utilise parameterized (also known as prepared)
|
80
|
+
XPath queries. When utilising this method of querying the
|
81
|
+
XML document any value supplied by the client will be
|
82
|
+
handled as a string rather than part of the XPath query. An
|
83
|
+
alternative to parameterized queries it to use precompiled
|
84
|
+
XPath queries. Precompiled XPath queries are not generated
|
85
|
+
dynamically and will therefor never process user supplied
|
86
|
+
input as XPath. Depending on the framework being used,
|
87
|
+
implementation of parameterized queries or precompiled queries
|
88
|
+
will differ. Depending on the framework being used by the
|
89
|
+
application parameterized queries and/or precompiled queries
|
90
|
+
may not be possible. In this case, input filtering on all
|
91
|
+
untrusted input should occur to ensure that it is not
|
92
|
+
included as part of the query.}
|
66
93
|
}
|
67
94
|
}
|
68
95
|
end
|