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

相关文章

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

Jenkins中自动化部署Spring Boot项目的全过程

《Jenkins中自动化部署SpringBoot项目的全过程》:本文主要介绍如何使用Jenkins从Git仓库拉取SpringBoot项目并进行自动化部署,通过配置Jenkins任务,实现项目的... 目录准备工作启动 Jenkins配置 Jenkins创建及配置任务源码管理构建触发器构建构建后操作构建任务

若依部署Nginx和Tomcat全过程

《若依部署Nginx和Tomcat全过程》文章总结了两种部署方法:Nginx部署和Tomcat部署,Nginx部署包括打包、将dist文件拉到指定目录、配置nginx.conf等步骤,Tomcat部署... 目录Nginx部署后端部署Tomcat部署出现问题:点击刷新404总结Nginx部署第一步:打包

Nginx、Tomcat等项目部署问题以及解决流程

《Nginx、Tomcat等项目部署问题以及解决流程》本文总结了项目部署中常见的four类问题及其解决方法:Nginx未按预期显示结果、端口未开启、日志分析的重要性以及开发环境与生产环境运行结果不一致... 目录前言1. Nginx部署后未按预期显示结果1.1 查看Nginx的启动情况1.2 解决启动失败的

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开