JavaThings - Java 보안 관련 대화 노트
"Java Security Talk"는 Java 학습과 관련하여 제가 쓰고 있는 에세이입니다. 그다지 엄격하지도 않고 첨단 기술도 아닙니다. 이 저장소는 주로 일부 코드를 기록하고 정리하고 첨부하는 데 사용됩니다.
Java 보안 대화 디렉토리
- Java 보안 토크 - 01. Java의 동적 특성 - 반영
- Java Security Talk - 02. 리플렉션의 간단한 사용법
- Java Security Talk - 03. 몇 가지 고급 반사 기술
- Java Security Talk - 04.RMI 통신 프로세스 분석
- Java 보안 토크 - 05. 코드베이스를 사용하여 RMI 레지스트리 공격
- Java Security Talk - 06. RMI 프로토콜과 직렬화된 객체에 대한 심층적인 이해
- Java Security Talk - 07. 다양한 언어의 역직렬화 취약점
- Java 보안 토크- 08. 가장 간단한 가젯 알아보기——URLDNS
- Java 보안 토크 - 09. CommonsCollections 첫 소개
- Java Security Talk - 10. TransformedMap을 사용하여 실제 POC 작성
- Java Security Talk - 11. LazyMap에 대한 자세한 설명
- Java Security Talk - 12. 단순화된 버전 CommonsCollections6
- Java Security Talk - 추가 1장. BCEL ClassLoader는 어디에 있나요?
- Java Security Talk - 13. Java에서 바이트코드를 동적으로 로드하는 방법
- Java 보안 토크 - 14. CommonsCollections3이 필요한 이유
- Java 보안 토크 - 15. Shiro에서 TemplatesImpl 활용
- Java Security Talk - 16.commons-collections4 및 취약점 수정
- Java 보안 토크 - 17. commons-collection 없이 CommonsBeanutils 및 Shiro 역직렬화 활용
- Java Security Talk - 18. 네이티브 역직렬화 익스플로잇 체인 JDK7u21
- Java Security Talk - 19. Java 역직렬화 프로토콜 구성 및 분석
데모 코드
바이트코드:
- 원격 바이트코드 로딩 데모: HelloClassLoader
- 시스템은 기본적으로 바이트코드를 로딩하는 DefineClass로 설정됩니다. 데모: HelloDefineClass
- TemplatesImpl을 사용하여 바이트코드 데모 로드: HelloTemplatesImpl
- BCEL을 사용하여 바이트코드 데모: HelloBCEL
역직렬화:
- 가장 간단한 Transformer 데모: CommonsCollectionsIntro.java
- 단순화된 CommonsCollections6은 모든 사람이 이해하기 더 쉽습니다.
- TemplatesImpl을 사용하여 구성된 Transformer 데모: CommonsCollectionsIntro2.java
- InvokerTransformer가 없는 Transformer 데모: CommonsCollectionsIntro3.java
- 나의 단순화된 CommonsCollections3
- CommonsCollections6은 한 번에 여러 명령을 실행합니다. CommonsCollections6Multiple
- commons-collections4.0 버전을 지원하는 CommonsCollections6 익스플로잇 체인: CommonsCollections6For4
- 단순화된 CommonsBeanutils1 익스플로잇 체인: CommonsBeanutils1
- Java 네이티브 활용 체인 JDK7u21의 단순화된 버전
Shiro 역직렬화:
- 가장 간단한 Shiro 웹 애플리케이션 중 하나: shirodemo
- CommonsCollections6 및 Shiro 기본 키를 사용하여 페이로드: Client0.java, CommonsCollections6.java를 구성합니다. 이는 Tomcat에서 성공적으로 역직렬화되지 않을 수 있습니다.
- CommonsCollections, TemplatesImpl 및 Shiro 기본 키를 사용하여 페이로드: Client.java, CommonsCollectionsShiro.java를 구성하여 위의 문제를 해결합니다.
- 기본적으로 Shiro와 함께 제공되는 commons-beanutils를 사용하여 구성된 역직렬화 활용 체인: CommonsBeanutils1Shiro.java
자체 개발한 역직렬화 분석 도구:
- zkar: https://github.com/phith0n/zkar
- zkar를 사용하여 SerialVersionUID 불일치 문제를 해결하는 방법: https://t.zsxq.com/Yz3B6yJ