JavaThings - บันทึกการพูดคุยด้านความปลอดภัยของ Java ที่เกี่ยวข้อง
"Java Security Talk" เป็นบทความที่ฉันเขียนเกี่ยวกับการเรียนรู้ Java มันไม่ได้เข้มงวดมากนักและไม่มีเทคโนโลยีสูง Repository นี้มีไว้เพื่อการบันทึกและจัดระเบียบเป็นหลัก และแนบโค้ดบางส่วน
ไดเร็กทอรีพูดคุยเรื่องความปลอดภัย Java
- การพูดคุยเรื่องความปลอดภัยของ Java - 01 ลักษณะไดนามิกของ Java - การสะท้อนกลับ
- Java Security Talk - 02 การใช้การสะท้อนอย่างง่าย
- Java Security Talk - 03 เทคนิคการสะท้อนขั้นสูงหลายประการ
- Java Security Talk - การวิเคราะห์กระบวนการสื่อสาร 04.RMI
- Java Security Talk - 05 การใช้ codebase เพื่อโจมตี RMI Registry
- Java Security Talk - 06. ความเข้าใจเชิงลึกเกี่ยวกับโปรโตคอล RMI และอ็อบเจ็กต์ซีเรียลไลซ์
- Java Security Talk - 07. ช่องโหว่การดีซีเรียลไลซ์ในภาษาต่างๆ
- Java Security Talk- 08. ทำความรู้จักกับ Gadget ที่ง่ายที่สุด——URLDNS
- Java Security Talk - 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. วิธีการโหลด bytecode แบบไดนามิกใน Java
- Java Security Talk - 14. เหตุใดจึงจำเป็นต้องใช้ CommonsCollections3
- Java Security Talk - 15. การใช้ TemplatesImpl ใน Shiro
- Java Security Talk - 16.commons-collections4 และการแก้ไขช่องโหว่
- Java Security Talk - 17. การใช้การดีซีเรียลไลเซชัน CommonsBeanutils และ Shiro โดยไม่มีการรวบรวมทั่วไป
- Java Security Talk - 18. ห่วงโซ่ช่องโหว่การดีซีเรียลไลซ์เนทีฟ JDK7u21
- Java Security Talk - 19. การสร้างและการวิเคราะห์โปรโตคอลดีซีเรียลไลเซชัน Java
รหัสสาธิต
ไบต์โค้ด:
- การสาธิตการโหลด bytecode ระยะไกล: HelloClassLoader
- ค่าเริ่มต้นของระบบจะกำหนด Class โหลด bytecode Demo: HelloDefineClass
- ใช้ TemplatesImpl เพื่อโหลด bytecode Demo: HelloTemplatesImpl
- การใช้ BCEL เพื่อโหลด bytecode Demo: HelloBCEL
ดีซีเรียลไลซ์:
- Transformer Demo ที่ง่ายที่สุด: CommonsCollectionsIntro.java
- CommonsCollections6 แบบง่ายของฉันนั้นง่ายกว่าสำหรับทุกคนที่จะเข้าใจ
- Transformer Demo สร้างขึ้นโดยใช้ TemplatesImpl: CommonsCollectionsIntro2.java
- การสาธิต Transformer โดยไม่มี InviverTransformer: CommonsCollectionsIntro3.java
- CommonsCollections3 แบบง่ายของฉัน
- CommonsCollections6 ดำเนินการหลายคำสั่งพร้อมกัน: CommonsCollections6Multiple
- CommonsCollections6 Exploit Chain ที่รองรับเวอร์ชัน commons-collections4.0: CommonsCollections6For4
- ห่วงโซ่การหาประโยชน์ CommonsBeanutils1 แบบง่ายของฉัน: CommonsBeanutils1
- เวอร์ชันที่เรียบง่ายของห่วงโซ่การใช้งาน Java Native JDK7u21
การดีซีเรียลไลเซชันของ Shiro:
- หนึ่งในแอปพลิเคชันเว็บ Shiro ที่ง่ายที่สุด: shirodemo
- ใช้คีย์เริ่มต้น CommonsCollections6 และ Shiro เพื่อสร้าง Payload: Client0.java, CommonsCollections6.java ซึ่งอาจไม่สามารถดีซีเรียลไลซ์ใน Tomcat ได้สำเร็จ
- ใช้คีย์เริ่มต้น CommonsCollections, TemplatesImpl และ Shiro เพื่อสร้าง Payload: Client.java, CommonsCollectionsShiro.java เพื่อแก้ไขปัญหาข้างต้น
- ห่วงโซ่การใช้ประโยชน์การดีซีเรียลไลซ์ที่สร้างขึ้นโดยใช้ commons-beanutils ที่มาพร้อมกับ Shiro ตามค่าเริ่มต้น: CommonsBeanutils1Shiro.java
เครื่องมือวิเคราะห์การดีซีเรียลไลเซชันที่พัฒนาขึ้นเอง:
- ซคาร์: https://github.com/phith0n/zkar
- วิธีใช้ zkar เพื่อแก้ไขปัญหาที่ไม่ตรงกันของ SerialVersionUID: https://t.zsxq.com/Yz3B6yJ