首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞资料>文章内容
Phpwind 注入以及利用之一:远程代码执行
来源:http://www.oldjun.com/blog 作者:oldjun 发布时间:2010-09-06  

都是去年的东西了,拖啊拖,拖到今天9月份了,http://www.oldjun.com/blog/index.php/archives/68/文章底下我留了个铺垫...本来准备跟黑哥来个SOPW的专辑的...不过还没等我发,80sec的同学已经发出来了...那就算了,直接把注入以及利用写点blog吧...

想说的几点:

1.pw虽然过滤的很BT,但注入不止这一个点;
2.利用注入获取系统关键的db_siteownerid后,拿shell可以获得很大的帮助,包括这个代码执行,以及下面我要公布的上传;
3.去年我看原始的pw7.5的时候,也就是saiy没发布那个包含漏洞http://www.80vul.com/pwvul/phpwind.txt的时候,都不需要db_siteownerid,也就是直接的代码执行。(于是显然...saiy牛也应该很早就发现这个漏洞了...)

好了,先说注入,很明显很白痴的一个点,其实比代码执行好看多了,估计很多人就知道了,而且在很多版本中存在,如果不是过滤的严格一点,在pw7.5的sp3版本里可以update任意表的。

看代码:

...
} elseif ($action == 'pcdelimg') {
    InitGP(array('fieldname','pctype'));
    InitGP(array('tid','id'),2);
    if (!$tid || !$id || !$fieldname || !$pctype) {
        echo 'fail';
    }
    $id = (int)$id;
    if ($pctype == 'topic') {
        $tablename = GetTopcitable($id);
    } elseif ($pctype == 'postcate') {
        $tablename = GetPcatetable($id);
    }

    $path = $db->get_value("SELECT $fieldname FROM $tablename WHERE tid=". pwEscape($tid));

    if (strpos($path,'..') !== false) {
        return false;
    }
    $lastpos = strrpos($path,'/') + 1;
    $s_path = substr($path, 0, $lastpos) . 's_' . substr($path, $lastpos);

    if (!file_exists("$attachpath/$path")) {
        if (pwFtpNew($ftp,$db_ifftp)) {
            $ftp->delete($path);
            $ftp->delete($s_path);
            pwFtpClose($ftp);
        }
    } else {
        P_unlink("$attachdir/$path");
        if (file_exists("$attachdir/$s_path")) {
            P_unlink("$attachdir/$s_path");
        }
    }

    $db->update("UPDATE $tablename SET $fieldname='' WHERE tid=". pwEscape($tid));

    echo 'success';

    ajax_footer();

...

就是直接带进来,急死人(阿里的孩子)啦...我当年也针对db_siteownerid写了个exp,不过注入的方法跟乌云里不一样。

exp:

明天再发!

下面说远程代码执行,pw整体写缓存,一个函数pw_var_export打遍天下,让你永远无可趁之机,不过uc的应用里写缓存的时候,对于key有点没当回事,于是$class[cid]被直接带进去了:

...
function threadscateGory($classdb) {//生成帖子交换分类
    
        $classcache = "<?phprn$info_class=array(rn";

        foreach ($classdb as $key => $class) {

            !$class['ifshow'] && $class['ifshow'] = '0';
            $flag && $info_class[$class['cid']]['ifshow'] && $class['ifshow'] = '1';

            $class['name'] = str_replace(array('"',"'"),array("
&quot;","&#39;"),$class['name']);
            
$classcache .= "'$class[cid]'=>".pw_var_export($class).",\r\n\r\n";
        }
        
$classcache .= ");\r\n?>";
        
writeover(D_P."data/bbscache/info_class.php",$classcache);
    }
...

于是,直接写可执行脚本进缓存!


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·XSOK环境变量本地命令执行漏洞
·N点虚拟主机管理系统 致命漏洞。
·南方数据企业网站管理系统V10.0
·动网(DVBBS)Version 8.2.0 后
·Solaris 10 telnet漏洞及解决
·破解无线路由器密码,常见无线密
·Nginx %00空字节执行php漏洞
·WinWebMail、7I24提权漏洞
·XPCD xpcd-svga本地缓冲区溢出漏
·Struts2多个漏洞简要分析
·ecshop2.72 api.php 文件鸡肋注
·Discuz!后台拿Webshell 0day
  相关文章
·phpwind远程代码执行漏洞
·phpcms 2008 sp4 爆路径及任意文
·Phpcms2008本地文件包含漏洞及利
·SiteEngine CMS 5.1.0 文件上传
·Phpcms2008本地文件包含漏洞及利
·站易企网站管理系统CTEIMS 1.1 0
·PHP168 V6.02整站系统远程执行任
·DedeCmsV5.6 本地包含里的上传漏
·NetCms 注册上传漏洞 Oday
·FCKeditor二次上传拿shell
·Piwik和OpenX多版本存在PHP远程
·老Y文章管理系统 v2.5 sp2 SQL注
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved