arachni 0.4.6 → 0.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +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
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
ZDliMzg1ZDM5Zjc3YjU2Njg5NmY0MDVmY2I5ZmYwYzNmNmIwMTRhZA==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
ZGExNDM4ZjUyMzhhOTY2MTEyODY4MThjMjQ0MDE0Njg2MTBkNTY1Yw==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
MzMyMzU2Yjg3ZjY3ZmVhZmU4ODViN2NjMTE2NDRhZjdiNTBhN2VhYTdlMWEx
|
|
10
|
+
MjE5ZmFkNjIzNjNmYWVkOWZmMzI1ZDBhOWFlYjY4NmFjNmVmNmI2NmZhYzE3
|
|
11
|
+
MTAwZDhjMDFjYmE5YWJhYmE5YzZjOTA5ZGJmM2Q3MzEzZTYzMGQ=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
ZTA0ZWFhNDE2Mjk2ODcwNjk0MWEyNjMyZGI3NGRmMTQyOGMxYTJkMzUwZDFj
|
|
14
|
+
Y2NlMzlmODNjNzdkNWJiODU0ZTllZjRmODQ1MjQ2Y2Y0ZTAwYzIxOGI2YjRj
|
|
15
|
+
ZTVlNDU4MGViZjY5ODU1ZmZlOTg0MzQyOTg4NDNmOGIwNjI0ZDY=
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# ChangeLog
|
|
2
2
|
|
|
3
|
+
## 0.4.7 _(April 12, 2014)_
|
|
4
|
+
|
|
5
|
+
- `Spider`
|
|
6
|
+
- Fixed mixed up status messages upon out-of-scope redirections.
|
|
7
|
+
- `HTTP`
|
|
8
|
+
- `disable_ssl_host_verification` set to `true`.
|
|
9
|
+
- `Element`
|
|
10
|
+
- `Capabilities::Auditable::Taint`
|
|
11
|
+
- Fixed bug when checking for trust level of issue when there's no match.
|
|
12
|
+
- `Form`
|
|
13
|
+
- Updated to handle empty base-href values.
|
|
14
|
+
- Plugins
|
|
15
|
+
- `autologin`
|
|
16
|
+
- Updated to handle stacked post-login redirects.
|
|
17
|
+
- Added debugging information for failed logins.
|
|
18
|
+
- `proxy`
|
|
19
|
+
- Fixed forwarding of request bodies.
|
|
20
|
+
- Modules
|
|
21
|
+
- All
|
|
22
|
+
- Updated descriptions and remedies.
|
|
23
|
+
|
|
3
24
|
## 0.4.6 _(January 1, 2014)_
|
|
4
25
|
|
|
5
26
|
- CLI user interfaces
|
data/Gemfile
CHANGED
data/README.md
CHANGED
data/lib/arachni/element/form.rb
CHANGED
|
@@ -736,12 +736,10 @@ class Form < Arachni::Element::Base
|
|
|
736
736
|
#
|
|
737
737
|
def self.from_document( url, document )
|
|
738
738
|
document = Nokogiri::HTML( document.to_s ) if !document.is_a?( Nokogiri::HTML::Document )
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
base_url = url
|
|
744
|
-
end
|
|
739
|
+
|
|
740
|
+
base_url = document.search( '//base[@href]' )[0]['href'] rescue nil
|
|
741
|
+
base_url = url if base_url.to_s.empty?
|
|
742
|
+
|
|
745
743
|
document.search( '//form' ).map do |cform|
|
|
746
744
|
next if !(form = form_from_element( base_url, cform ))
|
|
747
745
|
form.url = url
|
data/lib/arachni/http.rb
CHANGED
|
@@ -144,6 +144,7 @@ class HTTP
|
|
|
144
144
|
follow_location: false,
|
|
145
145
|
max_redirects: opts.redirect_limit,
|
|
146
146
|
disable_ssl_peer_verification: true,
|
|
147
|
+
disable_ssl_host_verification: true,
|
|
147
148
|
timeout: opts.http_timeout || HTTP_TIMEOUT,
|
|
148
149
|
username: opts.http_username,
|
|
149
150
|
password: opts.http_password
|
data/lib/arachni/parser.rb
CHANGED
|
@@ -333,7 +333,7 @@ class Parser
|
|
|
333
333
|
exception_jail( false ){ self.class.extractors[name].new.run( doc ) }
|
|
334
334
|
end.flatten.uniq.compact.
|
|
335
335
|
map { |path| to_absolute( path ) }.compact.uniq.
|
|
336
|
-
reject { |path| skip?( path ) }
|
|
336
|
+
reject { |path| path.to_s.empty? || skip?( path ) }
|
|
337
337
|
rescue ::Exception => e
|
|
338
338
|
print_error e.to_s
|
|
339
339
|
print_error_backtrace e
|
data/lib/arachni/spider.rb
CHANGED
|
@@ -417,8 +417,20 @@ class Spider
|
|
|
417
417
|
if res.redirection? && res.location
|
|
418
418
|
@redirects << res.request.url
|
|
419
419
|
location = to_absolute( res.location, res.request.url )
|
|
420
|
-
|
|
421
|
-
|
|
420
|
+
|
|
421
|
+
skipped = false
|
|
422
|
+
redir_limit = false
|
|
423
|
+
|
|
424
|
+
if (redir_limit = hit_redirect_limit?) || (skipped = skip?( location ))
|
|
425
|
+
|
|
426
|
+
if skipped
|
|
427
|
+
print_info "Ignoring redirection due to exclusion criteria: #{location}"
|
|
428
|
+
end
|
|
429
|
+
|
|
430
|
+
if redir_limit
|
|
431
|
+
print_info "Redirect limit reached, skipping: #{location}"
|
|
432
|
+
end
|
|
433
|
+
|
|
422
434
|
decrease_pending
|
|
423
435
|
next
|
|
424
436
|
end
|
data/lib/version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.4.
|
|
1
|
+
0.4.7
|
|
@@ -14,14 +14,13 @@
|
|
|
14
14
|
limitations under the License.
|
|
15
15
|
=end
|
|
16
16
|
|
|
17
|
-
#
|
|
18
17
|
# It's designed to work with PHP, Perl, Python, Java, ASP and Ruby
|
|
19
18
|
# but still needs some more testing.
|
|
20
19
|
#
|
|
21
20
|
#
|
|
22
21
|
# @author Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
|
23
22
|
#
|
|
24
|
-
# @version 0.2
|
|
23
|
+
# @version 0.2.1
|
|
25
24
|
#
|
|
26
25
|
# @see http://cwe.mitre.org/data/definitions/94.html
|
|
27
26
|
# @see http://php.net/manual/en/function.eval.php
|
|
@@ -29,7 +28,6 @@
|
|
|
29
28
|
# @see http://docs.python.org/py3k/library/functions.html#eval
|
|
30
29
|
# @see http://www.aspdev.org/asp/asp-eval-execute/
|
|
31
30
|
# @see http://en.wikipedia.org/wiki/Eval#Ruby
|
|
32
|
-
#
|
|
33
31
|
class Arachni::Modules::CodeInjection < Arachni::Module::Base
|
|
34
32
|
|
|
35
33
|
def self.rand1
|
|
@@ -81,7 +79,7 @@ class Arachni::Modules::CodeInjection < Arachni::Module::Base
|
|
|
81
79
|
was successful.},
|
|
82
80
|
elements: [ Element::FORM, Element::LINK, Element::COOKIE, Element::HEADER ],
|
|
83
81
|
author: 'Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>',
|
|
84
|
-
version: '0.2',
|
|
82
|
+
version: '0.2.1',
|
|
85
83
|
references: {
|
|
86
84
|
'PHP' => 'http://php.net/manual/en/function.eval.php',
|
|
87
85
|
'Perl' => 'http://perldoc.perl.org/functions/eval.html',
|
|
@@ -91,16 +89,44 @@ class Arachni::Modules::CodeInjection < Arachni::Module::Base
|
|
|
91
89
|
targets: %w(PHP Perl Python ASP),
|
|
92
90
|
issue: {
|
|
93
91
|
name: %q{Code injection},
|
|
94
|
-
description: %q{
|
|
95
|
-
|
|
92
|
+
description: %q{A modern web application will be reliant on
|
|
93
|
+
several different programming languages. These languages can
|
|
94
|
+
be broken up into two flavours. These are client side
|
|
95
|
+
languages such as those that run in the browser eg.
|
|
96
|
+
JavaScript and HTML, and server side languages that are
|
|
97
|
+
executed by the server (ASP, PHP, JSP, etc) to form the
|
|
98
|
+
dynamic pages (client side code) that are then sent to the
|
|
99
|
+
client. Because all server side code should be executed by
|
|
100
|
+
the server, it should only ever come from a trusted source.
|
|
101
|
+
Code injection occurs when the server takes untrusted server
|
|
102
|
+
side code (ie. From the client) and executes the code as if
|
|
103
|
+
it were on the server. Cyber-criminals will abuse this
|
|
104
|
+
weakness to execute their own arbitrary code on the server,
|
|
105
|
+
and could result in complete compromise of the server.
|
|
106
|
+
Arachni was able to inject specific server side code and
|
|
107
|
+
have the executed output from the code contained within the
|
|
108
|
+
server response. This indicates that proper input
|
|
109
|
+
sanitisation is not occurring.},
|
|
96
110
|
tags: %w(code injection regexp),
|
|
97
111
|
cwe: '94',
|
|
98
112
|
severity: Severity::HIGH,
|
|
99
113
|
cvssv2: '7.5',
|
|
100
|
-
remedy_guidance: %q{
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
114
|
+
remedy_guidance: %q{ It is recommended that untrusted or
|
|
115
|
+
invalidated data is never stored where it may then be
|
|
116
|
+
executed as server side code. To validate data, the
|
|
117
|
+
application should ensure that the supplied value contains
|
|
118
|
+
only the characters that are required to perform the
|
|
119
|
+
required action. For example, where a username is required,
|
|
120
|
+
then no non-alpha characters should be accepted.
|
|
121
|
+
Additionally, within PHP, the "eval" and "preg_replace"
|
|
122
|
+
functions should be avoided as these functions can easily be
|
|
123
|
+
used to execute untrusted data. If these functions are used
|
|
124
|
+
within the application then these parts should be rewritten.
|
|
125
|
+
The exact way to rewrite the code depends on what the code
|
|
126
|
+
in question does, so there is no general pattern for doing
|
|
127
|
+
so. Once the code has been rewritten the eval() function
|
|
128
|
+
should be disabled. This can be achieved by adding eval to
|
|
129
|
+
disable_funcions within the php.ini file.},
|
|
104
130
|
remedy_code: '',
|
|
105
131
|
metasploitable: 'unix/webapp/arachni_php_eval'
|
|
106
132
|
}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
#
|
|
19
19
|
# @author Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
|
20
20
|
#
|
|
21
|
-
# @version 0.
|
|
21
|
+
# @version 0.2
|
|
22
22
|
class Arachni::Modules::CodeExecutionPHPInputWrapper < Arachni::Module::Base
|
|
23
23
|
|
|
24
24
|
def self.options
|
|
@@ -56,18 +56,51 @@ class Arachni::Modules::CodeExecutionPHPInputWrapper < Arachni::Module::Base
|
|
|
56
56
|
uses the php://input wrapper to try and load it.},
|
|
57
57
|
elements: [ Element::FORM, Element::LINK, Element::COOKIE, Element::HEADER ],
|
|
58
58
|
author: 'Tasos "Zapotek" Laskos <tasos.laskos@gmail.com> ',
|
|
59
|
-
version: '0.
|
|
59
|
+
version: '0.2',
|
|
60
60
|
references: {
|
|
61
61
|
'OWASP' => 'https://www.owasp.org/index.php/Top_10_2007-Malicious_File_Execution'
|
|
62
62
|
},
|
|
63
63
|
targets: %w(PHP),
|
|
64
64
|
issue: {
|
|
65
65
|
name: %q{Code injection (php://input wrapper)},
|
|
66
|
-
description: %q{
|
|
67
|
-
|
|
66
|
+
description: %q{A modern web application will be reliant on
|
|
67
|
+
several different programming languages. These languages can
|
|
68
|
+
be broken up into two flavours. These are client side
|
|
69
|
+
languages such as those that run in the browser eg.
|
|
70
|
+
JavaScript and HTML, and server side languages that are
|
|
71
|
+
executed by the server (ASP, PHP, JSP, etc) to form the
|
|
72
|
+
dynamic pages (client side code) that are then sent to the
|
|
73
|
+
client. Because all server side code should be executed by
|
|
74
|
+
the server, it should only ever come from a trusted source.
|
|
75
|
+
Code injection occurs when the server takes untrusted server
|
|
76
|
+
side code (ie. From the client) and executes the code as if
|
|
77
|
+
it were on the server. Cyber-criminals will abuse this
|
|
78
|
+
weakness to execute their own arbitrary code on the server,
|
|
79
|
+
and could result in complete compromise of the server.
|
|
80
|
+
Arachni was able to inject specific server side code wrapped
|
|
81
|
+
within a php wrapper (<?php ... ?>) and have the executed
|
|
82
|
+
output from the code contained within the server response.
|
|
83
|
+
This indicates that proper input sanitisation is not
|
|
84
|
+
occurring..},
|
|
68
85
|
tags: %w(remote injection php code execution),
|
|
69
86
|
cwe: '94',
|
|
70
|
-
severity: Severity::HIGH
|
|
87
|
+
severity: Severity::HIGH,
|
|
88
|
+
remedy_guidance: %q{It is recommended that untrusted or
|
|
89
|
+
invalidated data is never stored where it may then be
|
|
90
|
+
executed as server side code. To validate data, the
|
|
91
|
+
application should ensure that the supplied value contains
|
|
92
|
+
nly the characters that are required to perform the required
|
|
93
|
+
action. For example, where a username is required, then no
|
|
94
|
+
non-alpha characters should be accepted. Additionally,
|
|
95
|
+
within PHP, the "eval" and "preg_replace" functions should
|
|
96
|
+
be avoided as these functions can easily be used to execute
|
|
97
|
+
untrusted data. If these functions are used within the
|
|
98
|
+
application then these parts should be rewritten. The exact
|
|
99
|
+
way to rewrite the code depends on what the code in question
|
|
100
|
+
does, so there is no general pattern for doing so. Once the
|
|
101
|
+
code has been rewritten the eval() function should be
|
|
102
|
+
disabled. This can be achieved by adding eval to
|
|
103
|
+
disable_funcions within the php.ini file.},
|
|
71
104
|
}
|
|
72
105
|
|
|
73
106
|
}
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
#
|
|
24
24
|
# @author Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
|
25
25
|
#
|
|
26
|
-
# @version 0.
|
|
26
|
+
# @version 0.4
|
|
27
27
|
#
|
|
28
28
|
# @see http://cwe.mitre.org/data/definitions/94.html
|
|
29
29
|
# @see http://php.net/manual/en/function.eval.php
|
|
@@ -62,7 +62,7 @@ class Arachni::Modules::CodeInjectionTiming < Arachni::Module::Base
|
|
|
62
62
|
was successful using a time delay.},
|
|
63
63
|
elements: [ Element::FORM, Element::LINK, Element::COOKIE, Element::HEADER ],
|
|
64
64
|
author: 'Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>',
|
|
65
|
-
version: '0.
|
|
65
|
+
version: '0.4',
|
|
66
66
|
references: {
|
|
67
67
|
'PHP' => 'http://php.net/manual/en/function.eval.php',
|
|
68
68
|
'Perl' => 'http://perldoc.perl.org/functions/eval.html',
|
|
@@ -74,21 +74,44 @@ class Arachni::Modules::CodeInjectionTiming < Arachni::Module::Base
|
|
|
74
74
|
|
|
75
75
|
issue: {
|
|
76
76
|
name: %q{Code injection (timing attack)},
|
|
77
|
-
description: %q{
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
77
|
+
description: %q{A modern web application will be reliant on
|
|
78
|
+
several different programming languages. These languages can
|
|
79
|
+
be broken up into two flavours. These are client side
|
|
80
|
+
languages such as those that run in the browser eg.
|
|
81
|
+
JavaScript and HTML, and server side languages that are
|
|
82
|
+
executed by the server (ASP, PHP, JSP, etc) to form the
|
|
83
|
+
dynamic pages (client side code) that are then sent to the
|
|
84
|
+
client. Because all server side code should be executed by
|
|
85
|
+
the server, it should only ever come from a trusted source.
|
|
86
|
+
Code injection occurs when the server takes untrusted server
|
|
87
|
+
side code (ie. From the client) and executes the code as if
|
|
88
|
+
it were on the server. Cyber-criminals will abuse this
|
|
89
|
+
weakness to execute their own arbitrary code on the server,
|
|
90
|
+
and could result in complete compromise of the server. By
|
|
91
|
+
injecting server side code that is known to take a specific
|
|
92
|
+
amount of time to execute Arachni was able to detect time
|
|
93
|
+
based code injection. This indicates that proper input
|
|
94
|
+
sanitisation is not occurring.},
|
|
84
95
|
tags: %w(code injection timing blind),
|
|
85
96
|
cwe: '94',
|
|
86
97
|
severity: Severity::HIGH,
|
|
87
98
|
cvssv2: '7.5',
|
|
88
|
-
remedy_guidance: %q{
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
99
|
+
remedy_guidance: %q{It is recommended that untrusted or
|
|
100
|
+
invalidated data is never stored where it may then be
|
|
101
|
+
executed as server side code. To validate data, the
|
|
102
|
+
application should ensure that the supplied value contains
|
|
103
|
+
nly the characters that are required to perform the required
|
|
104
|
+
action. For example, where a username is required, then no
|
|
105
|
+
non-alpha characters should be accepted. Additionally,
|
|
106
|
+
within PHP, the "eval" and "preg_replace" functions should
|
|
107
|
+
be avoided as these functions can easily be used to execute
|
|
108
|
+
untrusted data. If these functions are used within the
|
|
109
|
+
application then these parts should be rewritten. The exact
|
|
110
|
+
way to rewrite the code depends on what the code in question
|
|
111
|
+
does, so there is no general pattern for doing so. Once the
|
|
112
|
+
code has been rewritten the eval() function should be
|
|
113
|
+
disabled. This can be achieved by adding eval to
|
|
114
|
+
disable_funcions within the php.ini file.},
|
|
92
115
|
remedy_code: '',
|
|
93
116
|
metasploitable: 'unix/webapp/arachni_php_eval'
|
|
94
117
|
}
|
data/modules/audit/csrf.rb
CHANGED
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
#
|
|
43
43
|
# @author Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
|
44
44
|
#
|
|
45
|
-
# @version 0.3.
|
|
45
|
+
# @version 0.3.2
|
|
46
46
|
#
|
|
47
47
|
# @see http://en.wikipedia.org/wiki/Cross-site_request_forgery
|
|
48
48
|
# @see http://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)
|
|
@@ -167,27 +167,57 @@ class Arachni::Modules::CSRF < Arachni::Module::Base
|
|
|
167
167
|
It requires a logged-in user's cookie-jar.},
|
|
168
168
|
elements: [ Element::FORM ],
|
|
169
169
|
author: 'Tasos "Zapotek" Laskos <tasos.laskos@gmail.com> ',
|
|
170
|
-
version: '0.3.
|
|
170
|
+
version: '0.3.2',
|
|
171
171
|
references: {
|
|
172
172
|
'Wikipedia' => 'http://en.wikipedia.org/wiki/Cross-site_request_forgery',
|
|
173
173
|
'OWASP' => 'http://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)',
|
|
174
|
-
'CGI Security' => 'http://www.cgisecurity.com/csrf-faq.html'
|
|
174
|
+
'CGI Security' => 'http://www.cgisecurity.com/csrf-faq.html',
|
|
175
|
+
'WASC' => 'http://projects.webappsec.org/w/page/13246919/Cross%20Site%20Request%20Forgery'
|
|
175
176
|
},
|
|
176
177
|
targets: %w(Generic),
|
|
177
178
|
|
|
178
179
|
issue: {
|
|
179
180
|
name: %q{Cross-Site Request Forgery},
|
|
180
|
-
description: %q{
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
181
|
+
description: %q{In the majority of today's web applications,
|
|
182
|
+
clients are required to submit forms. When these forms are
|
|
183
|
+
submitted that contents within the form are typically
|
|
184
|
+
processed by the server. An example of such a form is when
|
|
185
|
+
an administrator wishes to create a new user for the
|
|
186
|
+
application. In the simplest form the administrator would
|
|
187
|
+
submit a form with the users Name, Password, and Role (level
|
|
188
|
+
of access). Cross Site Request Forgery (CSRF) is where an
|
|
189
|
+
administrator could be tricked into clicking on a link that
|
|
190
|
+
if logged into the application would automatically submit
|
|
191
|
+
the form without any further interaction. Cyber-criminals
|
|
192
|
+
will look for sites where sensitive functions are performed
|
|
193
|
+
in this vulnerable manner, and then craft malicious requests
|
|
194
|
+
that will be used against clients in a social engineering
|
|
195
|
+
attack. There are 3 things that are required for a CSRF
|
|
196
|
+
attack to occur. 1. The form must perform a sensitive action
|
|
197
|
+
2. The victim (admin the example above) must have an active
|
|
198
|
+
session 3. Most importantly, all parameter values must be
|
|
199
|
+
known or guessable. Arachni discovered that all parameters
|
|
200
|
+
within the form were known or predictable, and therefore
|
|
201
|
+
could be vulnerable to CSRF. Manual verification may be
|
|
202
|
+
required to check whether the submission will then perform a
|
|
203
|
+
sensitive action such as reset a password, modify user
|
|
204
|
+
profiles, post content for a forum, etc.},
|
|
185
205
|
tags: %w(csrf rdiff form token),
|
|
186
206
|
cwe: '352',
|
|
187
207
|
severity: Severity::HIGH,
|
|
188
|
-
remedy_guidance: %q{
|
|
189
|
-
|
|
190
|
-
|
|
208
|
+
remedy_guidance: %q{Based on the risk determined by manual
|
|
209
|
+
verification of whether the submission will then perform a
|
|
210
|
+
sensitive action, it is recommended that the server utilise
|
|
211
|
+
CSRF tokens. These can be configured in such a way that each
|
|
212
|
+
session generates a new CSRF token or such that each
|
|
213
|
+
individual request requires a new token. CSRF tokens are
|
|
214
|
+
passed to the server as a normal parameter and not as a
|
|
215
|
+
cookie value. It is equally important that the server track
|
|
216
|
+
and maintain the status of each token, this will enable a
|
|
217
|
+
server to reject any request that does not contain a valid
|
|
218
|
+
token, and therefore prevent any cyber-criminal from knowing
|
|
219
|
+
or guessing all parameter values. For examples of framework
|
|
220
|
+
specific remediation, refer to the references.}
|
|
191
221
|
}
|
|
192
222
|
}
|
|
193
223
|
end
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
#
|
|
19
19
|
# @author Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
|
20
20
|
#
|
|
21
|
-
# @version 0.1.
|
|
21
|
+
# @version 0.1.2
|
|
22
22
|
#
|
|
23
23
|
# @see http://cwe.mitre.org/data/definitions/98.html
|
|
24
24
|
# @see https://www.owasp.org/index.php/PHP_File_Inclusion
|
|
@@ -103,7 +103,7 @@ class Arachni::Modules::FileInclusion < Arachni::Module::Base
|
|
|
103
103
|
based on the presence of relevant content or errors in the HTTP responses.},
|
|
104
104
|
elements: [ Element::FORM, Element::LINK, Element::COOKIE, Element::HEADER ],
|
|
105
105
|
author: 'Tasos "Zapotek" Laskos <tasos.laskos@gmail.com> ',
|
|
106
|
-
version: '0.1.
|
|
106
|
+
version: '0.1.2',
|
|
107
107
|
references: {
|
|
108
108
|
'OWASP' => 'https://www.owasp.org/index.php/PHP_File_Inclusion'
|
|
109
109
|
},
|
|
@@ -111,13 +111,43 @@ class Arachni::Modules::FileInclusion < Arachni::Module::Base
|
|
|
111
111
|
|
|
112
112
|
issue: {
|
|
113
113
|
name: %q{File Inclusion},
|
|
114
|
-
description: %q{
|
|
115
|
-
of a
|
|
114
|
+
description: %q{Web applications occasionally use
|
|
115
|
+
parameter values to store the location of a file required by
|
|
116
|
+
the server. An example of this is often seen in error pages
|
|
117
|
+
where the actual file path for the error page is called the
|
|
118
|
+
parameter value. For example
|
|
119
|
+
'yoursite.com/error.php?page=404.php'. A file inclusion
|
|
120
|
+
occurs when the parameter value (ie. path to file being
|
|
121
|
+
called by the server) can be substituted with the path of
|
|
122
|
+
another resource on the same server, and the server then
|
|
123
|
+
displays that resource as text without processing it.
|
|
124
|
+
Therefore revealing the server side source code. Cyber-
|
|
125
|
+
criminals will abuse this vulnerability to view restricted
|
|
126
|
+
files or the source code of various files on the server.
|
|
127
|
+
Arachni discovered that it was possible to substitute a
|
|
128
|
+
parameter value with another resource and have the server
|
|
129
|
+
return the contents of the resource to the client within
|
|
130
|
+
the response. },
|
|
116
131
|
tags: %w(file inclusion error injection regexp),
|
|
117
132
|
cwe: '98',
|
|
118
133
|
severity: Severity::HIGH,
|
|
119
|
-
remedy_guidance: %q{
|
|
120
|
-
|
|
134
|
+
remedy_guidance: %q{ It is recommended that untrusted or
|
|
135
|
+
invalidated data is never used to form a literal file
|
|
136
|
+
include request. To validate data, the application should
|
|
137
|
+
ensure that the supplied value for a file is permitted. This
|
|
138
|
+
can be achieved by performing whitelisting on the parameter
|
|
139
|
+
value. The whitelist should contain a list of pages that the
|
|
140
|
+
application is permitted to fetch resources from. If the
|
|
141
|
+
supplied value does not match any value in the whitelist
|
|
142
|
+
then the server should redirect to a standard error page.
|
|
143
|
+
In some scenarios where dynamic content is being requested
|
|
144
|
+
it may not be possible to perform validation of a list of
|
|
145
|
+
trusted resources, therefor the list must also become
|
|
146
|
+
dynamic (update as the files change), or perform filtering
|
|
147
|
+
to remove any unrequired user input such as semicolons or
|
|
148
|
+
periods etc. and only permit a-z0-9. It is also advised that
|
|
149
|
+
sensitive file are not stored within the web root, and that
|
|
150
|
+
the user permissions enforced by the directory are correct.}
|
|
121
151
|
}
|
|
122
152
|
|
|
123
153
|
}
|