Esempio n. 1
0
def update(request):
    firmware_id = req_post_param(request, "firmware_id")
    title = req_post_param(request, "title")
    author = req_post_param(request, "author")
    type = req_post_param(request, "type")
    platform = req_post_param(request, "platform")

    # 只有定制的漏洞信息才能进行更新操作
    if not firmware_db.custom_firmware_id(firmware_id):
        #SysLog.fail('更新漏洞', '更新漏洞(ID={})失败,只有定制的漏洞信息才能进行更新操作。'.format(firmware_id))
        return firmware_db.err_not_custom()

    # firmware_id不存在,表示没有可以更新的漏洞信息条目
    if not firmware_db.exist_firmware_id(firmware_id):
        #SysLog.fail('更新漏洞', '更新漏洞失败,该漏洞(ID={})不存在。'.format(firmware_id))
        return app_err(Error.firmware_id_NOT_FOUND)

    # 获取各字段的索引号,如果是新值,则添加一条新索引,并返回新的id号
    author_id = firmware_db.fetch_field_id('author', author)
    type_id = firmware_db.fetch_field_id('type', type)
    platform_id = firmware_db.fetch_field_id('platform', platform)

    # 组装漏洞信息,并更新
    item = {'description': [firmware_id, title], 'author': {'id': author_id, 'name': author},
            'type': {'id': type_id, 'name': type}, 'platform': {'id': platform_id, 'platform': platform}}
    result = firmware_db.update(firmware_id, item)
    # 本版本不检查成功与否
    #SysLog.success('更新漏洞', '成功更新漏洞信息,漏洞ID={}'.format(firmware_id))
    return app_ok()
Esempio n. 2
0
def add(request):
    # firmware_id = req_post_param(request, "firmware_id")
    title = req_post_param(request, "title")
    author = req_post_param(request, "author")
    type = req_post_param(request, "type")
    platform = req_post_param(request, "platform")

    # 获取可用的firmware_id,内部检查取值范围和是否冲突(firmware_id需要唯一)
    firmware_id = firmware_db.get_suggest_firmware_id(None)

    # with utils.sys.config.g_mongo_client.start_session(causal_consistency=True) as session:
    #     """事物必须在session下执行,with保证了session的正常关闭"""
    # with session.start_transaction():
    #     """一旦出现异常会自动调用session.abort_transaction()"""
    # 获取各字段的索引号,如果是新值,则添加一条新索引,并返回新的id号
    author_id = firmware_db.fetch_field_id('author', author)
    type_id = firmware_db.fetch_field_id('type', type)
    platform_id = firmware_db.fetch_field_id('platform', platform)

    # 组装漏洞信息,并添加
    item = {'description': [firmware_id, title], 'date_published': SysUtils.get_now_time().strftime('%Y-%m-%d'),
            'verified': 0, 'port': 0, 'customized': 1,
            'author': {'id': author_id, 'name': author}, 'type': {'id': type_id, 'name': type},
            'platform': {'id': platform_id, 'platform': platform}, 'firmware_id': firmware_id}
    result = firmware_db.add(item)

    # 为性能测试中降低CPU使用率,小段延时
    time.sleep(1.0)

    # 本版本不检查成功与否
    #SysLog.success('新建漏洞', '成功添加漏洞信息,漏洞ID={}'.format(firmware_id))
    return app_ok_p({'firmware_id': firmware_id, 'customized': 1, 'date_published': item['date_published']})
Esempio n. 3
0
def backup_config(request):
    # 从请求中取参数:新的系统配置
    new_config_key = req_post_param(request, 'config_key')
    new_config_str = req_post_param(request, 'sys_config')
    new_config = eval(new_config_str)

    # 数据库中写入系统配置参数
    SystemConfig.backup_db(new_config_key, new_config)

    # 重新加载新的配置参数到缓存
    config = SystemConfig.cache_load()

    # 保存操作日志
    LogRecords.save(config,
                    category='system_config',
                    action='备份系统配置',
                    desc='备份系统各项配置参数')

    return sys_app_ok_p(config)
Esempio n. 4
0
def poc_add(request):
    firmware_id = req_post_param(request, 'firmware_id')
    alias = req_post_param(request, 'alias')
    content = req_post_param(request, 'content')
    # 这三个参数都是POC的基本参数,不能为空
    if StrUtils.is_blank(firmware_id) or StrUtils.is_blank(alias) or StrUtils.is_blank(content):
        return app_err(Error.INVALID_REQ_PARAM)

    # 只有定制漏洞才能添加POC
    if not firmware_db.custom_firmware_id(firmware_id):
        #SysLog.fail('添加POC', '添加POC失败(漏洞ID={})'.format(firmware_id))
        return firmware_db.err_not_custom()

    # firmware_id不存在,表示没有可以添加POC的漏洞信息条目
    if not firmware_db.exist_firmware_id(firmware_id):
        #SysLog.fail('添加POC', '添加POC失败(漏洞ID={})'.format(firmware_id))
        return app_err(Error.firmware_id_NOT_FOUND)

    firmware_pocs.add(firmware_id, alias, content)
    #SysLog.success('添加POC', '成功添加漏洞的POC(漏洞ID={})'.format(firmware_id))
    return app_ok()
def analyze_cfg(request):
    # 从请求中取参数:文件 ID
    file_id = req_post_param(request, 'file_id')

    # 启动分析任务
    task_id = CfgAnalyzeService.start_cfg_task(file_id)

    # 保存操作日志
    LogRecords.save({
        'task_id': task_id,
        'file_id': file_id
    },
                    category='analysis',
                    action='分析CFG',
                    desc='对二进制文件做调用流程图分析')

    # 返回响应:任务初始化的信息
    return sys_app_ok_p(MyTask.fetch_exec_info(task_id))