PHP-Nuke 大量使用 cookies,无论是用户身份验证还是管理员身份验证。Cookies 是保存在我们计算机上的文本文件,其中包含各种信息,当我们进入特定站点时会被读取。在 PHP-Nuke 的情况下,保存在那里的信息与用户、所选主题和使用的语言有关。
Cookie 也是使我们不必每次登录都重新输入密码的工具。这样,每次我们访问 PHP-Nuke 站点时,cookie 都会为我们工作,管理登录操作。
问题是,如果 cookie 的过期日期不够短,有人可以从我们这里窃取它,并能够以用户或管理员的身份访问该站点。这可能是由于一系列原因造成的
PHP-Nuke 的 cookie 的生命周期接近无限长(31536000 秒)
Explorer(最常用的浏览器,不幸的是)存在漏洞,允许在客户端执行恶意脚本,“窃取”用户的 cookie 并将其发送给“窃贼”。
PHP-Nuke 无法成功过滤所有恶意脚本(或者,更确切地说,Internet Explorer 太愚蠢了,以至于会更正语法错误的插入脚本,以便不被识别)。
让我们展示一个具体的例子,说明一个脚本小子(那些自认为是黑客,但实际上不是...)如何尝试获得我们站点的管理员权限
脚本小子插入一个据称包含新闻的脚本
< vb script give the cookie to me and send it to the server xyz> |
该脚本未被 PHP-Nuke 的 function check_words() 函数过滤。
PHP-Nuke 的管理员使用 Internet Explorer 打开页面!!!(如果您使用 Mozilla,或者更好的任何 Linux 浏览器,则此黑客攻击不起作用)。管理员可以看到等待批准发布的新闻列表。当他查看提交内容时,Internet Explorer(愚蠢地)以这种方式更正 vbscript
<vbscript>(script kiddies commands go here) |
成功以正确的方式解释错误的语法(!!!),获取 cookie 并将其发送给脚本小子。
脚本小子将 cookie 放在他自己的其他 cookie 中,连接到站点,然后...被识别为管理员!!!
但是如何保护我们自己免受这种类型的黑客攻击呢?
有一些解决方案应该大大提高我们管理区域的安全性
首先,停止使用 Internet Explorer 作为浏览器,并将位置让给 Mozilla。Mozilla 是一款以最佳方式支持所有站点的浏览器,并且没有 Microsoft 的所有漏洞。如果您改用 Linux,您就不会遇到任何此类问题...
如果您想继续使用 Explorer,您至少应该从 Microsoft 下载补丁。
在可能的情况下,禁用 HTML 标签的插入(例如在 Splatt.it 的论坛中)
缩小 cookie 的生命周期。例如,如果我们将 cookie 的生命周期设置为两小时,脚本小子将被迫在该期限内使用 cookie,这大大限制了他们及时行动的能力。
相反,如果我们让 cookie 的生命周期保持预设值,脚本小子甚至可以在 cookie 被盗后 1 个月内使用我们的 cookie。
如何设置管理员 cookie 的持续时间?cookie 在文件 includes/auth.php 中设置,修改它的函数如下
if ((isset($aid)) && (isset($pwd)) && ($op == "login")) { if($aid! = "" AND $pwd!="") { $pwd = md5($pwd); $result=sql_query("select pwd, admlanguage from "$prefix."_authors where aid='$aid'", $dbi); list($pass, $admlanguage)=sql_fetch_row($result, $dbi); if($pass == $pwd) { $admin = base64_encode("$aid:$pwd:$admlanguage"); setcookie("admin", "$admin",time()+7200); unset($op); } } } |
如您所见,我们将第二个 cookie 的生命周期从 2592000(一个月)修改为 7200 秒(两小时)。正如您很容易看到的,我们将脚本小子的行动半径从一个月缩小到两个小时。
一个更有效的标签过滤器正在研究阶段,尽管目前,提出的解决方案确实为该问题提供了明确的答案。允许的标签在文件 config.php 的变量 $AllowableHTML 中定义,这些标签对于评论和在函数 check_html() 中插入新闻有效,该函数目前让一些标签通过。
所有这些操作以及在 第 10.1 节 中说明的权限的正确配置应确保我们站点的良好安全性。密切关注 http://neworder.box.sk/ 上提出的 PHP-Nuke 安全警告也很重要。