RASP是一种新型的Web应用防御方案,虽然RASP本意是被设计来检测恶意攻击的,但是在实际的日常业务测试和线上防御时发现过非常多的有意思的漏洞,本文整理了多个比较有代表意义的真实案例以此来演示RASP独特的防御能力。

1. 什么是RASP

运行时应用程序自我保护(Runtime application self-protection,简称RASP)使用Java Agent技术在应用程序运行时候动态编辑类字节码,将自身防御逻辑注入到Java底层API和Web应用程序当中,从而与应用程序融为一体,能实时分析和检测Web攻击,使应用程序具备自我保护能力。

RASP技术作为新兴的WEB防御方案,不但能够有效的防御传统WAF无法实现的攻击类型,更能够大幅提升对攻击者攻击行为的检测精准度。RASP是传统WAF的坚实后盾,能够弥补WAF无法获取Web应用运行时环境的缺陷,同时也是传统Web应用服务最重要的不可或缺的一道安全防线。

RASP通过注入自身到开发语言底层API中,从而完全的融入于Web服务中,拥有了得天独厚的漏洞检测和防御条件,RASP技术相较于传统的WAF拥有了更加精准、深层次的防御。RASP不但可以实现类似IAST的请求参数追踪功能,同时还采用了基于攻击行为分析主动防御机制,严防文件读写数据访问命令执行Web应用系统命脉,为Web应用安全筑建出“万丈高墙”。

2. 某业务系统SQL注入0day

某门户系统上线RASP后发现某业务查询接口无法正常使用,不久后在RASP云端监控到了如下告警信息:

RASP动态防御案例 - 图1

从攻击日志中可以看出RASP捕获到了一次SQL注入攻击,但是经过分析该攻击日志后发现实际上是一个SQL注入漏洞被RASP的零规则检测出来了,而非SQL注入攻击。

从日志中可以看到,请求参数ids的值:691,692,870,871,872,873,874,875,876,877,878,879,883,886,887,888直接拼接到了SQL语句当中:select distinct ORG_SH_NAME as orgName from t*****fo where ORG_LEVEL in (1, 3) and ORG_CODE in ( 691,692,870,871,872,873,874,875,876,877,878,879,883,886,887,888),其中ids的参数值并不包含任何攻击的Payload,只是触发了RASP的SQL零规则检测,从而断定该接口存在SQL注入漏洞。

这是一个非常典型的SQL注入案例,我们通常在处理where in查询的时候会因为无法直接使用SQL预编译而选择了拼接SQL的方式来实现业务,从而也就导致了SQL注入的产生。

RASP动态防御案例 - 图2

3. 某业务系统任意文件读取漏洞

某业务系统上线RASP后发现系统中的预览文件功能不正常,随后在RASP云端监控到了如下告警信息:

RASP动态防御案例 - 图3

从攻击日志中可以看出RASP捕获到了一次文件系统攻击,经过分析攻击日志后发现该请求属于正常业务,请求参数也不包含恶意的Payload,所以并不是恶意攻击,但是RASP分析了请求的参数后判定参数styleFilePath的值/work/******/index_20210824_1.zip可控,因此存在任意文件读取漏洞。

该漏洞在我们平时的开发中也是一个非常的漏洞,通常我们在写读取文件相关的接口的时候会忽略了请求参数值的合法性所带来的安全问题,从而导致了攻击者可以通过传入一些恶意的参数值从而获取服务器敏感信息,如:读取数据库配置文件获取数据库密码、读取~/.ssh/id_rsa获取ssh私钥、读取~/.bash_history获取bash记录的历史命令等,从而很有可能会导致服务器被非法入侵。

RASP动态防御案例 - 图4

4. 某平台本地系统命令注入漏洞

某资产管理平台上线RASP后发现业务系统存在本地命令执行攻击,经过日志分析后确认该接口存在本地命令执行注入漏洞,日志如下图:

RASP动态防御案例 - 图5

从请求的URL地址可以看出这是一个测试DNS连接速度的接口,传入IP地址会调用操作系统中的ping命令,如:/bin/sh -c ping -c 1 8.8.8.8,分析传入的参数ip8.8.8.8注入到了bash命令当中,所以可以判断此处存在本地命令执行漏洞。

本地命令注入漏洞是一种非常高风险的的漏洞,攻击者如果可以控制或注入cmd命令那么后果将不堪设想,例如修改请求参数ip的值为:8.8.8.8;curl localhost:9000,即可注入一个curl命令,当然也可以通过注入的命令间接的控制服务器。

RASP动态防御案例 - 图6

5. 某业务系统SSRF攻击

某日,RASP平台突然接到一处SSRF攻击告警日志,如下图:

RASP动态防御案例 - 图7

分析攻击日志并结合攻击的调用链得知:攻击者使用了Weblogic 10.3.6版本的SSRF漏洞探测服务器资源,RASP拦截到的攻击内容是http://baidu.com,而请求参数中operator=http://baidu.com,由此可知operator参数存在安全问题。

攻击使用SSRF漏洞多用于探测服务器内部资源,是一种威胁程度较高的攻击手段,某些时候SSRF漏洞甚至可以间接的获取到Webshell,所以对待该类型漏洞也必须引起重视,Web应用必须做好对传入的URL检测,从而防止SSRF攻击。

RASP动态防御案例 - 图8

6. 某OA系统WebShell攻击

某日护网期间,RASP平台突然出现了一个WebShell攻击,一时间既然把看守平台的安全运维人员吓的一激灵,瞬间感觉到了危险降临,此刻气氛紧张到了极点;平日里总是听闻RASP是如何的强大,为何还会有WebShell类型的攻击?于是颤抖的右手点击了攻击详情,如下图:

RASP动态防御案例 - 图9

从攻击日志中只能定位WebShell的绝对路径,并不能确定是否是真实存在的后门,但从文件名shell.jspx可以看出这多半是一个后门文件,于是立即登录服务器查看查看该文件内容,经分析得知是一个冰蝎的后门,查看文件的ctime是2021年2月,而RASP是在护网前几日才紧急上线的。

如此说来,有人早在护网前就已经利用致*OA的漏洞上传了WebShell,如今想借机利用该后门进行深入渗透,可是访问该后门的时候却被RASP所拦截了,果然攻击队有些不讲武德,所幸有RASP守护服务器安全。

RASP动态防御案例 - 图10

7. 总结

RASP作为一种新兴的Web应用防御技术手段,可获取运行时环境监测各类威胁,与Web应用同生死;具有0day防御精准拦截防御深入难以绕过等诸多优点,可作为对传统WAF的有效补充;RASP竭尽所能的在应用层设置多层防线,誓死保卫Web应用安全!