动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   安全 → 阅读文章

 PHP-Nuke index.php search模块SQL注入漏洞

作者:51CTO.COM 来源:51CTO.COM  
阅读 数 136 人次 , 2006-3-18 17:40:00 

信息提供:

安全公告(或线索)提供热线:51cto.editor@gmail.com

漏洞类别:

输入验证漏洞

攻击类型:

远程攻击

发布日期:

2006-02-20

更新日期:

2006-02-20

受影响系统:

PHP-Nuke PHP-Nuke 7.8

PHP-Nuke PHP-Nuke 7.7

PHP-Nuke PHP-Nuke 7.6

PHP-Nuke PHP-Nuke 7.5

安全系统:

PHP-Nuke PHP-Nuke 7.9

漏洞报告人:

Janek Vind (come2waraxe@yahoo.com

漏洞描述:

BUGTRAQ  ID: 16732

PHP-Nuke是一个广为流行的网站创建和管理工具,它可以使用很多数据库软件作为后端,比如MySQL、PostgreSQL、mSQL、Interbase、Sybase等。

PHP-Nuke较新版本的软件包中的search模块实现上存在输入验证漏洞,远程攻击者可能利用此漏洞对服务器程序执行SQL注入攻击。

在较早版本PHP-Nuke的“modules/Search/index.php”代码中,以7.1版本为例:

----------------[ from source code ]------------------

$query = addslashes($query);

if ($type=="stories" OR !$type) {

if ($category > 0) {

$categ = "AND catid=$category ";

} elseif ($category == 0) {

$categ = "";

}

$q = "select s.sid, s.aid, s.informant, s.title, s.time, s.hometext,

s.bodytext, a.url, s.comments, s.topic from ".$prefix."_stories s, \

".$prefix."_authors  a where s.aid=a.aid $queryalang $categ";

if (isset($query)) $q .= "AND (s.title LIKE '%$query%' OR s.hometext LIKE

'%$query%' OR s.bodytext LIKE '%$query%' OR s.notes LIKE '%$query%') ";

if ($author != "") $q .= "AND s.aid='$author' ";

----------------[ /from source code ]-----------------

可见addslashes()用于$query变量,因此不可能执行sql注入。而在较新PHP-Nuke版本的相同代码段中,以7.5版为例:

----------------[ from source code ]------------------

$query = stripslashes(check_html($query, "nohtml"));

if ($type=="stories" OR !$type) {

if ($category > 0) {

$categ = "AND catid='$category' ";

} else {

$categ = "";

}

$q = "select s.sid, s.aid, s.informant, s.title, s.time, s.hometext,

s.bodytext, a.url, s.comments, s.topic from ".$prefix."_stories s, \

".$prefix."_authors  a where s.aid=a.aid $queryalang $categ";

if (isset($query)) $q .= "AND (s.title LIKE '%$query%' OR s.hometext LIKE

'%$query%' OR s.bodytext LIKE '%$query%' OR s.notes LIKE '%$query%') ";

if ($author != "") $q .= "AND s.aid='$author' ";

----------------[ /from source code ]-----------------

只有第一行发生了变化:

$query = stripslashes(check_html($query, "nohtml"));

在这段代码中没有正确的过滤用户输入,允许攻击者执行SQL注入攻击。

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

p0hh0nsee%') UNION ALL SELECT 1,2,aid,pwd,5,6,7,8,9,10 FROM nuke_authors/*

解决方法:

厂商补丁:

PHP-Nuke

--------

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

* PHP-Nuke PHP-Nuke 7.9.0

http://phpnuke.org/modules.php?name=Release

(  

 本文Tags注入  数据库  病毒  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:Firefox <= 1.0.7 HTML解析拒绝服务漏洞
· 下一篇:Macromedia Shockwave Player ActiveX控件溢出漏洞
· 看PDF和Flash中毒后快速解决方法
· PGP在E-mail中的应用
· 安全专家称WMF漏洞为故意设置 微软予以否认
· 架设Windows Server 2003的安全堡垒
· 第一个测试版Vista其实是个花架子


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077