Local File Inclusion
High Web Application Scanning Plugin ID 98125
SynopsisLocal File Inclusion
DescriptionWeb applications occasionally use parameter values to store the location of a file which will later be required by the server.
An example of this is often seen in error pages, where the actual file path for the error page is stored in a parameter value -- for example `example.com/error.php?page=404.php`.
A file inclusion occurs when the parameter value (ie. path to file) can be substituted with the path of another resource on the same server, effectively allowing the displaying of arbitrary, and possibly restricted/sensitive, files.
Scanner discovered that it was possible to substitute a parameter value with another resource and have the server return the contents of the resource to the client within the response.
SolutionIt is recommended that untrusted data is never used to form a file location to be included.
To validate data, the application should ensure that the supplied value for a file is permitted. This can be achieved by performing whitelisting on the parameter value, by matching it against a list of permitted files. If the supplied value does not match any value in the whitelist, then the server should redirect to a standard error page.
In some scenarios, where dynamic content is being requested, it may not be possible to perform validation against a list of trusted resources, therefore the list must also become dynamic (updated as the files change), or perform filtering to remove extraneous user input (such as semicolons, periods etc.) and only permit `a-z0-9`.
It is also advised that sensitive files are not stored within the web root and that the user permissions enforced by the directory are correct.