访问以下所有内容会将您带到登录屏幕:
http://mysite.com/admin/configuration.php
http://mysite.com/admin/login.php
Run Code Online (Sandbox Code Playgroud)
但是,如果您访问(注意 url 字符串的最后两部分都是 .php):
http://mysite.com/admin/configuration.php/login.php
Run Code Online (Sandbox Code Playgroud)
您可以看到配置屏幕及其所有数据!
此外,如果您附加一些 GET 变量,您甚至可以获得可编辑的字段:
http://mysite.com/admin/configuration.php/login.php?cID=1&action=edit
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
我应该注意,这是在网站上使用称为 oscommerce 的绝对可怕的购物车。代码是处理的噩梦,但我现在坚持使用它。
基于以下 vstm 出色而准确的评论的修复:
这将在检查之前进行$current_page != FILENAME_LOGIN(大约在 /admin/includes/application_top.php 中的第 141-143 行)。请注意,这只是一个紧急补丁,因为真正的解决方案是永远不要使用 oscommerce,因为它就像妓女的腰带一样安全。
//$current_page = basename($PHP_SELF); //this is the default
$current_page = basename($_SERVER['SCRIPT_NAME']); //change that default to this
if ( ($current_page == FILENAME_LOGIN) && !tep_session_is_registered('redirect_origin') ) {
$current_page = FILENAME_DEFAULT;
$HTTP_GET_VARS = array();
}
Run Code Online (Sandbox Code Playgroud)
如果有人尝试这样做,请不要忘记redirect_origin可能已经设置了会话变量,因此这似乎不起作用。只需取消设置并重试。
vst*_*stm 16
在包含在所有脚本中的 includes/application_top 中,/admin您会发现这个小宝石(我已经抛出了一些无趣的部分):
// redirect to login page if administrator is not yet logged in
if (!tep_session_is_registered('admin')) {
$redirect = false;
$current_page = basename($PHP_SELF);
if ($current_page != FILENAME_LOGIN) {
// session stuf blabla
$redirect = true;
}
if ($redirect == true) {
tep_redirect(tep_href_link(FILENAME_LOGIN));
}
unset($redirect);
}
Run Code Online (Sandbox Code Playgroud)
当你还没有登录该代码被执行只。它通常做的是检查,如果basename的$PHP_SELF是login.php中。如果它是 login.php 则它继续呈现页面,否则您将被重定向。
如果您提出此要求:
http://mysite.com/admin/configuration.php/login.php
Run Code Online (Sandbox Code Playgroud)
然后 PHP_SELF 将是
/admin/configuration.php/login.php
Run Code Online (Sandbox Code Playgroud)
并且basename($PHP_SELF)当然会login.php因此渲染继续并且不执行重定向。但它当然不是login.php被渲染的,而是configuration.php. URL“/login.php”的其余部分被“忽略”,只是在$_SERVER['PATH_INFO']中提供给PHP。
编辑:我想补充一点,这个“错误”只影响 oscommerce 或任何其他使用类似解决方案来“保护”管理登录的软件(我认为没有那么多受此影响)。它不是影响所有 PHP 软件的错误。
| 归档时间: |
|
| 查看次数: |
1046 次 |
| 最近记录: |