代码审计-Java项目-SSTI模板注入

admin 2024年5月28日11:20:57评论22 views字数 1086阅读3分37秒阅读模式

代码审计必备知识点:

1代码审计开始前准备:

环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。

2、代码审计前信息收集:

审计目标的程序名,版本,当前环境(系统,中间件,脚本语言等信息),各种插件等。

3、代码审计挖掘漏洞根本:

可控变量及特定函数,不存在过滤或过滤不严谨可以绕过导致的安全漏洞。

4、代码审计展开计划:

审计项目漏洞原理->审计思路->完整源码->应用框架->验证并利用漏洞。

代码审计两种方法

功能点或关键字分析可能存在漏洞

-抓包或搜索关键字找到代码出处及对应文件

-追踪过滤或接收的数据函数,寻找触发此函数或代码的地方进行触发测试。

-常规或部分MVC模型源码可以采用关键字的搜索挖掘思路。

-框架MVC 墨香源码一般会采用功能点分析抓包追踪挖掘思路。

1.搜索关键字找敏感函数

代码审计-Java项目-SSTI模板注入

2.根据目标功能点判断可能存在的漏洞

代码审计-Java项目-SSTI模板注入

JAVA项目——RCE漏洞产生层面

1、服务端直接存在可执行函数(exec()等),且对传入的参数过滤不严格导致RCE漏洞

2、服务端不直接存在可执行函数(exec()等),且对传入的参数过滤不严格导致RCE漏洞

3、由表达式注入导致的RCE漏洞,如:OGNL、SpEL、MVEL、EL、Fel、JST+EL等

4、由java后端模板引擎注入导致的RCE漏洞,如:FreemarkerVelocityThymeleaf

5、由java一些脚本语言引起的RCE漏洞,如:GroovyJavascriptEngine

6、由第三方开源组件引起的RCE漏洞,如:FastjsonShiroXstreamStruts2

案例:代码审计-SSTI-OFCMS-模板Freemarker

1.CNVD获取到OFCMSv1.1.3版本后台模板定制处存在命令执行漏洞

代码审计-Java项目-SSTI模板注入

2.使用idea打开源码,部署好环境并且启动

代码审计-Java项目-SSTI模板注入

3.根据cnvd给出的信息知道漏洞产生在模板处,所以第一步打开pom.xml查看项目引用的模板引擎。

发现使用了freemarker模板引擎,将鼠标移动到上面时还提示此版本存在模板注入漏洞。

代码审计-Java项目-SSTI模板注入

4.根据cnvd公开信息来到网站后台找到漏洞产生位置,发现有很多模板文件

代码审计-Java项目-SSTI模板注入

5.在任意模板文件中写入payload

payload<#assign ex="freemarker.template.utility.Execute"?new()>${ ex("calc") }

这里选择的模板文件是index.html :

代码审计-Java项目-SSTI模板注入

6.访问index.html模板文件,成功执行命令,弹出计算器

代码审计-Java项目-SSTI模板注入

原文始发于微信公众号(小黑子安全):代码审计-Java项目-SSTI模板注入

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月28日11:20:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   代码审计-Java项目-SSTI模板注入https://cn-sec.com/archives/2787156.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息