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

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

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]  黑客接单网

相关文章

无视HTTPS建议中间人进犯

大约十年前,Firesheep制作了一个大新闻。多年来,安全人员现已了解了公共WiFi网络的损害,但直到有人创立了这个用户友爱的Firefox扩展插件之后,这个安全问题才得到了人们的重视。从那时起,网...

攻破暗盘之拿下吃鸡DNF等游戏垂钓站群

前段时间有个网友给我发了个网址,说找到个专门做垂钓网站的衔接,让我看看,然后就引出了一系列事情。 网址如下:http://mfnyongshihuigui.jiebao8.top 其时也没介意,有天闲...

大论帝国cms的安全性

帝国cms服务器网站目录安全设置经历内容仅供参考,假如您在修正具体问题时有疑问主张能够在文章下面具体咨询,体系114网将极力供给协助。一起假如你有好的经历,欢迎投稿共享给广阔网友。   1、目录权限...

怎么避免网站要害数据被人歹意收集

 昨天晚上花了几个小时用Jsoup写了一个网站收集器,帮一个高中同学收集了一个工业信息门户上的芯片待售信息。网站上显现的数据多达60w+条, 我写的程序跑了7个小时只收集了一半,算是能够交差了。 这现...

实例解说False盲注根底原理

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

经过APACHE ACCESS LOG来使用LFI缝隙

本地文件包括(LFI)缝隙,常被入侵者用来提取站点地点服务器上的不同文件内容,如passwd,hosts等。但你有没有想过将它提升到另一个层级?即经过本地文件包括来获取服务器上的浏览器shell(c9...