从YouBBS的一个SQL注入漏洞,总结一下程序设计中一些要注意的点

从YouBBS的一个SQL注入漏洞,总结一下程序设计中一些要注意的点

By lincanbin at 2015-07-11
0人收藏 • 3022人看过

Youbbs出现了一个比较严重的SQL注入漏洞。

http://youbbs.sinaapp.com/t/1911

YouBBS这个漏洞出现的原因主要有三点:

  1. 技术选型在SQL连接库上选用了已废弃特性mysql而不是PDO或者mysqli,SQL必须预处理/使用参数绑定分离命令和数据才足够安全;PDO在自行编译extension的情况下,就算在进了棺材的PHP 5.1中也是可以正常执行的。

  2. 没有对所有用户输入进行有效的过滤,默认应该认为所有来自用户端的输入都是不可靠的;

  3. 错误信息直接显示而不是写入日志,错误信息抛出后不需要给用户查看,只要自己记入Log即可,这估计是图个开发方便。

7 个回复 | 最后更新于 2015-08-02
lincanbin
2015-07-11
#1

下面转载下YouBBS漏洞信息原文:

来源:http://youbbs.sinaapp.com/t/1911

YouBBS存在问题的版本:

v1.04,v2.0

v1.04把:

// 获取当前用户
$cur_user = null;
$cur_uid = $_COOKIE['cur_uid'];
$cur_uname = $_COOKIE['cur_uname'];
$cur_ucode = $_COOKIE['cur_ucode'];

替换为:

// 获取当前用户
$cur_user = null;
$cur_uid = isset($_COOKIE['cur_uid']) ? intval($_COOKIE['cur_uid']) : '';
$cur_uname = isset($_COOKIE['cur_uname']) ? $_COOKIE['cur_uname'] : '';
$cur_ucode = isset($_COOKIE['cur_ucode']) ? $_COOKIE['cur_ucode'] : '';

v2.0把:

// 获取当前用户
$cur_user = null;
$cur_uid = isset($_COOKIE['cur_uid']) ? $_COOKIE['cur_uid'] : '';
$cur_uname = isset($_COOKIE['cur_uname']) ? $_COOKIE['cur_uname'] : '';
$cur_ucode = isset($_COOKIE['cur_ucode']) ? $_COOKIE['cur_ucode'] : '';

替换为:

// 获取当前用户
$cur_user = null;
$cur_uid = isset($_COOKIE['cur_uid']) ? intval($_COOKIE['cur_uid']) : '';
$cur_uname = isset($_COOKIE['cur_uname']) ? $_COOKIE['cur_uname'] : '';
$cur_ucode = isset($_COOKIE['cur_ucode']) ? $_COOKIE['cur_ucode'] : '';

漏洞截图:

szdbb112
2015-07-19
#2

Carbon Forum用的不是mysql吗

lincanbin
2015-07-19
#3

回复#2 @szdbb112 :

是MySQL,YouBBS是一套类似的论坛程序,他们出现了Bug,我当然要关注一下。

atest
2015-07-20
#4

bu.png

atest
2015-07-20
#5

回复#4 @atest :111

 

lincanbin
2015-07-20
#6

回复#5 @atest :

不要纯表情水

remenbo
2015-08-02
#7

他这个很早就拿来商用 我之前看了一下 的确是很简单 


登 录


现在注册

QQ  登 录    Weibo  登 录    GitHub  登 录