gpt4 book ai didi

WebGoat-8.2.2靶场之不安全的反序列化漏洞

转载 作者:我是一只小鸟 更新时间:2023-01-09 22:36:00 31 4
gpt4 key购买 nike

前言

序列化是将变量或对象转换成字符串的过程 反序列化就是把一个对象变成可以传输的字符串,目的就是为了方便传输 而反序列化漏洞就是,假设,我们写了一个class,这个class里面存有一些变量。当这个class被实例化了之后,在使用过程中里面的一些变量值发生了改变,之所以会产生反序列化漏洞是因为应用程序在处理对象、魔术函数以及序列化相关问题的时候导致的,那么用户就可以注入精心构造的 payload。当进行反序列化的时候就有可能会触发对象中的一些魔术方法,造成意想不到的危害.

靶场环境

需要java 15以及java 8 WebGoat-8.2.2靶场 。

环境搭建

                        
                          java -version //查看java版本
java15  //切换java15环境

//不懂切换的老铁可以参考以下链接
https://www.cnblogs.com/BlogVice-2203/p/17037847.html

java -jar webgoat-server-8.2.2.jar --server.port=8080 --server.addres=0.0.0.0   //启动靶场,且靶场的端口为8080
如果不写--server.port=8080 --server.addres=0.0.0.0 会默认使用靶场的9001端口

                        
                      

浏览器访问localhost:8080/WebGoat 。

注册一个账号密码均为admin123的账号 。

注册成功后就会自动弹出以下界面,然后点击不安全序列化 。

java反序列化漏洞复现

java的序列化是由java.io.ObjectOutputStream类中的writeObject()函数实现的,而反序列化是由于java.io.ObjectInputStream类中的readObject()函数实现的页面提示让我们将要执行的代码进行序列化,然后base64编码,这里有个rO0AB开头的字符串编码,这个是java序列化的base64编码,也就是说他要我们进行序列化后还要再编码一次 。

并且这里还有一个可以执行系统命令的函数exec,我们可以在构造payload中写入命令执行代码,这里由于是windows系统,我就直接执行calc.exe开启计算器 。

开始构造payload,这里用到java8来运行程序 。

                        
                          java -Dhibernate5 -cp hibernate-core-5.4.28.Final.jar;ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.GeneratePayload Hibernate1 calc.exe >payload1.bin   
注:-Dhibernate5对应我们要使用的hibernate-core-5.4.28.Final.jar主键,ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.GeneratePayload是用来生成payload,Hibernate1是ysoserial程序的一个加密模块,calc.exe >payload1.bin是将calc.exe执行程序写入到payload1.bin文件

python java_base64.py  //将payload1.bin进行base64编码


                        
                      

生成成功后查看payload1.txt,将里面的编码复制到页面执行框里进行执行,执行完成后自己电脑会出现计算器界面 。

最后此篇关于WebGoat-8.2.2靶场之不安全的反序列化漏洞的文章就讲到这里了,如果你想了解更多关于WebGoat-8.2.2靶场之不安全的反序列化漏洞的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com