官方插件定制
不同的研发人员,编码的习惯可能会不同;不同的业务,应用场景也不同。根据QQ群里用户的反馈,我们进行了整理。如果还有没覆盖的情况,请联系QQ群主,我们会给出方案,并更新文档。
我的业务有执行命令需求,如何允许应用执行命令?
某内网登录业务需要执行命令,以获取 mac 地址等等。这种情况我们不能拦截所有的命令执行,e.g
nbtstat -A 192.168.100.30
解决方法是定位到 algorithmConfig
,修改算法开关:
var algorithmConfig = {
...
command_other: {
action: 'block' // 改为 log 或者 ignore
},
...
}
在未来,我们会引入 bash/cmd
的语义解析器,帮助你更好的白名单化要执行的命令、并检测命令注入攻击,请耐心等待。
通过文件函数写入 webshell,OpenRASP 不会拦截?
我们发现,有的业务需要能够写 PHP 脚本,e.g
wp_config.php - wordpress 安装时需要写配置文件,如果是安装好的可忽略
201704_cplog.php - discuz 错误日志,经常更新
由于这类情况较多,官方插件已经默认不再拦截写脚本文件的操作,而是打印日志。如果你没有这样的业务,我们强烈建议你将默认的 log
改为 block
。若要这么做,请定位到 algorithmConfig
,修改算法开关:
var algorithmConfig = {
...
writeFile_script: {
action: 'log' // 改为 block 即可
},
...
}
开启后,如果应用尝试写入后缀为 php/jsp/asp/… 的文件,将会被判定为木马上传,并拦截 aka 尝试写入脚本文件
SQLi 常量对比算法 存在误报?
某后台结算业务,反馈 SQLi常量对比
算法存在误报。经过检查,我们发现这其实是编码不规范,使用了 1=1、0=0
这样的写法,e.g
WHERE 1=1
AND ('2018-03-22'='' OR a.SUCC_TIME>='2018-03-22' )
AND ('2018-03-22'='' OR a.SUCC_TIME<=DATE_ADD('2018-03-22', INTERVAL 1 DAY))
AND (0=0 OR a.DEAL_ID=0)
解决方法是定位到 algorithmConfig
,修改算法开关
var algorithmConfig = {
...
sqli_policy: {
feature: {
constant_compare: true, // 改为 false 即可
},
...
},
...
}
当然,如果有能力的话,我们建议你不要禁用这个算法,而是推动开发进行改造。
其他参考
官方插件无法拦截攻击,我应该如何调试
有的时候,你会发现官方插件无法拦截攻击,你可以参考 999-event-logger.js 这个插件,将插件收到的内容打印出来,并观察官方插件的检测算法是不是不够完善?
有问题请到QQ群里反馈,我们会尽快解决。