PTNews远程管理脚本未授权访问漏洞
发布日期:2003-04-21
更新日期:2003-04-24
受影响系统:PTNews PTNews 1.7.7
不受影响系统:PTNews PTNews 1.7.8
描述:
PT News是一款简单的新闻系统,使用PHP编写但不使用SQL数据库支持。
PT News存在设计问题,远程攻击者可以利用这个漏洞未授权访问管理员功能模块。
PT News中管理员功能在news.inc文件中:
//handle administrator functions
$files = getFileNames($newsdir);
$context = "";
if ($HTTP_POST_VARS[submitButton] == $lang[frm_btn]) {
createNewsEntry($newsdir);
if ("replace" == $HTTP_POST_VARS[action] &&
in_array($HTTP_POST_VARS[file], $files)) {
deleteNewsEntry($newsdir.$HTTP_POST_VARS[file]);
}
makeNewsRSS($newsdir);
} elseif (isset($HTTP_GET_VARS[delete])) {
if ("all" == $HTTP_GET_VARS[delete]) {
$context = deleteAll($newsdir,$config[newssuff]);
} else {
if (in_array($HTTP_GET_VARS[delete], $files))
deleteNewsEntry ($newsdir.$HTTP_GET_VARS[delete]);
}
makeNewsRSS($newsdir);
} elseif (isset($HTTP_GET_VARS[edit]) &&
in_array($HTTP_GET_VARS[edit], $files)) {
$context = editNewsEntry($newsdir,$HTTP_GET_VARS[edit]);
}
上面代码用于处理新闻建立、新闻更改、新闻删除、新闻替换等操作,而"news.inc"文件包含在index.php文件中:
<html>
<head>
<title>PTNews Site</title>
</head>
<body>
<?
$newsdir = "news/";
include ("news.inc");
// handle CGI parameters
if (!isset($HTTP_GET_VARS[pageNum])) $pageNum = 1;
else $pageNum = $HTTP_GET_VARS[pageNum];
if (!isset($HTTP_GET_VARS[topic])) {
$topic="";
} else {
$topic=$HTTP_GET_VARS[topic];
}
$extra="";
?>
不过index.php可以由任何用户访问,攻击者利用这个问题可以通过访问index.php文件未授权对管理员功能进行操作。
<*来源:scrap (
webmaster@securiteinfo.com)
链接:
http://marc.theaimsgroup.com/?l=bugtraq&m=105095845325709&w=2
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
scrap (
webmaster@securiteinfo.com)提供了如下测试方法:
如删除新闻条目:
http://www.victim.com/ptnews/index.php?delete=all建议:
厂商补丁:
PTNews
------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载使用ptnews 1.7.8:
http://www.openbg.net/ptsite/浏览次数:3471
严重程度:0(网友投票)