本文作者: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 远程代码执行
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
【漏洞预警 】 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是何时引入,所以预估是影响全版本。
; 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
、else foreach include 、 parse define evaluate macro macro的注意 org. apache . velocity ... velocity 创建一个公共方法,它是通过类路径来获取模板的..., "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
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 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
; 6 import javax.servlet.http.HttpServletResponse; 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 2 link 3 request 4 org. apache . velocity .tools.view.LinkTool...url参数 2 params 3 request 4 org. apache . velocity .tools.view.ParameterTool
官方文档: 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
使用maven引入jar org. apache . velocity velocity org. apache . velocity velocity -tools...2.0 org. apache .struts struts-tiles...org. apache .struts struts-taglib org. apache .struts...commons-net 创建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
一、基本语法 一、基本语法 一、基本语法 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
相信这个问题是很多使用 Velocity 的朋友所经常碰到的,大家可能非常期望下面这样的代码能够运行: #if($foo == null)