安全研究

安全漏洞
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(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障