OpenRASP 初探(二)之项目部署

2023-10-24 22:33
文章标签 部署 项目 初探 openrasp

本文主要是介绍OpenRASP 初探(二)之项目部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上接第一篇 《OpenRASP 初探(一)之项目介绍》,本篇主要介绍openrasp项目在 java 项目中如何部署(主要以springboot和tomcat为例)。希望能帮助朋友们在部署过程中提供一些参考,少走些弯路。

一、软件兼容性(openrasp 目前支持 java 和 php)

管理后台:操作系统兼容 Linux (CentOS 6+ / Ubuntu 14.04 + / 其他不要太老的系统)和 Mac OS X
JAVA agent :
-操作系统:MacOS 10.10+、Windows x64、Linux(RHEL/CentOS 6.X ~ 7.X/Ubuntu 14+/Debian 6+/其他 glibc >= 2.12 的发行版)
-web服务器(支持 docker 部署):Tomcat 5 ~ 9、Jetty 7 ~ 9、JBoss 4 ~ 8、Wildfly 8 ~ 16、Resin 3 ~ 4、SpringBoot 1 ~ 2 (内置 tomcat/jetty/undertow)、WebSphere 7.X  及以上版本、WebLogic 10.3.6 / 12.2
-JDK 版本:Oracle JDK 6~11、OpenJDK 6~11
-数据库 :MySQL 、SQLServer 、SQLite 、Oracle 、PostgreSQL 、DB2

二、安装管理后台

1)测试操作系统选择了 centos 6

2)安装管理后台需要先安装 2 个数据库,ElasticSearch 和 MongoDB 。前者用来存储报警和统计信息,后者用来存储应用、账号密码等信息。

目前对数据库的要求是,

MongoDB 版本大于等于 3.6
ElasticSearch 版本大于等于 5.6,小于 7.0

ElasticSearch 安装,我们测试中选取6.8.3版本。ES 是开源软件,但部分插件使用如 xpack 需要申请免费 license。

license 申请:https://register.elastic.co/marvel_register

ElasticSearch 依赖 JDK 环境,6.8.3 es 需要安装 JDK 8 以上版本。

备注:es 以 root 启动会报错,需新建 ES 组合账户,并将 ES 的文件目录的权限赋给 ES 组

chown -R es:es elasticsearch 目录,因为测试,ES 默认安装在本地使用默认 9200 端口

Mango 安装,选择了 4.0.14 版本。创建数据目录,启动 mongo ./mongod -dbpath /data/db/

本地搭建的测试环境,默认配置并选择默认端口 27017(后续如正式搭建需根据具体选择使用的数据服务实例进行配置)

3)DB 服务安装完成后,下载后台程序 tar包 https://packages.baidu.com/app/openrasp/release/1.2.3/ ,我们这里选择1.2.3版本,具体部署可根据需要选择最新版本。

解压后,启动后台服务。./rasp-cloud -d

4)安装完成可访问 web 管理后台。
在这里插入图片描述

三、测试用例部署(客户端部署)

springboot 集成

因公司的 java 项目大部分采用 springboot 部署方式,本次测试 openrasp 客户端 (agent) 也采用这种应用部署方式。

1)配置本地的 java IDE 环境

测试中下载使用了 eclipse IDE 环境,本地 maven 采用了 3.6.3 版本,在 eclipse 的 marketplace 中下载 springboot (STS 插件)版本 4.5.0
在这里插入图片描述创建一个 springboot web 项目,运行出现 springboot logo,本地环境配置完成
在这里插入图片描述2)下载 openrasp 官方提供的测试用例

https://github.com/baidu-security/openrasp-testcases/

测试用例提供 JSP 和 servlet 两种形式。(因为之前看安装文档中有 springboot 集成 JSP 的内容,以为只有 JSP 的测试用例)

  • 新建一个 springboot web 项目,将相应 JSP 放置在 /src/main/webapp 目录下

  • 修改 main class 中的 @Requestmap 将 http 请求映射到 index.jsp

@RequestMapping("/bbc")public String index(Model m){m.addAttribute("now",DateFormat.getDateTimeInstance().format(new Date()));return "index";  //视图重定向index.jsp}
  • 在 /src/main/resource 目录下新建 application.properties 文件(目录没有需新建),编辑如下内容
spring.mvc.view.prefix=/WEB-INF/jsp/ 
spring.mvc.view.suffix=.jsp

该配置文件定义 view 重定向的资源位置和查找的文件后缀。

  • 配置 POM 文件,添加需要的依赖组件,以下组件为 springboot 支持 JSP 必须添加(Jsp 本身就是一个 servlet,运行于服务器端,所以添加以下这部分依赖和支持)
<!-- servlet依赖 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId>   </dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency><!-- tomcat的支持--><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId></dependency>
  • 坑点 1:
    另外这里面还需要引用 插件,否则使用 maven 打包时不会把资源文件(JSP)打包进 jar 包。这个点测试了好久,Run as「java application」起来 springboot 服务后,web 访问 JSP 没有问题,maven 打 jar 包后运行访问 jsp 就报 404。
<resources><resource><directory>src/main/resources</directory><includes><include>**/**</include>          </includes></resource><resource><directory>src/main/webapp/</directory><!--注意此次必须要放在此目录下才能被访问到 --><targetPath>META-INF/resources</targetPath><includes><include>**/**</include></includes></resource></resources>
  • 坑点 2:
    按照网上资料,添加 插件后,起了 jar 包访问还是无法访问。又继续查资料,发现有人说是 maven 打包的 bug,只有 spring-boot-maven-plugin 指定为 1.4.2 版本是可以的。于是在 POM 里面指定 spring-boot-maven-plugin 版本为 1.4.2。(此处编辑器一般会提示和继承的父依赖有冲突,只要不是 error 不用管就行)
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>1.4.2.RELEASE</version></dependency>
  • 一切修改完后,run as mvn install 打包成 jar 包,在目标目录会生成 jar 文件。
    在这里插入图片描述
  • 将 jar 文件上传至测试服务器,java -jar xxxx.jar 运行 jar 包,我们看到 jar 包启动成功
    在这里插入图片描述
  • 访问 index.jsp 的 url,可以看到测试用例的首页,测试用例部署成功。
    在这里插入图片描述

Tomcat 集成

因为官方提供的测试用例部分基于 servlet(ognl RCE、SQl 注入等),所以测试中选择将 serlvet 的测试用例集成到 Tomcat 运行。

部署过程:

  1. 在测试节点,安装 Tomcat,并启动 Tomcat 服务。
  2. 下载 servlet 测试用例,https://github.com/baidu-security/openrasp-testcases/
    在这里插入图片描述
  3. 将整个目录的文件夹导入 Eclipse 创建一个 maven 项目
  4. 通过mvn 打包生成 war 包,具体步骤可参照打 springboot 的 jar 包过程。
  5. 打包成功后,将 war 包拷贝到 tomcat 安装目录下的 /Tomcat/webapps 目录下
    在这里插入图片描述
  6. 重启 Tomcat服务,如无报错,访问 http://ip:port/vulns-servlet/index.jsp 即可访问到我们的测试用例。
  7. tomcat 的 openrasp 客户端安装参见第四部分客户端安装。

四、Openrasp 客户端安装

Springboot 的客户端安装

1)下载最新的 java 客户端程序( rasp-java.tar.gz 或 rasp-java.zip 压缩包)到部署测试用例的服务器并解压。

https://packages.baidu.com/app/openrasp/release/latest/

2)登录openrasp管理后台,点击添加主机,查看记录参数信息(安装客户端agent使用)
在这里插入图片描述3)在 rasp-java.tar.gz 解压的目录下,执行客户端 agent 安装命令( /home/springboot/ 是测试用例 jar 文件的存放目录)。

java -jar RaspInstall.jar -nodetect -install /home/springboot/ -backendurl http://ip:8086/ -appsecret rAxxxxxxDTAFJdmZN -appid 508c86xxxxxx62fb1cd9fe

在这里插入图片描述查看之前打包好测试用例 jar 包的存放目录 /home/springboot/ 下面多了个 /rasp 目录 里面有 rasp.jar 文件说明客户端安装成功。

4)带着 openrasp agent 启动应用实例

java -javaagent:/home/springboot/rasp/rasp.jar -jar test-0.0.1-SNAPSHOT.jar

看到应用运行起来。
在这里插入图片描述5)访问管理后台,查看主机管理,有新的管理主机注册上来。
在这里插入图片描述6)访问测试用例的网站实例,可以正常访问。
7)尝试访问测试用例,可以触发攻击行为并记录日志。
在这里插入图片描述到此,Openrasp 测试环境已全部搭建完成。

这篇关于OpenRASP 初探(二)之项目部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/278212

相关文章

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

eclipse如何运行springboot项目

《eclipse如何运行springboot项目》:本文主要介绍eclipse如何运行springboot项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目js录当在eclipse启动spring boot项目时出现问题解决办法1.通过cmd命令行2.在ecl

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

Maven项目打包时添加本地Jar包的操作步骤

《Maven项目打包时添加本地Jar包的操作步骤》在Maven项目开发中,我们经常会遇到需要引入本地Jar包的场景,比如使用未发布到中央仓库的第三方库或者处理版本冲突的依赖项,本文将详细介绍如何通过M... 目录一、适用场景说明​二、核心操作命令​1. 命令格式解析​2. 实战案例演示​三、项目配置步骤​1