本文作者:haya(信安之路红蓝对抗小组成员) 成员招募:信安之路红蓝对抗小组招募志同道合的朋友 在复现 Apache Solr Velocity 模板注入时,发现了一些问题,因为这些问题即使可以执行命令...q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime...Java 中 Velocity #set 指令是向引擎上下文对象添加属性或对已有属性进行修改。 那注入的这个模板进行命令执行实际上也是用了 getRuntime().exec()。...post_data = """ { "update-queryresponsewriter": { "startup": "lazy", "name": "velocity...main__': target = sys.argv[1] cmd = sys.argv[2] poc(target)// Form https://github.com/wyzxxz/Apache_Solr_RCE_via_Velocity_template
Apache Solr默认集成VelocityResponseWriter插件,在该插件的初始化参数中的params.resource.loader.enabled这个选项是用来控制是否允许参数资源加载器在...(来自360CERT) 0x02 影响范围 ---- Apache Solr 5.x - 8.2.0,存在config API版本 0x03 环境搭建 ---- 自行搭建: 使用vulhub中CVE...test/config目录POST以下数据(修改Core的配置) { "update-queryresponsewriter": { "startup": "lazy", "name": "velocity...q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime
Velocity简介 Apache Velocity是一个基于Java的模板引擎,它提供了一个模板语言去引用由Java代码定义的对象。...Velocity是Apache基金会旗下的一个开源软件项目,旨在确保Web应用程序在表示层和业务逻辑层之间的隔离(即MVC设计模式)。...Maven 用户 在你的POM文件中引用下面依赖: org.apache.velocity velocity-engine-core...dependency> org.apache.velocity velocity-engine-log4j...在web项目中使用Velocity velocity只是一个模板引擎,在web项目中使用Velocity还得添加一个HTTP框架来处理请求和转发,apache提供了velocity-tools,其提供了
0x00:简介 最近几日,某国外安全研究员"s00py"公开了一个Apache Solr的Velocity模板注入的漏洞.经过圈里大佬们研究,发现该0day漏洞存在,并且可以攻击最新版本的Solr
Apache Solr默认集成VelocityResponseWriter插件,在该插件的初始化参数中的params.resource.loader.enabled这个选项是用来控制是否允许参数资源加载器在...(来自360CERT) 0x02 影响范围 Apache Solr 5.x - 8.2.0,存在config API版本 0x03 环境搭建 自行搭建: 使用vulhub中CVE-2019-0193的环境进行搭建...config目录POST以下数据(修改Core的配置) { "update-queryresponsewriter": { "startup": "lazy", "name": "velocity...q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime...fr=aladdin 历史漏洞 CVE-2019-0193 Apache Solr 远程代码执行
、else foreach include 、 parse define evaluate macro macro的注意 基本用法 导入依赖 org.apache.velocity... velocity 1.7 创建一个公共方法,它是通过类路径来获取模板的..., "UTF-8"); ve.setProperty(Velocity.OUTPUT_ENCODING, "UTF-8"); ve.setProperty(RuntimeConstants.RESOURCE_LOADER...解析 #parse 会被velocity解析 #include("/template/utils/compare.vm") #parse("/template/component/menu.vm") define...#end #set($name = "王尼玛") $common #set($name = "张三") $common evaluate 可以后端保存velocity语句,传入解析: 比如我们在java
【漏洞预警 】Apache Solr Velocity 模板远程代码执行漏洞 ?...ps:由于昨天推文次数已经用完,所以没有即时推送,今天补上 0x00背景介绍 Apache Solr 是一个开源的搜索服务器。...Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现 近日国外安全研究员s00py在Github上公开了Apache Solr Velocity的服务端模板注入漏洞的...POC 文档名称 Apache Solr Velocity模板远程代码执行漏洞预警 关键字 Apache Solr,Velocity模板,远程代码执行漏洞 发布日期 2019年10月31日 0x01漏洞描述...0x02漏洞等级 高危 0x03受影响版本 经过测试,目前影响Apache Solr 8.1.1到8.2.0版本。但是目前无法确定出现问题的API是何时引入,所以预估是影响全版本。
0X01 漏洞概述 Apache Solr 是一个开源的搜索服务器。Solr使用Java语言开发,主要基于HTTP和ApacheLucene 实现。...10月31日,安全研究员S00pY在GitHub发布了ApacheSolr Velocity模版注入远程命令执行的POC,经过其他安全团队和人员的验证和复线,此漏洞已经能够被批量利用。...0X02 环境搭建 方法一:下载源码 https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/ 解压之后,不能直接启动,需要配置java环境变量,...访问config文件,Post提交以下数据: { "update-queryresponsewriter": { "startup": "lazy", "name": "velocity"...a1ba36a3689fa13759ff910e179fc133/raw/fae5e663ffac0e3996fd9dbb89438310719d347a/gistfile1.txt https://github.com/shadow-horse/Apache-Solr-Velocity-RCE
; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; import org.apache.velocity.app.VelocityEngine...-1.4.jar,velocity-dept.jar; 下载地址:http://jakarta.apache.org/velocity/ (4)运行后的结果如下: New Document hello...; import org.apache.velocity.context.Context; import org.apache.velocity.servlet.VelocityServlet; import...org.apache.velocity.app.Velocity; import org.apache.velocity.exception.ResourceNotFoundException; import...org.apache.velocity.exception.ParseErrorException; public class SampleServlet extends VelocityServlet
Velocity Notes 变量名$name 为空时打印变量本身。 $!name 为空时打印空字符串(不打印任何内容)。 ${name} 类似 name,为空时原样打印。...#end 其实不仅仅是变量名可以使用花括号,保留字同样可以使用,这在内联 Velocity 脚本的时候 非常有用。...数组 & 访问 Velocity 访问数组对象,无法通过类似 arr[2] 来访问特定位置的元素。...#set(arr = [0, 1, 2, 3])arr.get(2) 注:Velocity 中的数组对应 Java 中的 List 对象。...条件比较 在 Velocity 中可以使用大于(>)/小于(1) 要修改为 if( 转义$\name $\{name} 不解析执行的内容#[[ 这段内容将不被 Velocity 引擎解析,原文打出
预警编号:NS-2019-0046 2019-10-31 TAG: Apache Solr、Velocity、远程代码执行 漏洞危害: 高,攻击者利用此漏洞,可造成远程代码执行。...版本: 1.0 1 漏洞概述 10月30日,@_S00pY公开了Apache Solr 远程代码执行漏洞的利用方式,攻击者可通过Velocity模板实现远程代码执行。...此漏洞的触发需要两步完成,首先攻击者需通过config API将"params.resource.loader.enabled"配置项修改为true;再通过发送恶意velocity模板完成漏洞触发。...SEE MORE → 2影响范围 受影响版本 Apache Solr <= 8.2.0 (存在config API的版本均可能受此漏洞影响) 3漏洞检测 3.1 人工检测 满足下面任意一项,当前系统均可能受此漏洞影响...4、 添加安全认证,详细配置方法可参考官方文档: http://lucene.apache.org/solr/guide/8_2/basic-authentication-plugin.html#basic-authentication-plugin
官方文档: http://velocity.apache.org/engine/releases/velocity-1.7/user-guide.html Variables Notation: $...Array list: #foreach ( item in [“Not”, my, “fault”] ) Range operator: #foreach ( $item in [1..3] ) Velocity...” “opinion.txt” ) Variable: #include( foo bar ) #parse – Renders a local template that is parsed by Velocity...See parse_directive.maxdepth in velocity.properties to change from parse depth....#end VMs can be defined in one of two places: Template library: can be either VMs pre-packaged with Velocity
; 6 import javax.servlet.http.HttpServletResponse; 7 8 import org.apache.velocity.context.Context...; 9 import org.apache.velocity.tools.Scope; 10 import org.apache.velocity.tools.ToolManager; 11 import...org.apache.velocity.tools.view.ViewToolContext; 12 import org.springframework.web.servlet.view.velocity.VelocityToolboxView...contextPath 1 2 link 3 request 4 org.apache.velocity.tools.view.LinkTool...url参数 1 2 params 3 request 4 org.apache.velocity.tools.view.ParameterTool
使用maven引入jar org.apache.velocity velocity 1.7 org.apache.velocity velocity-tools...2.0 org.apache.struts struts-tiles...org.apache.struts struts-taglib org.apache.struts...commons-net 3.3 创建TemplateUtil工具类 package com.os.core.util.web; import org.apache.velocity.Template...; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.VelocityEngine; import
$变量名 = “值” ##velocity中仅有String做变量的值。
找到一份velocity模板。 1 <!
{name}情况二:Velocity ${} 、$!{}、!${}的区别 前言情况一:{name}情况二:!{name}情况三:!{name} 情况一:{name}情况二:!...前言 在使用Velocity时经常会看到三种使用变量的情况 情况一:${name} 情况二:$!{name} 情况三:!${name} 那么三者之间到底有什么区别呢?莫慌!!!...就像js中的布尔操作符一样,表示取反 原文出处: Velocity学习(三)之 {} 和 !{}、!${}区别
gist.githubusercontent.com/s00py/a1ba36a3689fa13759ff910e179fc133/raw/fae5e663ffac0e3996fd9dbb89438310719d347a/ 该漏洞的产生原因:Apache...https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/7.7.2/ 安装到 kail,因为在 kail 上可以不用再去配置 Java 环境。...Velocity 是 Apache 基金会的项目,开发的目标是分离 MVC 模式中的持久化层和业务层。...4、转换 xml:Velocity 提供一个叫 Anakia 的 ant 任务,可以读取 XML 文件并让它能够被 Velocity 模板读取。...Velocity 可以获取在 java 语言中定义的对象,从而实现界面和 java 代码的真正分离,这意味着可以使用 Velocity 替代 jsp 的开发模式了 当 Velocity 应用于 Web
相信这个问题是很多使用Velocity的朋友所经常碰到的,大家可能非常期望下面这样的代码能够运行: #if($foo == null) … #end 实际上这段代码会报错。...这是因为Velocity中对null的支持比较特别。总统上说,判断是否为null有下面几种方法: 1. #if (! $foo) 判断$foo为空,判断非空为 #if ($foo) 2....使用 #ifnull() 或 #ifnotnull() #ifnull ($foo) 要使用这个特性必须在velocity.properties文件中加入: userdirective =...org.apache.velocity.tools.generic.directive.Ifnulluserdirective = org.apache.velocity.tools.generic.directive.Ifnotnull
一、基本语法 一、基本语法 一、基本语法 1、”#”用来标识Velocity的脚本语句,包括#set、#if 、#else、#end、#foreach、#end、#iinclude、#parse、#macro...3、”{}”用来明确标识Velocity变量; 比如在页面中,页面中有一个$someonename,此时,Velocity将把someonename作为变量名,若我们程序是想在someone这 个变量的后面紧接着显示...如:#parse(“/blog/top.html”)或#include(“/blog/top.html”) parse与include的区别在于,若包含的文件中有Velocity脚本标签,将会进一步解析...三、关于#set的使用 在万不得已的时候,不要在页面视图自己声明Velocity脚本变量,也就是尽量少使用#set。...脚本语法摘要 四、Velocity脚本语法摘要 四、Velocity脚本语法摘要 1、声明:#set ($var=XXX) 左边可以是以下的内容 Variable reference String literal
领取专属 10元无门槛券
手把手带您无忧上云