

WebGoat-8.2.2靶场之不安全的反序列化漏洞 - Vice_2203
source link: https://www.cnblogs.com/BlogVice-2203/p/17037439.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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


Recommend
-
14
README.MD WebGoat 8: A deliberately insecure Web Application
-
14
0x01 简介选择IDEA作为源码调试工具,Webgoat作为漏洞分析的靶场。将项目源码下载到本地...
-
8
作者:且听安全 原文链接:https://mp.weixin.qq.com/s/F2jFMkmN3K9yn_uuICStuA 很...
-
7
前几天看到了这篇文章 ,记录一下。使用SerializationBinder先来一个demo,用SerializationB...
-
7
前言 Active Directory 域服务,是一种目录服务,提供了存储目录数据信息以及用户相关的一些密码,电话号码等等一些数据信息,且可让用户和管理员使用这些数据,有利于域管理员对用户的数据信息进行管理。 AD CS (Active...
-
11
前言 WordPress 是一种使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站。也算是一个内容管理系统(CMS) 环境搭建 docker环境...
-
9
前言 WAF是英文"Web Application Firewall"的缩写,中文意思是"Web应用防火墙",也称为"网站应用级入侵防御系统"。WAF是集WEB防护、网页保护、负载均衡、应用交付于一体的WEB整体安全防护设备 WAF从形态上可分为硬件WAF、...
-
6
前言 序列化(Serialization):将对象的状态信息转换为可以存储或传输的形式的过程,一般将对象转换为字节流。序列化时,对象的当前状态被写入到临时或持久性存储区(文件、内存、数据库等)。 反序列化(Deserializati...
-
10
前言 Raven 2是一个中级boot2root虚拟机。有四面旗帜需要捕捉。在多次入侵之后,Raven Security采取了额外措施来加固他们的网络服务器,以防止黑客进入。你还能入侵Raven吗? 靶场环境
-
10
前言 Tr0ll的灵感来源于OSCP实验室内机器的不断拖动。 目标很简单,获取root并从/root目录中获取Proof.txt。 不适合那些容易受挫的人!公平的警告,前方有巨魔! 靶机环境
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK