禅道低权限账户getshell
首页 > web安全 > 代码审计    作者:webbaozi   2016年11月27日 21:14 星期日   热度:2460°   百度已收录  
时间:2016-11-27 21:14   热度:2460° 

复制之前提交的吧,这次就不用重新复现了。浪费时间,之前提交在某平台,直接copy过来了0.0

新测试:

时间:2017-2-7

版本9.0开源,以下方法也能getshell

在产品-》产品描述中,选择上传图片。(只要能上传图片的账户就能getshell)

这是之前黑盒测试留下的(当初下载最新版也能getshell,今天下载不能复现了,原因在函数function checkFileName中对于文件名的检测加上了:)

跟进代码:

module\file\control.php

ajaxUpload()函数

public function ajaxUpload()     {         $file = $this->file->getUpload('imgFile');         $file = $file[0];         if($file)         {             if($file['size'] == 0) die(json_encode(array('error' => 1, 'message' => $this->lang->file->errorFileUpload)));             if(@move_uploaded_file($file['tmpname'], $this->file->savePath . $file['pathname']))             {
继续跟进getUpload()函数。
if(is_array($_FILES[$htmlTagName]['name']))         {             extract($_FILES[$htmlTagName]);             foreach($name as $id => $filename)             {                 if(empty($filename)) continue;                 if(!validater::checkFileName($filename)) continue;                 $file['extension'] = $this->getExtension($filename);                 $file['pathname']  = $this->setPathName($id, $file['extension']);                 $file['title']     = !empty($_POST['labels'][$id]) ? htmlspecialchars($_POST['labels'][$id]) : str_replace('.' . $file['extension'], '', $filename);                 $file['title']     = $purifier->purify($file['title']);                 $file['size']      = $size[$id];                 $file['tmpname']   = $tmp_name[$id];                 $files[] = $file;             }

因为
move_uploaded_file($file['tmpname'], $this->file->savePath . $file['pathname']

新名字为$file['pathname']

所以跟进:

getExtension($filename);
    public function getExtension($filename)
    {
        $extension = trim(strtolower(pathinfo($filename, PATHINFO_EXTENSION)));
        if(empty($extension) or strpos(",{$this->config->file->dangers},", ",{$extension},") !== false) return 'txt';
        if($extension == 'php') return 'txt';
        return $extension;
    }

这是做的过滤处理。



%81使用url decode然后上传。

这里虽然不能返回文件名,但是可以通过提交txt和php。

这里是手工点击,时间差距有点大。用脚本能缩短很多!!

获取随机字母“近似名”,时间戳爆破。也是能获取shell,就是效率有点低。



二维码加载中...
本文作者:webbaozi      文章标题: 禅道低权限账户getshell
本文地址:http://www.webbaozi.com/dmsj/18.html
版权声明:若无注明,本文皆为“baozi|学与用”原创,转载请保留文章出处。
notequal2017-04-24 00:05
你好,%81使用url decode然后上传,这里没有明白什么意思,直接加%81好像生成的文件后缀也带%81
webbaozi2017-04-26 16:55
@notequal:使用Burp,图片地址:http://www.webbaozi.com/content/uploadfile/201704/ffcf1493196861.png
notequal2017-04-28 17:58
@webbaozi:多谢  可以上传成功了 一个新的麻烦就是文件名称了。
webbaozi2017-04-28 21:25
@notequal:是啊,这里比较蛋疼。只有爆破时间戳了
notequal2017-04-29 08:51
@webbaozi:只是时间戳的话好办 这个还有后面的随机数字字母
webbaozi2017-04-29 11:51
@notequal:随机字母,短时间内会出现重复的。你看看截图

返回顶部    首页    手机版本   
版权所有:baozi|学与用    站长: webbaozi  蜀ICP备16032848号-1