• 灰盒扫描工具
    • 安装或升级扫描器
    • 配置管理后台
    • 配置并启动扫描器
    • IAST 控制台
      • URL 白名单
      • 扫描并发速率控制
    • FAQ
      • 1. 目前支持哪些漏洞的检测?
      • 2. 调试日志说明
      • 3. 常见错误说明
      • 4. 找不到 openrasp-iast 命令
      • 5. 在 IAST 控制台清空或删除任务之后,原先的漏洞无法再次检出
      • 6. IAST 控制台看不到任务

    灰盒扫描工具

    openrasp-iast 是一款灰盒扫描工具,能够结合应用内部hook点信息精确的检测漏洞。传统黑盒扫描器依赖于页面响应检测漏洞,不但需要发送大量的请求,还有误报的可能。对于SSRF、文件上传等漏洞,在页面没有回显、主机没有外网权限的情况下,还可能会漏报。openrasp-iast 很好的解决了上述问题,下面我们来看下如何安装它。

    另外,IAST 污点追踪功能已经在开发中,将会跟随 v1.4.0 版本发布。若要了解当前的系统架构,请参考 二次开发 - 架构说明 - 灰盒扫描器 文档。

    安装或升级扫描器

    本工具仅支持Linux平台,在开始之前,请先确保:

    • OpenRASP 管理后台 已经安装完毕,版本号 >= 1.2.0,并至少有一台在线主机
    • Python 3.7 或者更高版本
    • MySQL 数据库, 建议使用5.5.3以上版本 使用 pip3 安装 openrasp-iast,以及依赖的库:
    1. pip3 install --upgrade git+https://github.com/baidu-security/openrasp-iast

    配置 MySQL 数据库,建立名为 openrasp 的数据库,并为 rasp@% 授权,密码为 rasp123。请用 root 账号连接 mysql 并执行如下语句:

    1. DROP DATABASE IF EXISTS openrasp;
    2. CREATE DATABASE openrasp default charset utf8mb4 COLLATE utf8mb4_general_ci;
    3. grant all privileges on openrasp.* to 'rasp'@'%' identified by 'rasp123';
    4. grant all privileges on openrasp.* to 'rasp'@'localhost' identified by 'rasp123';

    配置管理后台

    打开云控管理后台,左上角选择一个IAST扫描器使用的应用,若没有可以在应用管理创建一个。扫描器检出的报警都可以在这里查看。

    然后在 插件管理 里,上传并下发 IAST 插件。若在插件列表里无法看到名为 iast: 2019-XXXX-YYYY 的插件,可以手动从 baidu/openrasp 下载并上传。

    接着在 防护设置 -> Fuzz 服务器地址 里填入 openrasp-iast 所监听的URL,e.g

    1. http://IAST服务器地址:25931/openrasp-result

    最后在 系统设置 -> 通用设置中,修改检测配置:

    • [插件] 单个hook点最大执行时间 设置为 5000
    • 开启文件过滤器: 当文件不存在时不调用检测插件 设置为 关闭
    • LRU 大小 设置为 0 点击保存后,以上配置需要等待一个心跳周期后生效(默认90秒)。如果想要立即生效,请手动重启下 Tomcat/PHP 等服务器。

    配置并启动扫描器

    在云控后台右上角 添加主机 -> Fuzz 工具安装 找到 fuzz 工具安装命令。执行后会自动创建配置文件,并修正云控相关字段:

    1. openrasp-iast config -a APP_ID -b APP_SECRET -c BACKEND_URL -m mysql://rasp:rasp123@127.0.0.1/openrasp

    若要在前台启动,请使用如下命令:

    1. openrasp-iast start -f

    若要在后台启动,请去掉 -f 参数:

    1. openrasp-iast start

    若启动成功,我们默认会监听 18664 端口,可以直接使用浏览器打开 YOUR_IP:18664 访问 IAST 控制台。

    IAST 控制台

    openrasp-iast 是被动扫描模式,不会使用爬虫技术去获取URL信息。当 iast.js 下发成功,Java/PHP 内部的探针会自动在请求结束时,将本次请求的参数、hook点信息提交给 openrasp-iast 服务器进行分析,并选择性的 Fuzz 目标。

    通常,我们会将 OpenRASP 部署至测试环境,并长期运行。在QA、RD做单元测试、功能测试时自动的进行漏洞检测。检测的目标按照 IP:PORT 或者 HOST 进行分组,每个目标可以有不同的配置。若勾选 自动启动扫描 选项,则会在发现新目标时自动启动扫描任务: web_console

    在任何状态下,都可点击 设置 按钮对某个任务进行配置,设置会立即生效。

    URL 白名单

    若要避免扫描某些URL,比如注销页面 /logout.php,可以在 IAST 控制台设置一个正则表达式,e.g

    1. ^/logout\.php.*

    控制台会在保存时自动校验正则表达式是否合法。

    扫描并发速率控制

    openrasp-iast 会自动调节扫描速率,默认最大并发是 20,扫描间隔是 0 ~ 1000ms。若扫描速率过快可能会造成拒绝服务,请谨慎修改。

    FAQ

    1. 目前支持哪些漏洞的检测?

    目前支持的漏洞触发条件均为用户输入的参数直接拼接产生的漏洞,尚不支非持非http参数、参数编解码方式触发的漏洞,包含以下类型:

    • 命令注入
    • 目录遍历
    • PHP eval代码执行
    • 文件上传
    • 文件包含
    • 任意文件读取
    • 任意文件写入
    • SQL注入
    • SSRF
    • Java XXE

    2. 调试日志说明

    openrasp-iast 包含如下几类日志,默认存储路径为 ~/openrasp-iast/logs:

    文件名文件内容
    error.log所有模块的错误日志,ERROR级的日志会打印到这个文件
    MainProcess.log主进程日志
    Preprocessor.log预处理模块日志,包含对rasp agent传入信息的处理日志
    Monitor.log监控模块日志,包含web后台操作、扫描任务启停等日志
    Scanner*扫描任务日志目录,每个任务对应一个目录,包含主线程日志Scanner.log,和所有插件的日志 plugin插件名.log

    3. 常见错误说明

    启动失败:

    • OSError: [Errno 48] Address already in use

      指定的http服务端口被占用,检查openrasp-iast是否已在运行,或是其他应用占用了配置项中preprocessor.http_port和monitor.console_port指定的端口

    • OSError: [Errno 24] Too many open files

      文件描述符超过限制,使用 ulimit -n 10240 命令修改当前文件描述符数量限制后再启动

    4. 找不到 openrasp-iast 命令

    如果是 pip3 安装后没有 openrasp-iast 命令,那么它可能是被安装到了 python3 所在的目录,如 /usr/local/lib/python3.7/bin

    解决方法有:

    • 添加软链接,比如以 root 执行 ln -s /usr/local/lib/python3.7/bin/openrasp-iast /usr/bin 命令
    • 将该目录加入 $PATH,比如在当前shell下执行 export PATH=$PATH:/usr/local/lib/python3.7/bin

    5. 在 IAST 控制台清空或删除任务之后,原先的漏洞无法再次检出

    • 请先确认漏洞是否已经修复
    • 如果漏洞未修复,请检查 云控后台 -> 系统设置 -> 通用设置->LRU 大小 的设置是否为 0

    6. IAST 控制台看不到任务

    • 尝试在目标系统进行一些操作,触发一些API接口调用
    • 检查 openrasp-iast 服务器是否能够访问目标地址
      • 扫描器默认会使用 服务器 IP + HOST 方式发起请求
      • 如果扫描器无法直接连接目标地址,你可以改为 HOST 方式扫描
      • 在后台 防护设置 -> 使用 HOST 直接访问的服务 里填入 .* 或者 HOST 白名单正则即可
    • 如果还是没有任务,请将 ~/openrasp-iast/logs 打包提交给我们