OpenRASP Documents (Old)
  • 简介
  • 安装部署
    • 兼容性说明
    • 安装管理后台
    • 快速接入
      • PHP 服务器
      • Tomcat 服务器
      • JBoss 服务器
      • Wildfly 服务器
      • Resin 服务器
      • Jetty 服务器
      • Spring Boot 框架
      • WebLogic 服务器
      • WebSphere 服务器
      • 宝兰德BES服务器
      • 东方通TongWeb服务器
      • 中创InforSuiteAS服务器
      • 普元PAS服务器
    • 安装测试用例
    • 安装灰盒扫描工具
      • IAST 高级配置选项
    • SIEM 系统集成
      • Splunk
      • Logstash
    • 大规模部署
    • 卸载软件
  • 服务配置
    • 日志说明
    • 管理后台
    • 单机版本
    • 其他配置
  • 功能说明
    • 攻击检测能力说明
    • CVE 漏洞覆盖说明
    • 安全基线检查
    • 应用加固支持
    • 应用异常监控
    • 类库信息查询
    • HTML 响应修改
  • 插件开发
    • 开发插件
    • 接口说明
      • RASP 类接口
      • Context 类接口
    • 参数说明
    • 单元测试
    • 在线调试
    • 官方插件定制
  • 二次开发
    • 架构说明
      • Java 版本
      • PHP 版本
      • 管理后台
      • IAST 扫描器
      • Hook 函数列表
    • 从源代码编译
      • Java 版本
      • PHP 版本
      • 管理后台
    • 云控后台接口
    • 代码调试
    • 添加新的Hook点
    • 添加新的插件API
    • 提交你的代码
  • 性能测试
  • 版本变更
  • 关于我们
Powered by GitBook
On this page
Export as PDF
  1. 插件开发

官方插件定制

官方插件定制

不同的研发人员,编码的习惯可能会不同;不同的业务,应用场景也不同。根据QQ群里用户的反馈,我们进行了整理。如果还有没覆盖的情况,请联系QQ群主,我们会给出方案,并更新文档。

案例研究

我如何审计应用执行的命令?{#case-cmd-other}

OpenRASP 可以记录应用所有执行的命令,并上传到管理后台。若要开启,请在管理后台定位到 系统设置 -> 防护设置 -> 命令执行,将 记录或者拦截所有命令执行操作 改为 记录日志 即可(默认关闭)

通过文件函数写入 WebShell,OpenRASP 不会拦截?{#case-file-write}

我们发现,有的业务需要能够写 PHP 脚本,e.g

wp_config.php    - wordpress 安装时需要写配置文件,如果是安装好的可忽略
201704_cplog.php - discuz 错误日志,经常更新
runtime/cache/   - thinkphp 框架页面缓存
...

由于这类情况较多,官方插件已经默认不再拦截写 PHP/JSP 等脚本文件的操作。如果你没有这样的业务,可以在管理后台定位到 系统设置 -> 防护设置 -> 任意文件写入,并将 拦截所有 php/jsp 等脚本文件的写入操作 改为拦截攻击或者记录日志即可。

我使用 WebShell 查看了一些系统目录,OpenRASP 不会拦截?{#case-dir}

理论上,web 应用不应该访问 webroot 之外的文件。但在实际情况中,我们发现了很多例外:

  1. 某OA厂商反馈,他们的 tomcat 应用会读取 ../../../../license.dat,会造成误报

  2. PHP Larvael 框架,需要包含 webroot 同级目录的框架文件

为了兼容这些情况,我们在 directory_outsideWebroot、include_outsideWebroot 等几个算法里都增加了判断,只有当请求参数里包含跨目录,且跳出了 webroot,我们才会判定为漏洞,比如:

GET /download.php?file=./../..///././../../etc/resolv.conf

当然,如果你想快速解决这个问题,可以通过增加文件目录探针来解决。即定位到 forcefulBrowsing,修改探针列表:

var forcefulBrowsing = {
    ...

    // 目录探针 - webshell 查看频次最高的目录
    unwantedDirectory: [

    ],

    // 文件探针 - webshell 查看频次最高的文件
    absolutePaths: [

    ]

    ...
}

当应用访问了这些敏感文件或者目录,我们就会打印报警或者拦截请求。

我的SQL语句里包含 chr(10) 调用,导致被拦截

在SQL注入阶段,自动化利用工具通常会大量使用 chr 函数来实现盲注攻击。因此,OpenRASP对SQL语句进行了检查,默认情况下如果 chr 函数调用超过5次,就会判定为攻击。

若要关闭这个检测算法,请打开官方插件,定位到如下内容:

        function_count: {
            chr:              5,
            char:             5
        }

删除 chr 这一行后,重新在后台上传并下推插件即可。

我在使用 phpMyAdmin 的时候,操作被 OpenRASP 拦截

我在应用内部,使用 ../../ 读取web目录外面的文件,OpenRASP不会拦截?

有一些OA厂商,在Windows下面会使用类似 ../../../license/license.dat 来读取文件,所以单纯看应用是否用 ../ 来读取其他目录的文件,是会产生误报的。所以我们默认关闭了 readFile_outsideWebroot 算法。

如果你没有这样的需求,可以打开这个算法。

支付回调接口,测试环境下SSRF误报?

SSRF 常见的特征为,访问的URL来自用户输入,且域名指向内网地址。比如,

GET /ssrf.php?url=http://test.baidu.com

按照这个思路,我们实现了 ssrf_intranet 检测算法。但是在某些测试环境下,这个算法会产生误报。

  1. 支付类的接口,当支付完成,通常会调用回调接口以通知支付是否成功。在测试环境,回调接口通常是内网地址,就造成了 ssrf_intranet 算法的误报。当然,线上的回调接口都是公网地址,不会有这个问题。

OpenRASP 支持XSS检测吗?

支持,是通过检查页面结构是否被用户输入所改变来实现的。

其他参考

官方插件无法拦截攻击,我应该如何调试

有问题请到QQ群里反馈,我们会尽快解决。

Previous在线调试Next二次开发

Last updated 11 days ago

URL白名单是一个比较好的解决方式,目前可以通过修改检测插件的方式来实现。请参考 进行配置。

在下,你还需要重启PHP服务器生效。

有的时候,你会发现官方插件无法拦截攻击,你可以参考 这个插件,将插件收到的内容打印出来,并观察官方插件的检测算法是不是不够完善?

管理后台 - 添加白名单
某些情况
999-event-logger.js