以下文章向您展示了如何在Docker容器中运行Java应用程序,然后使用AcuSensor来运行 交互式应用程序安全性测试(IAST) 扫描该应用程序。

步骤1:使用Eclipse IDE准备示例应用程序

  • 转到菜单项 文件→新建→项目
  • 在里面 新项目 向导中,搜索并选择 动态网络项目 选项,然后单击 下一页> button
     

     
  • 执行以下步骤:
    • 设置 项目名 field to 你好世界
    • 设置 目标运行时 field to Apache Tomcat v9.0
    • 设置 动态网页模块版本 field to 4.0
    • 设置 组态 field to Apache Tomcat v9.0的默认配置
    • 点击  button

     
  • 在里面 开放的关联视角? dialog, click on the 没有 button
     

     
  • 执行以下步骤:
    • 展开 你好世界 project
    • 右键点击 src folder
    • 选择 新→其他 option
    • 突出显示 Servlet option
    • 点击 下一页> button

     
  • 执行以下步骤:
    • 设置 Java包 field to com.mytest.helloworld
    • 设置 班级名称 field to 你好世界Servlet
    • 点击  button

     
  • 编辑内容,内容如下:package com.mytest.helloworld; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class HelloWorldServlet */ @WebServlet("/HelloWorldServlet") public class HelloWorldServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public HelloWorldServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.print("<html><body><h1>Servlet Invoked Successfully!</h1></body></html>"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
  • 展开 你好世界 项目,右键单击 网页内容 文件夹,然后选择 新建→文件 option
     

     
  • 将文件名设置为 index.html,点击  按钮,然后将内容编辑如下:<html> <head> <title>Hello World!</title> </head> <body> <h1>Hello World!</h1><br/><br/> <a href="HelloWorldServlet">Click here to invoke servlet</a> </body> </html>
  • 确保对两个新文件的更改都已保存
  • 右键点击 你好世界 项目,点击 出口… 选项,搜索 WAR文件 option and select it
     

     
  • 点击 下一页> button and select a 目的地 用于导出的WAR文件
     

     
  • 点击  button

步骤2:在Docker主机上准备位置

您必须在Docker主机上准备一个位置,以包含构建Docker容器的所有资源。为此,请在Docker主机上运行以下命令:

mkdir ~/mynewapp

步骤3:下载并准备Asp​​ectJWeaver

在Docker主机上运行以下命令:

cd ~/mynewapp
wget -c //repo1.maven.org/maven2/org/aspectj/aspectjweaver/1.9.5/aspectjweaver-1.9.5.jar
mv aspectjweaver-1.9.5.jar aspectjweaver.jar

步骤4:为Java准备AcuSensor

我们将测试应用程序部署到以下URL: http:// mydockerhostipaddress:8080 / helloworld

  • 为上述网址创建一个新目标,替换为 mydockerhostipaddress 与您的Docker主机的IP地址
  • 从Acunetix UI下载Java版AcuSensor
  • 复制 AcuSensor.jar 文件放入Docker主机文件夹 〜/ mynewapp

步骤5:准备环境变量以供Tomcat使用AcuSensor

  • 在Docker主机上运行以下命令:nano ~/mynewapp/setenv.sh – this will create a new setenv.sh file
  • 将以下行添加到 setenv.sh file:JAVA_OPTS="$JAVA_OPTS -javaagent:/usr/local/tomcat/lib/aspectjweaver.jar -Dacusensor.debug.log=ON"
  • 退出Nano编辑器,然后将更改保存到 setenv.sh file

步骤6:为Docker准备您的Web应用程序

复制 你好世界.war 您创建到docker主机文件夹中的文件 〜/ mynewapp

步骤7:准备Dockerfile

  • 在Docker主机上运行以下命令:nano ~/mynewapp/Dockerfile
  • 在Dockerfile中输入以下内容:FROM tomcat:9.0-alpine COPY AcuSensor.jar /usr/local/tomcat/lib/AcuSensor.jar COPY aspectjweaver.jar /usr/local/tomcat/lib/aspectjweaver.jar COPY HelloWorld.war /usr/local/tomcat/webapps/helloworld.war EXPOSE 8080 CMD ["catalina.sh", "run"]

步骤8:建立影像

在Docker主机上运行以下命令:

cd ~/mynewapp
docker build -t mynewapp:test .

步骤9:根据新映像启动容器

在Docker主机上运行以下命令:

docker run --publish 8080:8080 --detach --name myapp mynewapp:test

步骤10:确认您的新Web应用程序正常工作

要确认新的Web应用程序正常运行,请将浏览器指向Docker容器: http:// mydockerhostipaddress:8080 / helloworld

步骤11:针对目标启动Acunetix扫描

使用以下命令运行Acunetix扫描 http:// mydockerhostipaddress:8080 / helloworld as the target.
 

资源://www.acunetix.com/blog/docs/docker-acusensor-java/