Sploitus

Exploit for WebLogic-Shiro-shell

kitploit ยท 2026-08-25

Exploit Code

MARKDOWN66 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-Y4ER-WEBLOGIC-SHIRO-SHELL
# Java ์—ญ์ง๋ ฌํ™” ๊ธฐ์ˆ  ๊ณต์œ 

์ด๋ฒˆ ๊ณต์œ ์—์„œ ๋‹ค๋ฃจ๋Š” ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. Java ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™” ๊ธฐ์ดˆ
  2. ์—ญ์ง๋ ฌํ™” ์‹œ ์™œ ์ทจ์•ฝ์ ์ด ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?
  3. Java ๋ฆฌํ”Œ๋ ‰์…˜
  4. ysoserial CommonsCollections2, CommonsCollections5
  5. Java ClassLoader๊ฐ€ ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•
  6. WebLogic CVE-2020-2555 CVE-2020-2883 RCE
  7. Shiro-550 rememberMe ํ•˜๋“œ์ฝ”๋”ฉ์œผ๋กœ ์ธํ•œ ์—ญ์ง๋ ฌํ™” RCE
  8. WebLogic + Shiro ์—ญ์ง๋ ฌํ™” ์›ํด๋ฆญ filter ๋ฉ”๋ชจ๋ฆฌ ์…ธ ๋“ฑ๋ก



## Java ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™” ๊ธฐ์ดˆ

> Java ์ง๋ ฌํ™”๋ž€ Java ๊ฐ์ฒด๋ฅผ ๋ฐ”์ดํŠธ ์‹œํ€€์Šค๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•˜๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ, ํŒŒ์ผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ธฐ ์‰ฝ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค. ObjectOutputStream ํด๋ž˜์Šค์˜ writeObject() ๋ฉ”์„œ๋“œ๊ฐ€ ์ง๋ ฌํ™”๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ Java ๊ฐ์ฒด๋ฅผ ๋ฐ”์ดํŠธ ์‹œํ€€์Šค๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
> 
> Java ์—ญ์ง๋ ฌํ™”๋ž€ ๋ฐ”์ดํŠธ ์‹œํ€€์Šค๋ฅผ Java ๊ฐ์ฒด๋กœ ๋ณต์›ํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•˜๋ฉฐ, ObjectInputStream ํด๋ž˜์Šค์˜ readObject() ๋ฉ”์„œ๋“œ๊ฐ€ ์—ญ์ง๋ ฌํ™”์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ `SerializeAndDeserialize`๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. **ps: ์—ฌ๊ธฐ์„œ ์ฝ”๋“œ ๋‚ด ๊ฐ•์ œ ํ˜•๋ณ€ํ™˜์— ์ฃผ๋ชฉํ•˜์„ธ์š”** ```java package org.chabug.demo;

import org.chabug.entity.Dog; import org.chabug.entity.Person; import org.chabug.util.Serializables;

/* ่ฟ™ไธชไพ‹ๅญๆ˜ฏไธบไบ†่ฏๆ˜Žๅช่ฆๅฎž็Žฐไบ†SerializableๆŽฅๅฃ็š„็ฑป้ƒฝๅฏไปฅ่ขซๅบๅˆ—ๅŒ– ๅนถไธ”Javaๅ†…็ฝฎ็š„ๅ‡ ๅคงๆ•ฐๆฎ็ฑปๅž‹ไนŸๅฏ่ขซๅบๅˆ—ๅŒ–๏ผŒๅ› ไธบไป–ไปฌ้ƒฝ็ปงๆ‰ฟไบ†Object็ฑป */

public class SerializeAndDeserialize {

root@kitploit:~
    
    
    public static void main(String[] args) throws Exception {
        byte[] bytes;
        String s1 = "I'm a String Object....";
        bytes = Serializables.serializeToBytes(s1);
        Object o1 = Serializables.deserializeFromBytes(bytes);
        System.out.println(o1);
    
        String[] s2 = new String[]{"tom", "bob", "jack"};
        bytes = Serializables.serializeToBytes(s2);
        String[] o2 = (String[])Serializables.deserializeFromBytes(bytes);
        System.out.println(o2);
    
        int i = 123;
        bytes = Serializables.serializeToBytes(i);
        int o3 = (Integer) Serializables.deserializeFromBytes(bytes);
        System.out.println(o3);
    
        // ไธ€ๅชๅๅซwoody็š„็‹—
        Dog dog = new Dog();
        dog.setName("woody");
    
        // tom
        Person tom = new Person();
        tom.setAge(14);
        tom.setName("tom");
        tom.setSex("็”ท");
        tom.setDog(dog);
    
        bytes = Serializables.serializeToBytes(tom);
        Person o = (Person) Serializables.deserializeFromBytes(bytes);
        System.out.println(o);
    
    }