Spring未授权环境搭建及学习IDEA的pom.xml使用
背景:
渗透测试经常碰到Spring的框架,但是Spring框架的漏洞利用都比较难,或者说是我找不到漏洞的应用背景(漏洞在什么地方?),一直很困惑。直接拉取docker的话又不太助于理解,所以就入坑了。
一、安装maven
安装过程略过,安装好后需要配置环境变量什么的,找个教程安装即可。
1.环境变量配置好是这样的(如果输入mvn -version也可以出来,但显示not find JDK什么的就是环境变量没配置好)
2.找到安装目录配置settings.xml
这里配置的是依赖下载到什么地方(我这里配置下载到了maven目录)
<localRepository>D:\maven\maven3.6\manen_jarlocalRepository>
这里配置中央仓库地址(这里必须配置)
<mirror>
<id>alimavenid>
<mirrorOf>centralmirrorOf>
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/repositories/central/url>
mirror>
<mirror>
<id>repo1id>
<mirrorOf>centralmirrorOf>
<name>Human Readable Name for this Mirror.name>
<url>http://repo1.maven.org/maven2/url>
mirror>
<mirror>
<id>repo2id>
<mirrorOf>centralmirrorOf>
<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.0modelVersion> <repositories> <repository> <id>alimavenid> <name>aliyun mavenname> <url>https://maven.aliyun.com/nexus/content/groups/public/url> repository> <repository> <id>spring-snapshotsid> <url>http://repo.spring.io/libs-snapshoturl> repository> repositories> <pluginRepositories> <pluginRepository> <id>spring-snapshotsid> <url>https://repo.spring.io/libs-snapshoturl> pluginRepository> pluginRepositories> <parent> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-parentartifactId> <version>2.4.1version> <relativePath/> parent> <groupId>com.examplegroupId> <artifactId>spirngboot-recartifactId> <version>0.0.1-SNAPSHOTversion> <name>spirngboot-recname> <description>Demo project for Spring Bootdescription> <properties> <java.version>1.8java.version> properties> <dependencies> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-testartifactId> <scope>testscope> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-actuatorartifactId> dependency> <dependency> <groupId>org.springframework.cloudgroupId> <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId> dependency> <dependency> <groupId>de.codecentricgroupId> <artifactId>spring-boot-admin-starter-serverartifactId> dependency> <dependency> <groupId>org.jolokiagroupId> <artifactId>jolokia-coreartifactId> dependency> dependencies> <build> <plugins> <plugin> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-maven-pluginartifactId> 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利用方式汇总