太阳集团2138备用网址

  • 2019-06-26
  • [加油!向未来]国产大飞机C919遇严峻考验 机翼被“虐”向上弯曲3米 2019-06-26
  • “新四大发明”火了!中国与世界有了新的沟通桥梁 2019-06-26
  • 《都挺好》曝光终极预告 直击当代家庭“痛点” 2019-06-26
  • 2019-06-26
  • 2019-06-26
  • 7月可乘直升机游览青海湖 2019-06-26
  • 2019-06-26
  • 培华学院召开新闻信息培训暨表彰大会 2019-06-26
  • 吉林师范大学《见地》摄影比赛作品选登 2019-06-26
  • 广州南沙工商企业获得电力暖心服务 2019-06-26
  • 张兴海:汽车新制造是全生命周期的新的制造理念和体系 2019-06-21
  • 2019年03月08日 星期五 2019-06-21
  • 【红人馆】合肥摆了9年的米糕摊又小又难找 摊主竟是两位聋哑合伙人! 2019-06-21
  • 华为 Mate 7(尊爵版电信4G)评论 2019-06-21
  • 欢迎来到 黑吧太阳集团2138备用网址 是业内专业的游戏平台,为你提供各式各样的精品游戏,最全的游戏项目,同时还为您提供各种游戏专题游戏攻略人气论坛。

    PHP反序列化入门之寻找POP链(一)

    来源:本站整理 作者:佚名 时间:2019-02-26 TAG: 我要投稿

    太阳集团2138备用网址 www.r-island.com 环境搭建
    运行环境要求
    PHP >= 7.1.3
    OpenSSL PHP Extension
    PDO PHP Extension
    Mbstring PHP Extension
    安装题目环境

    运行题目代码

    更多请参考:https://laravel-china.org/docs/lumen/5.7/installation/2402
    PS:更新P牛制作的docker环境 https://github.com/phith0n/code-breaking
     
    漏洞点
    在 routes/web.php 文件中,定义了 web 程序的路由,当我们以 GET 或 POST 方法访问 http://website/server/editor 的时候,程序就会调用 app/Http/Controllers/EditorController.php 类中的 main 方法。

    我们进而看 app/Http/Controllers/EditorController.php 文件,很快便会发现有一个 download 方法中的 $url 变量没有经过任何处理用在了 file_get_contents 函数中, download 方法代码如下:

    这时我们便考虑 $url 变量是否可控,如果可控,便可以利用 phar反序列化 。我们回溯寻找 $url 变量来源,会发现在 doCatchimage 方法中,该变量值是从 $sources 变量来。而 $sources 变量由用户传来的 source 参数决定(通过 http://website/server/editor/?action=Catchimage&source[]=phar://xxx.gif 即可控制 $url 变量),相关代码如下:

    那么接下来,我们就要寻找可利用的类方法,然后通过 phar反序列化 触发漏洞。
     
    了解PHPGGC
    在寻找 pop链 之前,我们不妨先看看 phpggc 中已有的 4种 关于 Laravel 框架 RCE 的 payload 生成方法,以便我们更快速的找出本题的 pop链 ,其 4种 Laravel 框架 RCE 的 payload 生成方法分别如下:
    第1种

    其反序列化时,类方法调用过程如下:

    第2种

    其反序列化时,类方法调用过程如下:

    第3种

    其反序列化时,类方法调用过程如下:

    第4种

    其反序列化时,类方法调用过程如下:

    这里我选取 第1种 的 phar反序列化 执行结果图(题目环境为 PHP7.1.16 ):

    然而本题目的环境还有一些额外的限制,例如 PHP 版本为 7.2.14 ,且禁用了如下函数和类(这些信息通过 phpggc 的第一个 Laravel 框架 RCE 生成 phpinfo 函数的利用 phar 即可看到):
    disable_functions:
    system,shell_exec,passthru,exec,popen,proc_open,pcntl_exec,mail,apache_setenv,mb_send_mail,dl,set_time_limit,ignore_user_abort,symlink,link,error_log
    disable_classes:
    GlobIterator,DirectoryIterator,FilesystemIterator,RecursiveDirectoryIterator
    由于在 PHP7.x 版本中,很多函数禁止动态调用了,加上上面的这些限制,所以我们还需要寻找其他利用点,结合上述 POP 链,完成写 shell 。
     
    开始寻找pop链
    我们可以发现上面的4种 RCE 入口点都是从 PendingBroadcast 类的 __destruct 方法开始的,那么我们着重搜索 dispatch 方法和 __call 方法。经过一番搜索,发现 ValidGenerator 类中的 __call 比较好利用。

    [1] [2] [3]  下一页

    【声明】:太阳集团2138备用网址(http://www.r-island.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@www.r-island.com,我们会在最短的时间内进行处理。
    • 最新更新
      • 相关阅读
        • 本类热门
          • 最近下载