WebGoat-8.2.2靶场之不安全的反序列化漏洞
前言
序列化是将变量或对象转换成字符串的过程
反序列化就是把一个对象变成可以传输的字符串,目的就是为了方便传输
而反序列化漏洞就是,假设,我们写了一个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学习java反序列化漏洞
首发于freebuff. WebGoat-Insecure Deserialization Insecure Deserialization 01 概念 本课程描述了什么是序列化,以及如何操纵它来执行 ...
- 2018-2019-2 《网络对抗技术》Exp9 WebGoat 20165326
Web安全基础 jar包,密码:9huw 实验问题回答 SQL注入攻击原理,如何防御 原理:恶意用户在提交查询请求的过程中将SQL语句插入到请求内容中,同时程序本身对未对插入的SQL语句进行过滤,导致 ...
- web渗透漏洞靶场收集
最近将自己遇到过或者知道的web靶场链接奉上 0X01 DVWA 推荐新手首选靶场,配置简单,需下载phpstudy和靶场文件包,简单部署之后即可访问. 包含了常见的web漏洞(php的),每个漏洞分 ...
- webgoat白盒审计+漏洞测试
前言 小白,记录,有问题可以交流 乖乖放上参考链接: https://www.freebuf.com/column/221947.html https://www.sec-un.org/java代码审 ...
- Vulnstack内网靶场2
环境配置 内网2靶场由三台机器构成:WIN7.2008 server.2012 server 其中2008做为对外的web机,win7作为个人主机可上网,2012作为域控 网络适配器已经设置好了不用自 ...
- 【Vulfocus解题系列】手把手教你使用Vulfocus公开靶场对Apache Log4j2远程命令执行漏洞复现
前言 关于这个漏洞,啥都不用说了,直接发车. 工具下载 JNDIExploit:https://github.com/0x727/JNDIExploit 复现过程 启动靶场环境 直接用vulfocus ...
- 2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础
2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础 目录 实验内容与步骤 (一)Webgoat安装 (二)SQL注入攻击 1.命令注入(Command Injection ...
- [红日安全]Web安全Day1 - SQL注入实战攻防
本文由红日安全成员: Aixic 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名 ...
- [红日安全]Web安全Day2 - XSS跨站实战攻防
本文由红日安全成员: Aixic 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名 ...
- [红日安全]Web安全Day8 - XXE实战攻防
本文由红日安全成员: ruanruan 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了 ...
随机推荐
- Pep9课下作业
(1)编写一个伪代码算法 Set sum to 0 Input num1 Read num1 Set sum to sum + num1 Input num2 Read num2 Set sum to ...
- 4.ElasticSearch系列之基本概念
1. 文档 ElasticSearch是面向文档的,文档是所有可搜索数据的最小单位 文档会被序列化成JSON格式,保存在ES中 每个文档都有一个unique ID #查看前10条文档,了解文档格式 P ...
- 获取cpu的核数
//获取cpu的核数 System.out.println(Runtime.getRuntime().availableProcessors());
- 齐博x1模型里边钩子的创建与使用
在模型里边的钩子创建与使用方法跟在控制器里边的钩子创建及使用方法是有所区别的在模型里边创建的钩子,你可以理解为执行一个函数,是无法调用模型里边的类的方法及属性的.比如系统文件\application\ ...
- 实现etcd服务注册与发现
转载自:实现etcd服务注册与发现 0.1.目录结构 . ├── api │ └── main.go ├── common │ └── common.go ├── docker-compose ...
- js数组去重,id相同对某值相加合并
js数组去重,id相同对某值相加合并 案例1: 假设需要处理的数组结构. let arr =[ {id:'1', value:10}, {id:'1', value:20}, {id:'2', val ...
- C#多线程之同步基础篇
目录 一.基本概念 二.锁构造 Monitor Mutex 死锁 三.信号构造 Semaphore ManualResetEvent AutoResetEvent CountdownEvent 四.等 ...
- vue引用MarkDown(mavonEditor)编辑器,文档
mavonEditor Install mavon-editor (安装) npm install mavon-editor --save 如何引入: 全局引用: // 全局注册 import Vue ...
- Go语言核心36讲23
我在上两篇文章中,详细地讲述了Go语言中的错误处理,并从两个视角为你总结了错误类型.错误值的处理技巧和设计方式. 在本篇,我要给你展示Go语言的另外一种错误处理方式.不过,严格来说,它处理的不是错误, ...
- Gitlab 和 jenkins 搭建遇到的坑
1 Gitlab 端口默认 80 所有其他程序提前把端口腾空 2 Gitlab 配置的是pub 公钥 3 java版本要在1.8以上 4 Jenkins 配置私钥 5 需要配置各个目录的workspa ...