首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >应用实时防护(RASP)

应用实时防护(RASP)

作者头像
用户1423082
发布于 2024-12-31 12:19:48
发布于 2024-12-31 12:19:48
32400
代码可运行
举报
文章被收录于专栏:giantbranch's bloggiantbranch's blog
运行总次数:0
代码可运行

应用实时防护(RASP)是一种现代的应用安全技术,它的原理是在应用程序运行时动态分析和监视应用程序的行为,以侦测和防止潜在的应用安全漏洞和攻击。RASP 技术通常被集成到应用程序代码中或应用程序服务器中,以实现实时的安全保护。以下是 RASP 技术的一般原理:

  1. 应用程序内嵌:RASP 技术通常以库或模块的形式嵌入到应用程序中,可以在应用程序的运行时启用和运行。这允许 RASP 技术深入了解应用程序的内部结构和行为。
  2. 实时监视:RASP 技术实时监视应用程序的执行。它跟踪应用程序的输入、输出、内部函数调用和数据流动等活动。
  3. 上下文感知:RASP 技术了解应用程序的上下文,包括用户、数据、环境和网络连接等。这有助于它更好地评估应用程序行为的合法性。
  4. 行为分析:RASP 技术对应用程序的行为进行分析,以检测不寻常的活动和潜在的攻击模式。它使用基于规则和机器学习等技术来进行分析。
  5. 攻击检测:RASP 技术识别和检测各种应用安全威胁,如 SQL 注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等。
  6. 实时响应:当 RASP 技术检测到潜在的威胁时,它可以采取多种行动,包括拒绝请求、阻止攻击、记录事件、生成警报或采取其他安全响应措施。
  7. 自我保护:RASP 技术还可以自我保护,意味着它会尽力保护自身免受恶意攻击或尝试绕过它的行为。
  8. 安全策略配置:RASP 技术通常允许管理员配置安全策略,以适应不同的应用程序需求和威胁模式。这包括定义哪些行为是允许的,哪些是禁止的,以及如何响应各种威胁。

总的来说,RASP 技术通过深入了解应用程序的内部运行时行为,实时监视和分析应用程序活动,以检测和防止潜在的应用安全漏洞和攻击。这有助于应用程序更好地自我保护并提供实时的安全防护。但需要注意,RASP 技术通常不是独立的安全解决方案,而应与其他安全控制(如WAF、IDS/IPS等)一起使用,以建立更全面的安全防御体系。

测试环境搭建

实验环境

Ubuntu 16.04 tomcat 7

java为例的,WAVSEP的漏洞靶场

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/sectooladdict/wavsep/releases/tag/wavsep-v1.5-war

首先安装Tomcat环境、mysql

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apt install tomcat7 tomcat7-admin mysql-server

mysql可能需要修改root密码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql -u root
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

编辑tomcat配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root@ubuntu2004:/etc/tomcat7# vim tomcat-users.xml 
root@ubuntu2004:/etc/tomcat7# service tomcat9 restart

添加内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<role rolename="manager-gui"/>
<user username="tomcat" password="XXXX" roles="manager-gui"/>

创建数据库目录y

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir /var/lib/tomcat7/db
chown -R tomcat7:tomcat7 /var/lib/tomcat7/db

登录后台,上传war包部署

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://192.168.X.X:8080/manager/html

初始化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:8080/wavsep/wavsep-install/install.jsp

OpenRASP安装

先看看最新版的能不能行

下载 rasp-java.tar.gz 或者 rasp-java.zip 并解压缩。之后进入到解压后的目录中执行RaspInstall.jar

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://github.com/baidu/openrasp/releases/download/v1.3.7/rasp-java.zip
unzip rasp-java.zip
cd rasp-2022-01-28/
# /usr/share/tomcat7是tomcat根目录,可以通过whereis tomcat7查看,一般是含有bin目录的
java -jar RaspInstall.jar -install /usr/share/tomcat7

下面就是安装成功了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root@ubuntu:~/rasp-2022-01-28# java -jar RaspInstall.jar -install /usr/share/tomcat7
OpenRASP Installer for Java app servers - Copyright 2017-2021 Baidu Inc.
For more details visit: https://rasp.baidu.com/doc/install/software.html

Detected JDK version: 1.8.0_292
Detected application server type: Tomcat
Duplicating "rasp" directory
- /usr/share/tomcat7/rasp
Make "rasp" directory writable

Generating "openrasp.yml"
- /usr/share/tomcat7/rasp/conf/openrasp.yml
- Create /usr/share/tomcat7/rasp/conf/openrasp.yml
Updating startup script
- /usr/share/tomcat7/bin/catalina.sh

Installation completed without errors.
Please restart application server to take effect.

之后重启tomcat

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

下面目录是官方的插件,用的nodejs写的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root@ubuntu:/usr/share/tomcat7/rasp/plugins# ls
official.js

下面链接是官方规则可以检测的漏洞类型,但有些是仅IAST商业版支持

https://rasp.baidu.com/doc/usage/web.html

不过默认没有开启阻断,需要编辑official.js开启,之后重启tomcat7

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 若 all_log 开启,表示为观察模式,会将所有的 block 都改为 log
        all_log: true,

访问以下sql注入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://192.168.XXX.XXX:8080/wavsep/active/SQL-Injection/SInjection-Detection-Evaluation-GET-500Error/Case01-InjectionInLogin-String-LoginBypass-WithErrors.jsp?username=textvalue%27%20or%207=7--%20&password=textvalue2

就会跳转到百度的页面

开发插件

官方有文档

https://rasp.baidu.com/doc/dev/example.html

就是下nodejs

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apt-get install -y nodejs npm
npm install -g openrasp

一个最小的SQL检测插件如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const plugin_version = '2018-1000-1000'
const plugin_name    = 'test-plugin'

'use strict'
var plugin  = new RASP(plugin_name)

const clean = {
    action:     'ignore',
    message:    'Looks fine to me',
    confidence: 0
}

// BEGIN ALGORITHM CONFIG //

var algorithmConfig = {}

// END ALGORITHM CONFIG //

plugin.register('sql', function (params, context) {
    plugin.log('SQL query: ' + params.query)
    return clean
})

plugin.log('plugin-demo: plugin loaded')

主要就是调用 plugin.register 注册了SQL查询的检测函数,并将SQL语句打印到插件日志。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
params 为检查点提供的参数,如SQL语句、要读取的文件等等
context 为请求信息,如请求参数,服务器信息等等

检测函数return clean,其实就是放行,clean的action是ignore

而除了注册sql之外,还可以注册检测什么,可以看下面的链接

https://rasp.baidu.com/doc/dev/data.html

下面我随便列出一点

读取目录: directory 请求参数:request 删除文件:deleteFile 文件包含操作:include 文件上传:fileUpload 命令执行:command 代码执行(目前支持 eval/function 两种函数):eval 响应检查:response

写好之后可以用上面装好的rasp库进行测试,可以参考这里:https://rasp.baidu.com/doc/dev/test/main.html

测试用例以 JSON 格式保存

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[{
    "id": "ssrf_userinput_intranet",
    "name": "ssrf",
    "action": "block",
    "params": {
        "hostname": "172.16.177.120",
        "ip": ["172.16.177.120"],
        "url": "http://172.16.177.120/hello.action?redirect=123"
    },
    "context": {
        "parameter": {
            "url": ["http://172.16.177.120/hello.action?redirect=123"]
        }
    },
    "description": "SSRF userinput match test"
}]

其中,action 表示期望的结果,是拦截、日志还是放行;id 是测试用例编号。其他字段主要是对请求上下文的模拟。

运行单元测试,需要两个关键参数

  • 测试用例目录,-d指定目录
  • 检测插件路径,-p指定插件文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rasp check -d ./unitCases -p myplugin.js

实例:

tests文件夹放的是sql.json,来源:https://raw.githubusercontent.com/baidu/openrasp/191aa2e5ed8b80f9a3580d3c64dccb0e425ef373/agent/java/engine/src/test/resources/pluginUnitTest/unitCases/sql.json

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 
root@ubuntu:~# cat sql.js 
const plugin_version = '2018-1000-1000'
const plugin_name    = 'test-plugin'

'use strict'
var plugin  = new RASP(plugin_name)

const clean = {
    action:     'log',
    message:    'Looks fine to me',
    confidence: 0
}

const attack = {
    action:     'block',
    message:    'sql注入攻击,阻断',
    confidence: 0
}
// BEGIN ALGORITHM CONFIG //

var algorithmConfig = {}

// END ALGORITHM CONFIG //

plugin.register('sql', function (params, context) {
    if(/(union.*select|sleep)/i.test(params.query))
    	return attack
})

plugin.log('plugin-demo: plugin loaded')
root@ubuntu:~# rasp check -d ./tests/ -p ./sql.js 

OpenRASP plugin devtool - https://rasp.baidu.com
[test-plugin] plugin-demo: plugin loaded

  ✓ sql.json Simple userinput match test: 3ms
  ✓ sql.json SQL injection with hex values: 1ms
  ✓ sql.json SQL injection with datetime methods: 0ms

  3 passing (11ms)

默认的规则好像检测不到Get参数的反射型xss,我写两个简单的,不过就检测一个script,大家可以完善,不过调试的时候,好像querystring是有url编码的,这个需要注意,不然<script是检测不到的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const plugin_version = '2023-1015-1520'
const plugin_name    = 'xss-plugin'

'use strict'
var plugin  = new RASP(plugin_name)

var xssRegex = /script/i

const clean = {
    action:     'log',
    message:    '无风险',
    confidence: 0
}

const attack = {
    action:     'block',
    message:    '有攻击,阻断',
    confidence: 95 
}
// BEGIN ALGORITHM CONFIG //

var algorithmConfig = {}

// END ALGORITHM CONFIG //

plugin.register('request', function (params, context) {
    var querystring = context.querystring 
    var message = "";
    plugin.log(querystring)
    if (xssRegex.test(querystring)){
        message = "XSS攻击:" + querystring 
        return attack
    }

    if (! message.length) {
        return clean;
    }  
})
plugin.log('xss-plugin plugin loaded')

参考

《基于开源软件打造企业安全》

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
OpenRASP SQL注入绕过
OpenRASP即应用运行时自我保护,“可直接注入到被保护应用的服务中提供函数级别的实时防护,可以在不更新策略以及不升级被保护应用代码的情况下检测/防护未知漏洞”——https://rasp.baidu.com/ 《OpenRASP 官方文档》
腾讯代码安全检查Xcheck
2020/12/02
2.8K1
OpenRASP SQL注入绕过
RASP实践分析
简介: 它采用请求特征检测攻击方式,waf和防火墙就好比如一座大厦门口的保安,你要进入大厦,waf和防火墙就会在你进入大厦时进行安检,检查到你携带刀枪炸药、鸦片大麻,就会把你拦截下来,如果没有那就放你进入,至于你进入大厦后所做的一些行为就不会再去检测。
婷婷的橙子
2021/03/22
1.3K0
OpenRASP梳理总结
RASP英文为 Runtime application self-protection,即运行时应用程序自我保护。“运行时应用程序自我保护”的概念由Gartner在2014年提出,含义是:对应用服务的保护不应该依赖于外部系统,应用应该具备自我保护的能力。这意味着,RASP在程序执行期间运行,使程序能够自我监控并识别有害的输入和行为。OpenRASP 是该技术的开源实现,它改变了防火墙依赖请求特征来拦截攻击的模式。
FB客服
2019/11/06
1.6K0
web安全防御之RASP技术
1.一个Web应用开发到上线的过程大致须要经过如下步骤:需求分析、架构设计、系统设计、功能设计、编码实现、测试评估、上线部署、业务运营等关键步骤,其中功能设计、编码测试、发布部署、系统运营这几个环节中都会存在安全风险,但是针对各环节出现的安全风险目前还没有一个比较全面的防御产品。目前主流的Web应用安全防护产品方案较多的是 WAF(Web Application Firewall)和RASP(Runtime Application Self-Protection),WAF是门卫模型,通常部署在Web应用系统的外部边界,所有正常或恶意流量都需要通过特征规则和模式识别,通过特定的规则和模式识别出恶意请求,并且把它们拒之门外,拒绝向高风险的Web请求提供服务。
我是小三
2019/05/15
5.8K0
web安全防御之RASP技术
企业快速实践部署IAST/RASP的一种新思路
近两年,百度的OpenRasp在安全业内大火,各大厂的安全团队都在纷纷跟进研究,捣鼓自己的IAST/RASP产品。作为一支有追求的安全团队,自然要推动这类新兴技术在行内落地。但想要大面积覆盖全行应用中,项目的推广、适配、运维方面的挑战都是不小的。这里分享我们实践的一个新思路,能有效的达到了快速部署的目的。
FB客服
2020/05/05
1.3K0
网站防御|OpenRASP单机版安装教程
var xhr = new XMLHttpRequest(); xhr.open('get', 'https://v1.hitokoto.cn/'); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { var data = JSON.parse(xhr.responseText); var hitokoto = document.getElementById('hitokoto'); hitokoto.innerText = data.hitokoto; } } xhr.send();
TRY博客-简单的网络技术
2022/09/08
1.2K0
网站防御|OpenRASP单机版安装教程
红蓝对抗——加密Webshell“冰蝎”攻防
演练中,第一代webshell管理工具“菜刀”的攻击流量特征明显,容易被安全设备检测到,攻击方越来越少使用,加密webshell正变得越来越流行,由于流量加密,传统的WAF、WebIDS设备难以检测,给威胁监控带来较大挑战。这其中最出名就是“冰蝎”,“冰蝎”是一款动态二进制加密网站管理客户端,演练中给防守方造成很大困扰,本文将对“冰蝎”的加密原理、流量特征、检测方案进行探讨。
tinyfisher
2019/11/20
3.8K0
红蓝对抗——加密Webshell“冰蝎”攻防
RASP的安全攻防研究实践
随着Web应用攻击手段变得复杂,基于请求特征的防护手段,已经不能满足企业安全防护需求。在2012年的时候,Gartner引入了“Runtime application self-protection”一词,简称为RASP,属于一种新型应用安全保护技术,它将防护功能“ 注入”到应用程序中,与应用程序融为一体,使应用程序具备自我防护能力,当应用程序遭受到实际攻击伤害时,能实时检测和阻断安全攻击,而不需要进行人工干预。
黑白天安全
2023/01/31
2.6K0
RASP的安全攻防研究实践
技术译文 | MySQL 8.x DDL 和查询重写插件
本文来源:https://www.percona.com/blog/2020/08/07/mysql-8-x-ddl-rewriter-and-query-rewriter-plugins-implementation-and-use-cases/
爱可生开源社区
2020/08/17
4740
JNI技术绕过rasp防护实现jsp webshell
想到rasp这类工具是基于java、php运行期的堆栈信息进行分析,可以尝试使用jni技术进行绕过。java技术栈中的jni的原理是使用java调用c、c++函数,具体实现的思路是jsp编译为class文件,该class通过jni技术调用另外一处dll里的函数绕过黑名单执行命令获取回显,即可实现rasp和安全防护软件的绕过。github地址:https://github.com/nanolikeyou/jniwebshell
安全乐观主义
2019/11/20
1.7K0
IAST 工具初探
近年来,IAST作为一种新的应用安全测试技术,受到广泛的关注,慢慢出现了一些IAST开源项目,可以让更多的个人或者企业参与和体验。
Bypass
2021/06/25
1.1K0
IAST 工具初探
Jenkins 使用教程
1.下载用于Ubuntu的Oracle JAVA JDK 选择正确的版本,记得做一次MD5效验。
海哥@开发
2022/04/06
5060
Jenkins 使用教程
WAF和RASP技术,RASP与WAF的“相爱相杀”
WAF全称叫Web Application Firewall,也就是web应用防火墙,和传统防火墙的区别是,它是工作在应用层的防火墙,主要针对web请求和响应进行检测和防护。
德迅云安全--陈琦琦
2024/04/09
1K0
玩转企业云计算平台系列(十七):Openstack 大数据项目 Sahara
2013年4月,OpenStack社区知名厂商Mirantis正式宣布了基于OpenStack的开源BDaaS(BigData-as-a-Service)项目——Sahara(原名Savanna),正式开始了在OpenStack上构建大数据服务能力的努力。
民工哥
2024/01/18
5550
玩转企业云计算平台系列(十七):Openstack 大数据项目 Sahara
常见WAF_WEB应用防火墙_运维必备_应用安全
Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF),与传统防火墙不同,WAF工作在应用层,因此对Web应用防护具有先天的技术优势。基于对Web应用业务和逻辑的深刻理解,WAF对来自Web应用程序客户端的各类请求进行内容检测和验证,确保其安全性与合法性,对非法的请求予以实时阻断,从而对各类网站站点进行有效防护。
全栈程序员站长
2022/09/05
2.6K0
与WAF的“相爱相杀”的RASP
猜想大部分安全从业者都会回答:“WAF(Web Application Firewall,应用程序防火墙)。”不过RASP(Runtime Application Self-Protection,应用运行时自我保护)横空出世,似乎有取而代之的意味。
德迅云安全--陈琦琦
2024/05/24
2520
RASP攻防 —— RASP安全应用与局限性浅析
随着Web应用攻击手段变得复杂,基于请求特征的防护手段,已经不能满足企业安全防护需求。在2012年的时候,Gartner引入了“Runtime application self-protection”一词,简称为RASP,属于一种新型应用安全保护技术,它将防护功能“ 注入”到应用程序中,与应用程序融为一体,使应用程序具备自我防护能力,当应用程序遭受到实际攻击伤害时,能实时检测和阻断安全攻击,而不需要进行人工干预。
腾讯安全应急响应中心
2020/09/21
2K0
RASP攻防 —— RASP安全应用与局限性浅析
RASP技术进阶系列(一):与WAF的“相爱相杀”
猜想大部分安全从业者都会回答:“WAF(Web Application Firewall, 应用程序防火墙)。”不过RASP(Runtime Application Self-Protection,应用运行时自我保护)横空出世,似乎有取而代之的意味。
云鲨RASP
2023/04/19
8460
性能环境之docker操作指南6(全网最全)
ubuntu容器内运行着的SSH Server占用22端口,对外为50022端口。
高楼Zee
2019/07/17
8010
干货 | IAST安全测试如何防止数据污染
Eric,携程资深开发工程师,关注应用安全、渗透测试方面的技术和相关开源产品的二次开发。
携程技术
2020/11/04
1.2K0
干货 | IAST安全测试如何防止数据污染
相关推荐
OpenRASP SQL注入绕过
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验