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] 黑客接单网
简化、优化你的补丁办理 许多进犯机制,都是针对未修补的体系。所以,不论你的网络是否对外开放,都应该定时更新操作体系和应用程序。尽管这个主张归于陈词滥调,但从另一个旁边面也说明晰该主张的重要性。 关于W...
尽管攻击方式不算复杂,但是RIG仍然能通过一些恶意软件活动获得较大的流量。而那些利用被黑站点和恶意广告,重定向到RIG的流量,是通过服务端的302跳转机制,或者是通过客户端的iframe和JS脚本...
HTTP会话绑架 HTTP是无状况的协议,为了保持和盯梢用户的状况,引入了Cookie和Session,但都是根据客户端发送cookie来对用户身份进行辨认,所以说拿到了cookie,就能够取得vic...
前语 前次的那篇文章《一名代码审计新手的实战阅历与感悟》得到了不少读者的支撑,也得到了FreeBuf这个渠道的必定,这给了我这个菜的不能再菜的小菜鸟很大的决心。可是,不足之处仍是许多,比方文章中呈现的...
东西预备 BurpSuiteFree (或许咱们最喜爱最常用的抓包神器,需求Java环境); 火狐浏览器(个人比较喜爱的浏览器;360/Chrome等浏览器都能够); SwitchyOmega插件(设...
花费了点时刻研讨了下PHP序列化,写在这儿。一是便利自己知识点回忆,二是协助相同有疑问的人,欢迎纠正过错,不喜勿喷. 0×01.确认装备文件 首要体系运用的ubuntu apt-get install...