HTML 响应修改

功能说明

为了防御/检测某些漏洞,CSRF、后台盲打等等,OpenRASP 允许你在 页面末尾 上注入代码,e.g

<!-- Added by OpenRASP -->
<script type="text/javascript">
    alert('Hello from OpenRASP - https://rasp.baidu.com');
</script>
<!-- End added by OpenRASP -->

要注意的是,只有在当满足如下条件时,OpenRASP 才会插入HTML

  • 页面响应的 Content-Typetext/html,且状态码为 200
  • 响应是动态生成的,比如 JSP 文件或者 Servlet
  • inject.urlprefix 配置选项不为空
  • 要注入的内容,aka <app_home>/rasp/assets/inject.html 存在且内容不为空

另外,如果你使用的是自动化安装包,我们在默认生成的 openrasp.yml 配置文件里,禁用了这个功能

hooks.ignore: http_output

你需要手动注释掉 hooks.ignore 这一行,才能开启这个功能

自定义插入的 HTML

  1. 你需要配置 inject.urlprefix 选项,设置要匹配的URL前缀,e.g http://www.baidu.com/admin/
  2. 编辑 <app_home>/rasp/assets/inject.html 文件,输入你要插入的内容,e.g
<!-- Added by OpenRASP -->
<script type="text/javascript">
    alert('Hello from OpenRASP - https://rasp.baidu.com');
</script>
<!-- End added by OpenRASP -->

OpenRASP 会监控这个文件,保存后立刻生效

关闭响应修改功能

删除 <app_home>/rasp/assets/inject.html 文件,删除后立即生效

状态检查

访问一个 JSP 或者 Servlet 页面,检查注入的内容是否存在即可。

注意: 浏览器可能有缓存,建议清掉缓存测试

FAQ

1. 我修改了 inject.html,总要重启服务器才会生效

如果你是在 VMWare 虚拟机里测试 OpenRASP,然后插件是放在 VMWare 共享 里的,这个时候 inotify 可能不会生效,也就无法实时更新 js 脚本。

这可能是因为 vmhgfsinotify 本身存在兼容性问题。最快的解决方法,就是将整个服务器软件都复制到虚拟机的磁盘上,比如 /root/tomcat/