[转帖]MySQL远程信息泄漏和缓冲区溢出漏洞_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1833 | 回复: 0   主题: [转帖]MySQL远程信息泄漏和缓冲区溢出漏洞        下一篇 
薯片
注册用户
等级:中士
经验:237
发帖:75
精华:0
注册:2012-2-10
状态:离线
发送短消息息给薯片 加好友    发送短消息息给薯片 发消息
发表于: IP:您无权察看 2014-12-15 10:03:22 | [全部帖] [楼主帖] 楼主

受影响系统:

MySQL AB MySQL <= 5.0.20


  不

受影响系统:

MySQL AB MySQL 5.0.21


  描述:

BUGTRAQ ID: 17780
CVE(CAN) ID: CVE-2006-1516,CVE-2006-1517


  MySQL是一款使用非常广泛的开放源代码关系数据库系统,拥有各种平台的运行版本。

  1 信息泄漏漏洞

  通过创建特制的畸形登录报文,远程攻击者可以使用未初始化的内存内容填充初始的数据库名。

  假设MySql Server允许匿名访问。如果以用户“wisec”和口令“s”使用数据库“wisecdb”的话,正常的客户端会发送如下报文:

---------------------------------------------------------------
43 00 00 01 0d a6 03 00 00 00 00 01 08 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 77 69 73 65 63 00 14 aa 69 23 07 2a
ff 99 61 a3 c4 5f 04 66 3b 32 ef a1 f2 b6 59 77
69 73 65 63 64 62 00
C . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . w i s e c . . . i # . *
. . a . . _ . f ; 2 . . . . Y w
i s e c d b .
---------------------------------------------------------------


  但在sql_parse.cc的993行check_connection(THD *thd)函数的代码中:

--
char *user= end;
char *passwd= strend(user)+1;
char *db= passwd;
char db_buff[NAME_LEN+1]; // buffer to store db in
utf8
char user_buff[USERNAME_LENGTH+1]; // buffer to store user
in utf8
uint dummy_errors;
uint passwd_len= thd->client_capabilities & CLIENT_SECURE_CONNECTION ?
*passwd++ : strlen(passwd);
db= thd->client_capabilities & CLIENT_CONNECT_WITH_DB ?
db + passwd_len + 1 : 0;
[1]
/* Since 4.1 all database names are stored in utf8 */
if (db)
{
      db_buff[copy_and_convert(db_buff, sizeof(db_buff)-1,
      system_charset_info,
      db, strlen(db),
      thd->charset(), &dummy_errors)]= 0;
      db= db_buff;
}
--


  可见[1]处缺少对报文结构的检查。

  如果用任何其他字节(如“wisec0”)替换用户名“wisec\0”末尾的空字节的话,就会为用户分配一些报文内容,为db分配一些packet_length之外的内存。

  因此如果能够发送特制的报文的话,就可以得到类似于以下的错误消息:

Access denied for user ''@localhost to database 'lqt'


  通过更改报文长度(db长度),恶意用户就可以获得敏感信息。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论