安装测试用例
为了验证OpenRASP的漏洞检测效果,或者IAST工具的漏洞检测能力,我们提供了多个测试用例,覆盖常见高危漏洞。测试用例的部署也非常简单,复制到 webroot/webapps 目录即可。
下载测试用例
常用镜像:
文件说明
文件名 | 适用服务器 | 说明 |
---|---|---|
php-vulns.tar.gz | PHP | 主要测试用例,包含十几种高危漏洞 |
vulns.war | Java | 主要测试用例,包含十几种高危漏洞 |
S2-016.war | Java | Struts S2-016 漏洞 |
fastjson.war | Java | fastjson RCE 漏洞 |
fastjson-1.2.60.war | Java | fastjson 1.2.60 RCE 漏洞 |
wxpay-xxe.war | Java | 某支付系统 XXE 漏洞 |
CVE-2019-10173.war | Java | xstream 反序列化漏洞 |
CVE-2019-12384.war | Java | jackson-databind 反序列化漏洞 |
安装测试用例
PHP 版本
- 解压
php-vulns.tar.gz
到web目录,并通过浏览器访问
Java 版本
- 复制war包到webapps目录,等待一段时间后可通过浏览器访问。若web服务器未开启war包自动解压缩功能,可能需要重启web服务器生效。
检测能力说明
请参考如下几篇文章:
用例使用说明
在每个测试用例的页面里,我们都给出了正常的请求样例,以及攻击性的请求样例。你可以点击页面上的链接触发,也可以使用 curl
命令发出请求。具体请参考实际的页面:
攻击拦截说明
当攻击被拦截,OpenRASP 会显示特定的拦截页面,以及当前 Request ID
,事后可根据这个ID去搜索对应的攻击日志。如果你发现 OpenRASP 无法拦截攻击,很有可能是安装没有成功,请参考 常见安装问题 文档进行排查,并检查应用启动日志是否有错误,e.g catalina.out
值得注意的是,默认我们不开启拦截,需要你关闭 系统设置 -> 防护设置 -> 将所有算法设置为「记录日志」模式 开关,保存后等待一个心跳周期生效;单机版需要参考 单机版本 - 开启拦截 修改插件,才能开启拦截。
最后,若要了解报警里有哪些字段信息,请查看 日志说明 文档。
FAQ
1. SpringBoot 如何安装 JSP 测试用例?
请参考 仰望星空 - springboot中使用jsp 这篇文章进行操作,或者使用我们的servlet版本测试用例
2. OpenRASP没有产生报警
如果OpenRASP没有产生报警,请按照如下方法排查
- 确保OpenRASP引擎工作正常
- 检查OpenRASP是否支持你的服务器。此类问题Java环境出现较多,比如目前netty就不支持。排查方法是检查
<rasp_home>/logs/rasp/rasp.log
是否有[main][com.baidu.openrasp.HookHandler] detect server: XXXX
字样,如果没有就是没识别到 - 检查日志目录是否有写权限。此类问题PHP环境出现较多,可以参考OpenRASP正常拦截攻击,但是alarm.log没有日志进行排查
- 检查OpenRASP是否支持你的服务器。此类问题Java环境出现较多,比如目前netty就不支持。排查方法是检查
- 确保漏洞存在
- WAF基于请求特征检测漏洞,并不关心攻击是否成功、漏洞是否存在。OpenRASP基于行为检测,只有攻击成功的时候才会产生报警,所以需要漏洞真实存在。比如,对于SQL注入漏洞,你应该优先使用sqlmap进行测试,并确保能够读取到业务数据
- 检查JS检测插件是否正确
- 如果你同时在测试IAST,请先把插件换回防护插件,即
official.js
- 如果你同时在测试IAST,请先把插件换回防护插件,即
- 如果不是上述问题,需要手动排查原因
- 开启行为日志,然后检查
<rasp_home>/logs/plugin/plugin.log
是否有日志。- 对于远程版本,可以在后台打开
打印「行为日志」
开关 - 对于单机版,请参考开启行为日志修改插件
- 对于远程版本,可以在后台打开
- 如果没有相关行为日志,则说明目前Java、PHP agent不支持你的服务器。你可以提交PR或者联系我们,并提供最小测试用例
- 如果有行为日志,则说明目前JS插件无法防护你发起的攻击。同样,你可以联系我们,并提交最小测试用例
- 开启行为日志,然后检查
3. OpenRASP产生了报警,但是没有拦截攻击
如果是单机版,
请参考开启拦截修改插件
如果是远程管理版本
- 打开后台,找到 系统设置 -> 防护设置
- 关闭总开关,即
将所有算法设置为「记录日志」模式
- 对于你想要开启的检测算法,改为
拦截攻击
- 点击保存,并等待一个心跳周期生效(也可以通过重启tomcat/php等应用服务器快速生效)