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

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

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
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'] : '';

漏洞截图:

2015-07-19   #2

Carbon Forum用的不是mysql吗

2015-07-19   #3

回复#2 @szdbb112 :

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

2015-07-20   #4

bu.png

2015-07-20   #5

回复#4 @atest :111

 

2015-07-20   #6

回复#5 @atest :

不要纯表情水

2015-08-02   #7

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

登录后方可回帖

登 录
信息栏

Carbon Forum是一个基于话题的高性能轻型PHP论坛

下载地址:Carbon Forum v5.9.0
QQ群:12607708(QQ我不常上)

donate

手机支付宝扫描上方二维码可向本项目捐款

粤公网安备 44030602003677号
粤ICP备17135490号

Loading...