zoukankan      html  css  js  c++  java
  • 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利用方式汇总

      

  • 相关阅读:
    Oracle的rownum原理和使用
    ehcache 使用笔记
    @PostConstruct 注解
    Dubbo java.io.IOException: Can not lock the registry cache file
    java 学习 todoList
    因为本地没有配置 localhost 导致的 eclipse 的奇葩问题
    cheatsheet——mac 上的一款可以显示软件所有快捷键的小工具
    对象作为 map 的 key 时,需要重写 equals 方法和 hashCode 方法
    eclipse一直报An internal error occurred during: "Building workspace". GC overhead limit exceeded
    如何修改SVN客户端中保存的密码
  • 原文地址:https://www.cnblogs.com/hei-zi/p/14282176.html
Copyright © 2011-2022 走看看