jrasp如何定制web插件
2022-6-12 19:16:47 Author: mp.weixin.qq.com(查看原文) 阅读量:4 收藏

    JRASP 部署容易、接入便捷和安全插件面向开源区等特点,得到越来越多的企业用户青睐,本文以 Undertow安全插件的视角来介绍下如何定制属于自己的插件。

undertow简介

    Undertow 是红帽公司开发的一款基于 NIO 的高性能 Web 嵌入式服务器。

特点 :

  • 轻量级:它是一个 Web 服务器,但不像传统的 Web 服务器有容器概念,它由两个核心 Jar 包组成,加载一个 Web 应用可以小于 10MB 内存

  • Servlet3.1 支持:它提供了对 Servlet3.1 的支持

  • WebSocket 支持:对 Web Socket 完全支持,用以满足 Web 应用巨大数量的客户端

  • 嵌套性:它不需要容器,只需通过 API 即可快速搭建 Web 服务器。

    springboot 默认内嵌的web容器是tomcat,可以替换为undertow

        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>            <exclusions>                <exclusion>                    <groupId>org.springframework.boot</groupId>                    <artifactId>spring-boot-starter-tomcat</artifactId>                </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-undertow</artifactId>        </dependency>

http request 类

    rasp检测到敏感行为时,可以获取关联到该请求的报文详情(http、socket、rpc等),hook 这些类是实现关联的基础。对于 undertow选择下面的4个类hook。

01

http info

<1> io.undertow.servlet.handlers.ServletInitialHandler#
handleFirstRequest

HttpServerExchange exchange 对象可以获取http请求的相关信息如cookie、header等


02

获取请求参数

<2>io.undertow.server.HttpServerExchange#getQueryParameters

03

截取http body

<3> io.undertow.servlet.spec.ServletInputStreamImpl#read

04

清除线程变量

<4> io.undertow.servlet.handlers.ServletInitialHandler
#dispatchRequest

    保存请求信息使用的是threadlocal,因为线程池的重用,在使用完成之后必须清除。

打包插件

    打包好的jar包上传到对象存储服务中(或者可以提供下载的服务上,并获取下载链接)

    并且计算jar包的hash (linux 平台使用 md5sum 、macos 使用md5命令,都是可以的,并且计算结果是一致的)。配置hash的原因是防止插件被篡改而加载后门等,保障插件的安全性。

如果插件有配置参数,也可以加上。

新建配置与配置下发

新增配置,将其勾选上,然后下发到指定机器上(无需重启java进程即可生效

配置下发:

测试插件是否生效

 请求关联信息上报正常

关于jrasp

  • 如需获取更多信息,请访问我们的官网(http://jrasp.com)

  • 使用请联系微信:sear2022


文章来源: https://mp.weixin.qq.com/s?__biz=Mzg5MjQ1OTkwMg==&mid=2247484331&idx=1&sn=7d4db7f781721c7a1f764804f6f79669&chksm=c03c8dbaf74b04ac5480db177cc10f77150afdab07fab9818db2a5756ce7199817c82d977749&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh