JavaThings – Diskussionsnotizen zur Java-Sicherheit
„Java Security Talk“ ist ein Aufsatz, den ich zum Thema Java-Lernen schreibe. Er ist nicht sehr streng und nicht hochtechnologisch. Dieses Repository dient hauptsächlich zum Aufzeichnen und Organisieren sowie zum Anhängen von Code.
Diskussionsverzeichnis zur Java-Sicherheit
- Java-Sicherheitsgespräch – 01. Die dynamischen Eigenschaften von Java – Reflexion
- Java Security Talk – 02. Einfache Verwendung von Reflection
- Java Security Talk - 03. Mehrere fortgeschrittene Reflexionstechniken
- Java Security Talk – 04.RMI-Kommunikationsprozessanalyse
- Java Security Talk – 05. Verwenden der Codebasis zum Angriff auf die RMI-Registrierung
- Java Security Talk – 06. Vertiefendes Verständnis des RMI-Protokolls und serialisierter Objekte
- Java Security Talk – 07. Deserialisierungsschwachstellen in verschiedenen Sprachen
- Java Security Talk – 08. Lernen Sie das einfachste Gadget kennen – URLDNS
- Java Security Talk – 09. Erste Einführung in CommonsCollections
- Java Security Talk – 10. Verwenden Sie TransformedMap, um einen echten POC zu schreiben
- Java Security Talk - 11. Detaillierte Erklärung von LazyMap
- Java Security Talk – 12. Vereinfachte Version CommonsCollections6
- Java Security Talk – Extrakapitel 1. Wo ist BCEL ClassLoader?
- Java Security Talk – 13. Methoden zum dynamischen Laden von Bytecode in Java
- Java Security Talk – 14. Warum CommonsCollections3 benötigt wird
- Java Security Talk – 15. Verwendung von TemplatesImpl in Shiro
- Java Security Talk – 16.commons-collections4 und Schwachstellenkorrekturen
- Java Security Talk – 17. CommonsBeanutils- und Shiro-Deserialisierungsnutzung ohne Commons-Collections
- Java Security Talk – 18. Native Deserialisierungs-Exploit-Kette JDK7u21
- Java Security Talk – 19. Aufbau und Analyse des Java-Deserialisierungsprotokolls
Democode
Bytecode:
- Remote-Bytecode-Ladedemo: HelloClassLoader
- Das System verwendet standardmäßig defineClass, um den Bytecode zu laden. Demo: HelloDefineClass
- Verwenden Sie TemplatesImpl, um die Bytecode-Demo zu laden: HelloTemplatesImpl
- Verwenden von BCEL zum Laden von Bytecode-Demo: HelloBCEL
Deserialisierung:
- Die einfachste Transformer-Demo: CommonsCollectionsIntro.java
- Meine vereinfachten CommonsCollections6 sind für jedermann verständlicher
- Transformer-Demo erstellt mit TemplatesImpl: CommonsCollectionsIntro2.java
- Transformer-Demo ohne InvokerTransformer: CommonsCollectionsIntro3.java
- Meine vereinfachten CommonsCollections3
- CommonsCollections6 führt mehrere Befehle gleichzeitig aus: CommonsCollections6Multiple
- CommonsCollections6-Exploit-Kette, die die Commons-Collections4.0-Version unterstützt: CommonsCollections6For4
- Meine vereinfachte CommonsBeanutils1-Exploit-Kette: CommonsBeanutils1
- Vereinfachte Version der nativen Java-Nutzungskette JDK7u21
Shiro-Deserialisierung:
- Eine der einfachsten Shiro-Webanwendungen: Shirodemo
- Verwenden Sie CommonsCollections6 und Shiro-Standardschlüssel, um Nutzdaten zu erstellen: Client0.java, CommonsCollections6.java, die in Tomcat möglicherweise nicht erfolgreich deserialisiert werden können.
- Verwenden Sie die Standardschlüssel CommonsCollections, TemplatesImpl und Shiro, um die Nutzlast zu erstellen: Client.java, CommonsCollectionsShiro.java, um die oben genannten Probleme zu lösen
- Mit commons-beanutils erstellte Deserialisierungs-Nutzungskette, die standardmäßig mit Shiro geliefert wird: CommonsBeanutils1Shiro.java
Selbstentwickeltes Deserialisierungsanalysetool:
- zkar: https://github.com/phith0n/zkar
- So verwenden Sie zkar, um das Problem der SerialVersionUID-Nichtübereinstimmung zu beheben: https://t.zsxq.com/Yz3B6yJ