## 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);
}