Spring未授权环境搭建及学习IDEA的pom.xml使用

背景:

  渗透测试经常碰到Spring的框架,但是Spring框架的漏洞利用都比较难,或者说是我找不到漏洞的应用背景(漏洞在什么地方?),一直很困惑。直接拉取docker的话又不太助于理解,所以就入坑了。

一、安装maven

  安装过程略过,安装好后需要配置环境变量什么的,找个教程安装即可。

  1.环境变量配置好是这样的(如果输入mvn -version也可以出来,但显示not find JDK什么的就是环境变量没配置好)

  

   2.找到安装目录配置settings.xml

    这里配置的是依赖下载到什么地方(我这里配置下载到了maven目录)

<localRepository>D:mavenmaven3.6manen_jar</localRepository>

  

     这里配置中央仓库地址(这里必须配置)

  

        <!-- 阿里云仓库 -->
        <mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
        </mirror>

        <!-- 中央仓库1 -->
        <mirror>
            <id>repo1</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://repo1.maven.org/maven2/</url>
        </mirror>

        <!-- 中央仓库2 -->
        <mirror>
            <id>repo2</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://repo2.maven.org/maven2/</url>
        </mirror>
  </mirrors>

  最后那还有个JDK配置(不知道起不起作用)

  

二、新建项目

  1.选择Spring Initializr

  .

   2.选择JDK

  

   3.选中Spring Web即可

  

  4.下一步起个项目名称点击完成

  5.选择pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <repositories>
        <repository>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
        </repository>

        <repository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/libs-snapshot</url>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>https://repo.spring.io/libs-snapshot</url>
        </pluginRepository>
    </pluginRepositories>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>spirngboot-rec</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spirngboot-rec</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jolokia</groupId>
            <artifactId>jolokia-core</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

  6.这里就不得不说超级大坑

  遇到依赖包not found怎么办???现在也没太搞明白具体什么缘由,这里被坑了很长时间,总结下面几点

  

  (1)maven环境配置正确

  (2)maven版本和IDEA版本想接近,根据年份大致选版本

  (3)maven的settings.xml必须配置正确

  (4)我还根据百度的教程给jdk安装了个https的证书(不知道有没有效果)

  (5)IDEA配置正确,在设置中配置(这个配置应该是从xml配置的中央库拉取,把本地库默认取消掉)6

  (6)还有的说什么什么版本不太稳定,反正没研究透

  

 三、Spring初体验

  1.在相应目录下新建俩个java文件

package com.example.spirngbootrec;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MySpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class);
    }

}

  

package com.example.spirngbootrec;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class StartController {

    @RequestMapping("/hello")
    @ResponseBody
    public String init(){
        return "hi,springboot!";
    }

}

   

   2.启动项目后访问8080端口,显示如下说明搭建成功

  

   3.配置Spring配置文件

  注:(1)如果这里不配置的话,Spring默认是开放Health/info,如果配置添加下面这行就全部开放访问;

  (2)也就说Spring未授权的漏洞由此而来,完全是因为配置文件的错误导致信息泄露后的漏洞利用(也是为什么只有CNVD编号没有CVE编号的原因,大概);

  (3)而且这里的配置完全可以控制哪个可访问哪个禁止访问,而且spring的actuator功能是提供应用监控的功能,非必要对公网开放

  (4)Spring1是默认一级目录,Spring2*的是/actuator/目录下的

management.endpoints.web.exposure.include=*

  

   4.配置成功访问确认

  

 总结:

  截至目前网上暴露的未授权RCE的利用方式以下两种都为复现:

  1./jolokia/list 危险目录未配置成功,这个目录可以造成RCE 

  2./env 危险目录未复现RCE 

  3.Spring 大家族组件太多了,分也分不清,也不知道哪个能利用哪个不能利用,慢慢探索吧

参考连接:

  https://www.cnblogs.com/zwqh/p/11851300.html    //spring配置

  https://github.com/LandGrey/SpringBootVulExploit    //spring利用方式汇总

  

原文地址:https://www.cnblogs.com/hei-zi/p/14282176.html