为了不再混水摸鱼,开始补习安全基础,开始学Java安全(ง •̀_•́)ง,从最经典的Struts2漏洞开始,本篇是环境搭建过程。
1、测试环境
macOS Catalina 版本 10.15.6
Java version "1.8.0_261"
IDEA 2020.2
tomcat 9.0.39
2、创建项目
2.1 Maven
通过Maven创建项目,如下图的顺序,注意勾选Create from archetype
,选择webapp。
下一步就是选择项目文件夹
然后groupid
和artifactid
都可以自定义,之后Finish。
然后会自动下载所需的jar包等文件进行构建,只需要静静等待几分钟就好了。
然后此时创建好的项目如图所示。
接下来分别添加并配置Maven的pom.xml
,Tomcat的web.xml
,Struts2的struts.xml
。
在main目录下创建一个java文件夹,里面放置我们自定义的java类文件.
在里面我们创建自定义的Java Package。
然后在其中创建一个名为LoginAction的Java类,内容为:
package com.lanvnal.s2001.action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private String username = null;
private String password = null;
public String getUsername() {
return this.username;
}
public String getPassword() {
return this.password;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public String execute() throws Exception {
if ((this.username.isEmpty()) || (this.password.isEmpty())) {
return "error";
}
if ((this.username.equalsIgnoreCase("admin"))
&& (this.password.equals("admin"))) {
return "success";
}
return "error";
}
}
刚开始添加了代码之后可能会有报错,这是因为没有引入该包
可以先不用管,去配置一下pom.xml
就好了。
接下来修改pom.xml,添加如下内容:(添加到<dependencies>
这一对标签中)
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.0.8</version>
</dependency>
添加这个配置之后,点击界面上出现了maven更新小按钮Maven会自动将对应版本的Jar包下载导入,不需要手工配置了。
再修改web.xml
,在这里主要是配置struts2
的过滤器。
<web-app>
<display-name>S2-001 Example</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
然后,在 webapp
目录下创建&修改两个文件 —— index.jsp
&welcome.jsp
,内容如下。
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>S2-001</title>
</head>
<body>
<h2>S2-001 Demo</h2>
<p>link: <a href="https://cwiki.apache.org/confluence/display/WW/S2-001">https://cwiki.apache.org/confluence/display/WW/S2-001</a></p>
<s:form action="login">
<s:textfield name="username" label="username" />
<s:textfield name="password" label="password" />
<s:submit></s:submit>
</s:form>
</body>
</html>
welcome.jsp
<%--
Created by IntelliJ IDEA.
User: lanvnal
Date: 2020/12/11
Time: 12:32 上午
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>S2-001</title>
</head>
<body>
<p>Hello <s:property value="username"></s:property></p>
</body>
</html>
然后在 main
文件夹下创建一个 resources
文件夹,内部添加一个 struts.xml
,内容为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="S2-001" extends="struts-default">
<action name="login" class="com.mengsec.s2001.action.LoginAction">
<result name="success">welcome.jsp</result>
<result name="error">index.jsp</result>
</action>
</package>
</struts>
这里遇到了个小问题,就是添加 struts.xml
文件时新建文件模板里没有对应的配置:
解决方案就是在首选项 => plugins => 搜索struts2 然后安装就好了
此时项目目录如下:
接下来配置Tomcat服务器,在Mac上的话,直接 brew install tomcat
即可安装tomcat9,安装的路径为/usr/local/Cellar/tomcat/9.0.39
。
To have launchd start tomcat now and restart at login:
brew services start tomcat
Or, if you don’t want/need a background service you can just run:
catalina run
如果想要后台启动服务,使用:brew services start tomcat
不需要的话直接:catalina run
2.2 添加服务器
添加一个本地的Tomcat服务器。具体步骤如下图
这个路径参考前面安装时提到的安装目录
端口根据自身环境修改,我改成了8008.
然后右下角的提示,可以点击fix或者点击Deployment,添加一个artifacts。
然后点击左上角的绿色三角就可以运行了。
2.3 测试环境
在username 的输入框输入:%{1+1}
如图,环境搭建成功!