首页 > 其他分享 >WebGoat-8.2.2靶场之不安全的反序列化漏洞

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

时间:2023-01-09 18:57:02浏览次数:48  
标签:8.2 java 0.0 ysoserial jar 靶场 序列化 WebGoat

前言

序列化是将变量或对象转换成字符串的过程
反序列化就是把一个对象变成可以传输的字符串,目的就是为了方便传输
而反序列化漏洞就是,假设,我们写了一个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,将里面的编码复制到页面执行框里进行执行,执行完成后自己电脑会出现计算器界面

标签:8.2,java,0.0,ysoserial,jar,靶场,序列化,WebGoat
From: https://www.cnblogs.com/BlogVice-2203/p/17037439.html

相关文章

  • Fastjson反序列化漏洞
    前言Fastjson是阿里开发的一个Java库,用于将Java对象序列化为JSON格式,也可将字符串反序列化为Java对象。Fastjson是非常多见的Java反序列化漏洞,CTF中也出现的......
  • ThinkPHP v5.0.24 反序列化
    ThinkPHPv5.0.24反序列化前言昨天花了一下午的时间才把反序列化链给审明白,今天记录一下笔记再来审一遍。(自己还是太菜了~~~)在我的印象中,ThinkPHP框架的漏洞非常多,所以......
  • Phar反序列化漏洞
    前言通常我们在利用反序列化漏洞的时候,只能将序列化后的字符串传入unserialize(),随着代码安全性越来越高,利用难度也越来越大。但是利用phar文件会以反序列化的形式存......
  • Go 自定义序列化
    实现MarshalJSON()([]byte,error)方法,序列化后可以把原来的枚举数转化为枚举数对应的字符串实现UnmarshalJSON([]byte)error方法,可以把byte中的枚举的字符串转化为对......
  • 8.2echarts展示数据
    ​ Echarts快速使用  <!DOCTYPEhtml><htmlstyle="height:100%"><head><metacharset="utf-8"><scripttype="text/javascript"src="js/......
  • 8.2echarts展示数据
    ​ Echarts快速使用  <!DOCTYPEhtml><htmlstyle="height:100%"><head><metacharset="utf-8"><scripttype="text/javascript"src="js/......
  • drf-3.3反序列化使用
    反序列化使用1.验证使用序列化器进行反序列化时,需要对数据进行验证后,才能获取验证成功的数据或保存成模型类对象。在获取反序列化的数据前,必须调用is_valid()方法进行......
  • Shiro-721反序列化漏洞
    漏洞名称Shiro-721(ApacheShiroPaddingOracleAttack)反序列化利用条件ApacheShiro<1.4.2漏洞原理ApacheShirocookie中使用AES-128-CBC模式加密的rememberMe字......
  • .Net Core Mvc控制器返回JsonResult 序列化数据循环依赖问题
     开始找的解决方案发现并行不通services.AddControllers().AddNewtonsoftJson((options)=>{//忽略循环引用options.Ser......
  • weblogic XMLDecoder反序列化漏洞(CVE-2017-10271)
    漏洞描述WeblogicWLS组件中存在CVE-2017-10271远程代码执行漏洞,可以构造请求对运行weblogic中间件的主机进行攻击。受影响weblogic版本10.3.6.0.0,12.1.3.0.0,12.2.1.1.......