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-Type
为text/html
,且状态码为200
- 响应是动态生成的,比如 JSP 文件或者 Servlet
inject.urlprefix
配置选项不为空- 要注入的内容,aka
<app_home>/rasp/assets/inject.html
存在且内容不为空
另外,如果你使用的是自动化安装包,我们在默认生成的 openrasp.yml
配置文件里,禁用了这个功能
hooks.ignore: http_output
你需要手动注释掉 hooks.ignore
这一行,才能开启这个功能
自定义插入的 HTML
- 你需要配置
inject.urlprefix
选项,设置要匹配的URL前缀,e.ghttp://www.baidu.com/admin/
- 编辑
<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 脚本。
这可能是因为 vmhgfs
跟 inotify
本身存在兼容性问题。最快的解决方法,就是将整个服务器软件都复制到虚拟机的磁盘上,比如 /root/tomcat/