id: raw-unsafe-path info: name: Test RAW Unsafe Paths author: pd-team severity: info description: > - https://github.com/projectdiscovery/nuclei/pull/3211 - https://github.com/projectdiscovery/nuclei/pull/3127 reference: # adding expected results here for context and debugging - "1337" - "1337?with=param" - "/some%0A/%0D" - "/%20test%0a" - "/text4shell/attack?search=$%7bscript:javascript:java.lang.Runtime.getRuntime().exec('nslookup%20{}.getparam')%7d" - "/test/..;/..;/" - "/xyz/%u2s/%invalid" - "//CFIDE/wizards/common/utils.cfc" # Test all unsafe URL Handling Edgecases http: - raw: # relative path without leading slash - |+ GET 1337 HTTP/1.1 Host: scanme.sh # same but with param - |+ GET 1337?with=param HTTP/1.1 Host: scanme.sh # url encoded characters in path - |+ GET /some%0A/%0D HTTP/1.1 Host: scanme.sh # test unsupported chars in path - |+ GET /%20test%0a HTTP/1.1 Host: scanme.sh # test payload integrity params - |+ GET /text4shell/attack?search=$%7bscript:javascript:java.lang.Runtime.getRuntime().exec('nslookup%20{}.getparam')%7d HTTP/1.1 Host: scanme.sh # test for missing trailing slash - |+ GET /test/..;/..;/ HTTP/1.1 Host: scanme.sh Origin: {{BaseURL}} # test relative path with invalid/corrupted characters - |+ GET /xyz/%u2s/%invalid HTTP/1.1 Host: scanme.sh # test relative path start with // (should not be removed) - |+ GET //CFIDE/wizards/common/utils.cfc HTTP/1.1 Host: scanme.sh unsafe: true matchers: - type: status status: - 200