
Go-आधारित Java सीरियलाइज़ेशन प्रोटोकॉल विश्लेषक जो ysoserial गैजेट समर्थन और डेटा मैनिपुलेशन के लिए एक लाइब्रेरी के साथ डिसीरियलाइज़ेशन पेलोड को पार्स करता है, डंप करता है और जनरेट करता है।
ZKar एक Java सीरियलाइज़ेशन प्रोटोकॉल विश्लेषण उपकरण है जिसे Go में लागू किया गया है। यह उपकरण अभी भी कार्य प्रगति पर है, इसलिए कोई पूर्ण API दस्तावेज़ और योगदान गाइड नहीं है।
ZKar प्रदान करता है:
ZKar का उपयोग करना आसान है। ZKar को लाइब्रेरी और उसकी निर्भरताओं के साथ स्थापित करने के लिए go get का उपयोग करें:
go get -u github.com/phith0n/zkar
इसके बाद, अपने एप्लिकेशन में github.com/phith0n/zkar/* का उपयोग करें:
package main
import (
"fmt"
"github.com/phith0n/zkar/serz"
"log"
"os"
)
func main() {
fs, _ := os.Open("./testcases/ysoserial/CommonsCollections6.ser")
defer fs.Close()
serialization, err := serz.FromReader(fs)
if err != nil {
log.Fatal("parse error")
}
fmt.Println(serialization.ToString())
}
यहाँ एक उदाहरण है जो दिखाता है कि एक मौजूदा पेलोड को कैसे पढ़ा जाए और उसे UTF-8 ओवरलॉन्ग एन्कोडिंग पेलोड में संशोधित किया जाए।
ZKar एक कमांड लाइन उपयोगिता उपकरण भी प्रदान करता है जिसे आप सीधे उपयोग कर सकते हैं:
$ go run main.go
NAME:
zkar - A Java serz tool
USAGE:
main [global options] command [command options] [arguments...]
COMMANDS:
generate generate Java serz attack payloads
dump parse the Java serz streams and dump the struct
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help (default: false)
उदाहरण के लिए, आप ysoserial से पेलोड CommonsBeanutils3 को डंप कर सकते हैं जैसे:
$ go run main.go dump -f "$(pwd)/testcases/ysoserial/CommonsBeanutils3.ser"
ZKar एक अच्छी तरह से परीक्षित उपकरण है जिसने सभी ysoserial द्वारा उत्पन्न गैजेट्स के पार्सिंग और पुनर्निर्माण परीक्षण पास कर लिए हैं। इसका मतलब है कि ysoserial द्वारा उत्पन्न गैजेट को ZKar द्वारा पार्स किया जा सकता है, और पार्स की गई स्ट्रक्ट को वापस बाइट स्ट्रिंग में बदला जा सकता है जो मूल के बराबर है।
नोट: JDK8u20 पेलोड को पार्स करने के लिए, आपको dump कमांड में --jdk8u20 फ़्लैग जोड़ना चाहिए।
चूंकि पेलोड एक मान्य सीरियलाइज़्ड डेटा स्ट्रीम नहीं है, इसलिए इस फ़्लैग के माध्यम से ZKar को डेटा को पैच करने के लिए बताना आवश्यक है।
ZKar MIT लाइसेंस के तहत जारी किया गया है। देखें LICENSE
| गैजेट | पैकेज | पार्स | पुनर्निर्माण | पार्स समय |
|---|
| AspectJWeaver | ysoserial | ✅ | ✅ | 80.334µs |
| BeanShell1 | ysoserial | ✅ | ✅ | 782.613µs |
| C3P0 | ysoserial | ✅ | ✅ | 98.321µs |
| Click1 | ysoserial | ✅ | ✅ | 573.298µs |
| Clojure | ysoserial | ✅ | ✅ | 72.415µs |
| CommonsBeanutils1 | ysoserial | ✅ | ✅ | 461.15µs |
| CommonsCollections1 | ysoserial | ✅ | ✅ | 64.484µs |
| CommonsCollections2 | ysoserial | ✅ | ✅ | 508.918µs |
| CommonsCollections3 | ysoserial | ✅ | ✅ | 564.071µs |
| CommonsCollections4 | ysoserial | ✅ | ✅ | 535.449µs |
| CommonsCollections5 | ysoserial | ✅ | ✅ | 137.609µs |
| CommonsCollections6 | ysoserial | ✅ | ✅ | 68.753µs |
| CommonsCollections7 | ysoserial | ✅ | ✅ | 178.549µs |
| FileUpload1 | ysoserial | ✅ | ✅ | 35.39µs |
| Groovy1 | ysoserial | ✅ | ✅ | 150.991µs |
| Hibernate1 | ysoserial | ✅ | ✅ | 789.674µs |
| Hibernate2 | ysoserial | ✅ | ✅ | 168.624µs |
| JBossInterceptors1 | ysoserial | ✅ | ✅ | 632.581µs |
| JRMPClient | ysoserial | ✅ | ✅ | 32.967µs |
| JRMPListener | ysoserial | ✅ | ✅ | 38.263µs |
| JSON1 | ysoserial | ✅ | ✅ | 2.157225ms |
| JavassistWeld1 | ysoserial | ✅ | ✅ | 468.596µs |
| Jdk7u21 | ysoserial | ✅ | ✅ | 355.01µs |
| Jython1 | ysoserial | ✅ | ✅ | 216.862µs |
| MozillaRhino1 | ysoserial | ✅ | ✅ | 1.775193ms |
| MozillaRhino2 | ysoserial | ✅ | ✅ | 409.124µs |
| Myfaces1 | ysoserial | ✅ | ✅ | 22.997µs |
| Myfaces2 | ysoserial | ✅ | ✅ | 38.131µs |
| ROME | ysoserial | ✅ | ✅ | 485.804µs |
| Spring1 | ysoserial | ✅ | ✅ | 797.469µs |
| Spring2 | ysoserial | ✅ | ✅ | 358.041µs |
| URLDNS | ysoserial | ✅ | ✅ | 21.502µs |
| Vaadin1 | ysoserial | ✅ | ✅ | 438.729µs |
| Wicket1 | ysoserial | ✅ | ✅ | 23.509µs |
| JDK8u20* | pwntester | ✅ | ✅ | 529.3µs |