官方插件定制

不同的研发人员,编码的习惯可能会不同;不同的业务,应用场景也不同。根据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