FortiWeb Recursive URL Decoding by default disabled causing WAF bypass

Summary

FortiWeb's "Recursive URL Decoding" feature can detect URL-based attacks (among which XSS and SQL injection attempts) even when the malicious URL is recursively encoded. However, this feature is not enabled by default in FortiWeb's system settings for FortiWeb version 6.0.0 and below.

Affected Products

FortiWeb 6.0.0 and below.

Solutions

Upgrade to FortiWeb 6.0.1 or newer versions or use workaround.
Workaround
For FortiWeb 6.0.0 and below, manually enabling this feature is recommended.
From the FortiWeb GUI, it can be enabled under ystem > Config > Advanced in the "Recursive URL Decoding" (refer to: http://help.fortinet.com/fweb/571/Content/FortiWeb/fortiweb-admin/advanced_settings.htm for more info).
From the FortiWeb CLI, it can be enabled with the following commands:
config system advanced
set circulate-url-decode enable
end
Update History
05-16-2018 Initial version.
08-23-2018 Default secure setting supported in 6.0.1

Acknowledgement

Fortinet is pleased to thank independent security researcher SecuNinja (http://twitter.com/secuninja) for reporting this FortiWeb operational risk under responsible disclosure.