首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Apache Solr DataImportHandler 远程代码执行漏洞(CVE-2019-0193) 分析

几个名词解释: • Core: 索引库,其中包含schema.xml/managed-schema,schema.xml是模式文件的传统名称,可以由使用该模式的用户手动编辑,managed-schema...是Solr默认使用的模式文件的名称,它支持在运行时动态更改,data-config文件可配置为xml形式或通过请求参数传递(在dataimport开启debug模式时可通过dataConfig参数传递)...PoC进化历程 4.1 PoC第一阶段--数据库驱动+外连+无回显 根据官方漏洞预警描述[4],是DataImportHandler在开启Debug模式时,能接收dataConfig这个参数,这个参数的功能与...可以看到在script中能执行java代码,于是构造下PoC(通过logs查看相关报错信息查看PoC构造出现的问题),这个数据库是可以外连的,所以数据库的相关信息可以自己控制,测试过是可以的(只是演示使用的...4.2 PoC第二阶段--外连+无回显 在文档中说到JdbcDataSource可以使用JNDI, ? 测试下能不能进行JNDI注入: ? 这里有一个JNDI+LDAP的恶意demo[6]。

2.2K20

30分钟用Node.js构建一个API服务器

在Express中,路由包含在一个函数中,该函数将 Express 实例和数据库作为参数。...最简单方法是通过 mLab 设置 Mongo 数据库的:它是最小的而且是免费的,设置的速度非常快。 创建帐户和 MongoDB 部署后,将用户的用户名和密码添加到数据库: ?...现在在你的 server.js 中,可以用 MongoClient 连接到数据库了,使用它来包装你的应用程序设置: 1// server.js 2const express = require...如果你登录mLab,你还应该能够在数据库中看到创建的笔记。 READ 路由 现在可以稍微加快步伐。 假设你希望通过导航到 localhost:8000/notes/{id} 来获取刚创建的笔记。...但是,如果你试图将字符串插入上面的 位置,它将无法正常工作。 MongoDB 不仅要求 ID 为字符串,还要求 ID 是一个对象,它们被之为 ObjectID。

2.1K11
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    初试MongoDB学习之Mongoose的使用

    #Mongoose的优势 可以像操作对象一样操作数据库 可以为文档创建一个模式结构(Schema) 可以对模型中的文档/文档进行验证 数据可以通过类型转换为对象模型 可以使用中间件来应用业务逻辑挂钩 比...}) #mongoose基本使用 #mongoose的几个新的对象 在MongoDB中,多个Document可以组成Collection(以下简称集合),多个集合又可以组成数据库。...我们想要操作MongoDB数据,那就得先要具备上面所说的包含数据的“文档”,文档又是什么意思呢,请看如下介绍。...#创建model(集合) let personModel= mongoose.model('person', personSchema); person:数据库中的集合名称,当我们对其添加数据时如果person...#Entity Entity—— 由Model创建的实体,使用save方法保存数据,Model和Entity的操作都能影响数据库的操作,但Model比Entity更具操作性。

    6K20

    前端开发人员如何搭建数据库

    搭建数据库 首先,要实际拥有一个数据库。可以去mlab网站找一个免费的。注册好后,在MongoDB部署(Deployments)栏里点击创建新数据库(create new)。...这里面的冒号告诉Express库要捕捉任何开始字符为,并且接下来只由数字字母组成的路径。 举些例子: 要捕捉 要捕捉 不捕捉 然后,的值可以在变量里取得。...连接数据库是一种异步操作,所以我们要把服务器搭建步骤包裹在一个回调函数里,像这样: 数据库以集合方式组织起来,集合中又包含了文档,文档基本就是JSON文件。...所以让我们连接到用户这个集合上去,第一次访问时,这个集合会自己创建。 首先,我们要处理方法的路径,用这个方法来把一个新用户的数据加进去。然后,我们要用方法的路径来更新。...更新数据库的数据 最后,方法可以用来更新已经存在的用户数据。 第一个参数是一个过滤器,就像方法里一样使用。 第二个参数是一个更新文档。看这里可以了解更多。

    1.5K100

    Apache Solr DataImportHandler远程代码执行漏洞(CVE-2019-0193) 分析

    我对此漏洞进行了应急,由于在应急时构造的PoC很鸡肋,需要存在数据库驱动,需要连接数据库并且无回显,这种方式在实际利用中很难利用。...schema.xml/managed-schema,schema.xml是模式文件的传统名称,可以由使用该模式的用户手动编辑,managed-schema是Solr默认使用的模式文件的名称,它支持在运行时动态更改...这里的含义就是当dataConfig插入数据发现某一个域没有定义时,这时可以使用动态域当作字段名称 进行数据存储,这个会在后面PoC的进化中看到 example:...PoC构造出现的问题),这个数据库是可以外连的,所以数据库的相关信息可以自己控制,测试过是可以的(只是演示使用的127.0.0.1): 在ScriptTransformer那个例子中,能看到row.put...PoC第二阶段--外连+无回显 在文档中说到JdbcDataSource可以使用JNDI, 测试下能不能进行JNDI注入: 这里有一个JNDI+LDAP的恶意demo。

    1.4K00

    如何在Linux中提高MySQL服务器的安全性?

    密码至少包含8个字符。   (2)1 -中等。密码至少包含8个字符(包括数字、大小写混合和特殊字符)。   (3)2 -强。...(3)删除测试数据库并访问它?   (4)现在重新加载权限表?   要使用默认设置运行脚本,建议对所有这些问题的回答是Y。   ...要检查程序是否读取选项文件,请使用mysql --help命令。如果程序读取选项文件,则输出会指示文件的名称以及它识别的选项组。打开文件并将所需的选项添加到[client]组中。...例如,我们可以将MySQL配置为允许使用端口3307连接到本地服务器的客户端进行IPv6连接。...为此,我们需要添加本地::1主机地址并将默认端口(3306)更改为3307.因此,在运行安装脚本时,我们将使用以下命令:mysql_secure_installation --host=::1 --port

    1.6K20

    Nodejs学习笔记(十四)— Mongoose介绍和入门

    简介   Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具   那么要使用它,首先你得装上node.js和mongodb,关于mongodb的安装和操作介绍可以参考...安装成功后,就可以通过 require('mongoose') 来使用!...其它事件可以自行查看:http://mongoosejs.com/docs/api.html#connection_Connection   这是最简单的连接字符串,当然还有其它形式,比如:连接密码、数据库连接设置...、集群方式连式等等,这里解释了,用着了时候自行查询API文档 http://mongoosejs.com/docs/api.html#index-js Schema   schema是mongoose...mongoose操作基本入门大致就是这些,自已试一下,入门完全没问题,并且比node-mongodb-native还是要简单明了一些,   在node.js中操作数据库,如果逻辑相对复杂时,大量的回调嵌套还是比较郁闷的

    2.7K60

    Mongoose 实现关联查询和踩坑记录

    本文源自工作中的一个问题,在使用 Mongoose 做关联查询时发现使用 populate() 方法不能直接关联非 _id 之外的其它字段,在网上搜索时这块的解决方案也并不是很多,在经过一番查阅、测试之后...Aggregate 的 $lookup 实现关联查询 MongoDB 3.2 版本新增加了 lookup 实现多表关联,在聚合管道阶段中使用,经过 lookup 阶段的处理,输出的新文档中会包含一个新生成的数组列...创建一个 aggregateTest.js 重点在于 $lookup 对象,代码如下所示: $lookup.from: 在同一个数据库中指定要 Join 的集合的名称。...$as: 别名,关联查询返回的这个结果起一个新的名称。 如果需要指定哪些字段返回,哪些需要过滤,可定义 $project 对象,关联查询的字段过滤可使用 别名.关联文档中的字段 进行指定。...可以在创建 Schema 时在第二个参数 options 中设置,也可以使用创建的 Schema 对象的 set 方法设置。

    26.6K20

    ASP.NET MVC5高级编程——(4)表单和HTML辅助方法

    , new {target = "_blank", @class="editForm"})) 另一个问题是将属性设置为带有连字符的名称(项data-val)。...带有连字符的C#属性名是无效的,但所有的HTML辅助方法在渲染HTML时会将属性名中的下划线转换为连字符。...当方法名称左边有一个向下的蓝色箭头时,说明这个方法是一个扩展方法。 ?...SelectList构造函数的参数指定了原始集合(数据库中的Genres表)、作为后台值使用属性名称(Name)以及当前所选项的值(他决定将哪一项标记为选择项)。...强类型方法不使用名称和值,而是用表达式来标识那些包含有要渲染属性的对象,当用户选择单选按钮时,后面会跟要提交的值: @Html.RadioButtonFor(m => m.GenreId, "1") Rock

    3K30

    Python+MySQL数据库编程

    下面讨论Python数据库API(一种连接到SQL数据库的标准化方式),并演示如何使用这个API来执行一些基本的SQL。最后,将讨论其他一些数据库技术。 这里不会提供关系型数据库和SQL语言教程。...请求不支持的功能,如回滚 连接和游标 要使用底层的数据库系统,必须先连接到它,为此可使用名称贴切的函数connect。...这些数据库引擎大都作为服务器运行,连安装都需要有管理员权限。为降低Python DB API和pymysql的使用门槛,我选择将MySQL和Python安装在一台机器上。...在文件ABBREV.txt中,每一行都是一条数据记录,字段之间用脱字符(^)分隔。数字字段直接包含数字,而文本字段用两个波浪字符(~)将其字符串值括起。...对于其他字段(即数字字段),使用float(field)就能获取其内容,但字段为空时不能这样做。

    2.8K10

    DB2 JDBC连接详解(附DEMO~超详细)

    2.3 DB2连接JDBC获取表信息注释等 要获取DB2数据库中表的信息,你可以使用JDBC来查询数据库的系统表或视图,例如 SYSCAT.TABLES,以获取有关表的信息,包括表的名称、注释等。...schema:要查询的模式名称。 运行这个程序后,它将连接到DB2数据库并打印出表的名称和注释信息。这可以帮助你获取有关表结构的基本信息。...当使用DB2 JDBC连接到数据库时,除了执行查询、更新和插入操作之外,还有一些其他常用的方法和操作,例如: 2.8 执行存储过程 import java.sql.CallableStatement;...以下是一些常见问题以及解决方法,当使用DB2 JDBC连接时可能会遇到这些问题: 1. 连接超时问题: 问题描述: 连接到DB2数据库时,可能会遇到连接超时的问题,导致无法建立连接。...解决方法: 检查数据库服务器是否运行正常。 确保数据库服务器的主机名、端口号和数据库名称正确。 配置适当的连接超时参数,例如在JDBC连接字符串中使用connectTimeout。

    39510

    MySqlConnector连接选项「建议收藏」

    基本选项 这些是需要定义以连接到MySQL数据库的基本选项。 名称 默认 描述 主机,服务器,数据源,数据源,地址,地址,网络地址 本地主机 要连接的MySQL服务器的主机名或网络地址。...数据库,初始目录 (可选)要使用的初始数据库的区分大小写的名称。如果MySQL用户帐户仅具有服务器上特定数据库的访问权限,则可能需要这样做。...的char32 所有 CHAR(32) 列都 Guid 使用不带连字符的小写十六进制读/写。...由于.NET Core的限制,基于Unix的操作系统将始终使用操作系统默认保持活动设置。 负载平衡,负载平衡 ROUNDROBIN Host包含多个以逗号分隔的主机名时使用的负载平衡策略。...故障转移 每个新连接都尝试连接到第一个主机; 仅当连接到第一个主机失败时才使用后续主机。

    2.6K20

    用 Mongoose 插件记录Node.js API日志

    步骤1:创建基本日志模式模型 让我们创建一个具有以下六个属性的基本日志模式: Action: 按照它的名称,这是 API 的一个动作过程,无论是 create、update、delete还是别的什么。...CreatedBy:正在使用或调用 API 的用户。 Message: 你可以在此处包含你想要显示的任何类型的消息,这些消息在调试过程中有意义或有帮助。...isEqual:此方法支持比较数组、数组缓冲区、布尔值、日期对象、错误对象、映射、数字、对象、正则表达式、集合、字符串、符号和类型化数组。...步骤3:创建一个插件用来 diff 并将其保存到数据库 现在我们需要跟踪数据库中的前一个 document 并在保存到 mongodb 之前创建一个 diff。...步骤4:用法 - 如何在express.js API中使用 在你的主server.js或app.js中: 初始化全局 plugin 【https://mongoosejs.com/docs/plugins.html

    2.8K40

    MongoDB 备份与恢复

    --gssapiServiceName 使用 GSSAPI/Kerberos 指定服务名称。仅当服务未使用默认名称 mongodb 时才需要。...仅当在 --db 选项中指定数据库时,此选项才会应用。将 mongodump 应用于整个实例而非特定数据库时,MongoDB 始终包含用户与角色定义。...--gssapiServiceName= 使用 GSSAPI/Kerberos 指定服务名称。仅当服务未使用默认名称 mongodb 时才需要。...如果源目录或文件(即恢复数据的目录/文件) 不包含与命名空间模式匹配的数据文件, 则不会恢复任何数据。对于包含非 ASCII 字符的集合名称,mongodump 会用百分比编码名称输出相应的文件名称。...但是要恢复这些集合,请勿使用编码名称。相反,应使用包含非 ASCII 字符的命名空间。

    19910

    爬 Boss 直聘,分析 Python 工作现状

    此时,再次回到浏览器,查看该请求下面的 headers,可以看到其中有一个 cookie,是很长的一串字符串,我们拷贝这个 cookie 到 Postman 中,再次请求: ?...python:可以得到该 job 具体页面地址 10-15K:每个 job 的薪资 柯莱特集团:招聘公司名称 北京 朝阳区 望京|3-5年|学历不限:该 job 的详情信息 对于前三个信息,还是比较好抓取的...job_dict['edu'] = job_rege.group(3) job_list.append(job_dict) print(job_list) 由于我们最后还是得到了一个列表,里面包含字典...,所以使用 try…except 来忽略了其他不规则的情况。...我们可以从 URI 中获得每个工作的详情页面地址,然后再拼接到 Boss 的主 URL 上: https://www.zhipin.com/job_detail/a8920821a7487a901HJ43tm7EFY

    1.4K20

    进阶数据库系列(三):PostgreSQL 常用管理命令

    -h #数据库所在的IP地址 -p #(默认5432)数据库的监听端口 -U #用户名 -d #数据库名称 常用命令说明 \?...一个模式可以包含视图、索引、数据类型、函数和操作符等。 相同的对象名称可以被用于不同的模式中而不会出现冲突,例如 schema1 和 myschema 都可以包含名为 mytable 的表。...使用模式的优势: 允许多个用户使用一个数据库并且不会互相干扰。 将数据库对象组织成逻辑组以便更容易管理。 第三方应用的对象可以放在独立的模式中,这样它们就不会与其他对象的名称发生冲突。...注意:用户名与 schema 同名,且用户具有访问改 schema 的权限,用户连入数据库时,默认即为当前 schema。...targetServerType=master:只允许连接到具有所需状态的服务器,可选值有: any:默认,表示连接到任何一个可用的数据库服务器,不区分主从数据库; master:表示连接到主数据库,可读写

    1K20
    领券