• 官方插件定制
    • 我的业务有执行命令需求,如何允许应用执行命令?
    • 通过文件函数写入 webshell,OpenRASP 不会拦截?
    • SQLi 常量对比算法 存在误报?
  • 其他参考
    • 官方插件无法拦截攻击,我应该如何调试

    官方插件定制

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

    我的业务有执行命令需求,如何允许应用执行命令?

    某内网登录业务需要执行命令,以获取 mac 地址等等。这种情况我们不能拦截所有的命令执行,e.g

    1. nbtstat -A 192.168.100.30

    解决方法是定位到 algorithmConfig,修改算法开关:

    1. var algorithmConfig = {
    2. ...
    3. command_other: {
    4. action: 'block' // 改为 log 或者 ignore
    5. },
    6. ...
    7. }

    在未来,我们会引入 bash/cmd 的语义解析器,帮助你更好的白名单化要执行的命令、并检测命令注入攻击,请耐心等待。

    通过文件函数写入 webshell,OpenRASP 不会拦截?

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

    1. wp_config.php - wordpress 安装时需要写配置文件,如果是安装好的可忽略
    2. 201704_cplog.php - discuz 错误日志,经常更新

    由于这类情况较多,官方插件已经默认不再拦截写脚本文件的操作,而是打印日志。如果你没有这样的业务,我们强烈建议你将默认的 log 改为 block。若要这么做,请定位到 algorithmConfig,修改算法开关:

    1. var algorithmConfig = {
    2. ...
    3. writeFile_script: {
    4. action: 'log' // 改为 block 即可
    5. },
    6. ...
    7. }

    开启后,如果应用尝试写入后缀为 php/jsp/asp/… 的文件,将会被判定为木马上传,并拦截 aka 尝试写入脚本文件

    SQLi 常量对比算法 存在误报?

    某后台结算业务,反馈 SQLi常量对比 算法存在误报。经过检查,我们发现这其实是编码不规范,使用了 1=1、0=0 这样的写法,e.g

    1. WHERE 1=1
    2. AND ('2018-03-22'='' OR a.SUCC_TIME>='2018-03-22' )
    3. AND ('2018-03-22'='' OR a.SUCC_TIME<=DATE_ADD('2018-03-22', INTERVAL 1 DAY))
    4. AND (0=0 OR a.DEAL_ID=0)

    解决方法是定位到 algorithmConfig,修改算法开关

    1. var algorithmConfig = {
    2. ...
    3. sqli_policy: {
    4. feature: {
    5. constant_compare: true, // 改为 false 即可
    6. },
    7. ...
    8. },
    9. ...
    10. }

    当然,如果有能力的话,我们建议你不要禁用这个算法,而是推动开发进行改造。

    其他参考

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

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

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

    原文: https://rasp.baidu.com/doc/dev/official.html