Boblog - 博客程序任意变量覆盖漏洞(二)

admin 2021年4月3日18:52:16评论79 views字数 1330阅读4分26秒阅读模式

    boblog 博客程序任意变量覆盖漏洞(二)

    by Ryat[puretot]
    mail: puretot at gmail dot com
    team: http://www.80vul.com
    date: 2011-03-09

    先前80vul.com上公布了一个bo-blog的漏洞[1],这个漏洞已经被官方修补,但随后wooyun.com上公布了一个绕过补丁的方法[2],可惜触发时有一定的限制,下面我再来公布一个没有任何限制的绕过补丁继续触发漏洞的方法:)

    这个简单来说是正则表达式和代码逻辑不够严谨造成的,来看代码:

Go.PHP:

// go.php

$q_url=$_SERVER["REQUEST_URI"];
@list($relativePath, $rawURL)=@explode('/go.php/', $q_url);
$rewritedURL=$rawURL;
...
$RewriteRules[]="/page/([0-9]+)/([0-9]+)/?/";
// 这个正则看上去很严谨,但是没有使用^和$来限制开头与结尾[可能是为了适应程序自身的需要]:)
...
$RedirectTo[]="index.php?mode=1&page=2";
...
foreach ($RewriteRules as $rule) {
    if (preg_match($rule, $rewritedURL)) {
        $tmp_rewritedURL=preg_replace($rule, '
// 对$rewritedURL进行匹配和替换,并使用
// 经过这样的处理后$tmp_rewritedURL主要分为三部分:
// i.第一个
// ii.两个
// iii.第二个
        $tmp_rewritedURL=@explode('
        $rewritedURL=($tmp_rewritedURL[2]) ? false : $tmp_rewritedURL[1];
// 这段代码的主要目的是解决之前的正则限制不够严格的问题
// 程序员希望通过这段代码去掉i和iii,使$rewritedURL仅保留ii
// 注意这里还对iii做了限制,按照程序员的想法,iii这部分应该是不存在的:)
// 这部分代码逻辑的关键就在于
        break;
    }
    $i+=1;
}

    从上面的分析可以看出这段代码对$rewritedURL处理逻辑貌似很严谨,但事实我们只要通过简单的注入

PoC:
    /go.php/

参考:
    [1]http://www.80vul.com/boblog/boblog.txt
    [2]http://www.wooyun.org/bugs/wooyun-2010-01491

文章来源于lcx.cc:Boblog - 博客程序任意变量覆盖漏洞(二)

相关推荐: 浅析 postgresql 数据库攻击技术

postgresql简单介绍:     PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统,可以说是目前世界上最先进,功能最强大的自由数据库管理系统。 PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,版本 …

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月3日18:52:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Boblog - 博客程序任意变量覆盖漏洞(二)http://cn-sec.com/archives/318971.html

发表评论

匿名网友 填写信息