Limited LFI
Medium
G
GSA Bounty
Submitted None
Actions:
Reported by
mariuszpoplawski
Vulnerability Details
Technical details and impact analysis
## Summary:
Due to improper parameter sensitization local file inclusion is possible. LFI is limited as we were not able to truncate the end of string.
## Description:
Application root is located at
/var/www/dashboard/new/public
Due to URL Manipulation we are able to raed file from
/var/www/dashboard/new/
Which should not be allowed.
Below we present function Index in Docs class -> parameter $page is set in URL in below example "..%2fREADME"
Path is constructed as follow $docs_path = $docs_path . $page . '.md'; then file is read in file_get_contents and returned in application GUI.
LFI is limited due to " . '.md';" part, but may be bypassed in futures, we have not found a way to bypass it thats why the risk was set to low. In case of bugs combination , PHP bugs etc.. in future this may be escalated. User should not control any part of "file_get_contents" function
```
public function index($page = 'main')
{
$data = array();
$docs_path = ($this->config->item('docs_path')) ? $this->config->item('docs_path') : 'https://raw.githubusercontent.com/GSA/project-open-data-dashboard/master/documentation/';
$docs_path = $docs_path . $page . '.md';
$docs = @file_get_contents($docs_path);
```
## Steps To Reproduce:
1. Read file from main root by calling URL:
https://labs.data.gov/dashboard/Docs/index/..%2fREADME
## POC
File README.md not exists in our current dir.
F863983
File README.md can be read due to LFI
https://labs.data.gov/dashboard/Docs/index/..%2fREADME
F863984
Confirmation:
File exact as:
https://github.com/GSA/project-open-data-dashboard/blob/master/README.md
## Impact
User have ability to control part of @file_get_contents function. This type of usage may lead to critical file read. In this scenario, we did not bypass the hardcoded ext so files was limited to ".md" and low risk was set. This should be corrected in case of future PHP bugs, if attacker will truncate the .ext part any file read will be allowed.
Report Details
Additional information and metadata
State
Closed
Substate
Resolved
Bounty
$300.00
Submitted
Weakness
Remote File Inclusion