Nginx配置valid_referer解决跨站请求伪造(CSRF)
2022/2/22 7:25:38
本文主要是介绍Nginx配置valid_referer解决跨站请求伪造(CSRF),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Nginx配置valid_referer解决跨站请求伪造(CSRF)
文章目录
- Nginx配置valid_referer解决跨站请求伪造(CSRF)
- 漏洞说明
- 漏洞描述
- 危害等级
- 修复建议
- 漏洞复现
- curl测试方法
- BurpSuite测试方法
- 漏洞修复
- 修复前扫描测试
- 漏洞修复方案
- 漏洞修复验证
- 修复后扫描测试
- 参考文章
漏洞说明
漏洞描述
跨站请求伪造(CSRF)。即使是格式正确有效且一致的请求也有可能在用户不知情的情况下发送。例如,如果某个 Web 服务器设计为接收客户机的请求时,没有任何机制来验证该请求是否确实是客户机发送的,那么攻击者就有可能诱导客户机向该 Web 服务器误发请求,而该请求将视为真实请求。这可通过 URL 、图像装入、XMLHttpRequest 等来完成,并可导致数据暴露或意外的代码执行。如果用户当前已登录到受害者站点,请求将自动使用用户的凭证(包括会话 cookie、IP 地址和其他浏览器认证方法)。通过使用此方法,攻击者可伪造受害者的身份,并以其身份提交操作。因此,Web应用程序应该检查所有客户端发起的请求,以发现其不合法的迹象。
跨站请求伪造 Wiki:https://en.wikipedia.org/wiki/Cross-site_request_forgery
危害等级
CSRF 漏洞脆弱性的严重程度取决于受影响应用程序的功能。例如,对搜索页面的 CSRF 攻击的严重性低于对转账交易页面的 CSRF 攻击。
修复建议
漏洞复现
可以使用 curl 或 BurpSuite 工具携带非法 http_referer 复现测试
curl测试方法
curl -h -I, --head Show document info only -e, --referer <URL> Referrer URL
curl -e "http://www.baidu.com" -I http://192.168.64.149
测试结果:任意修改 referer 信息,服务器都能返回 302 Found
BurpSuite测试方法
BurpSuite 下载链接:
https://portswigger.net/burp/releases/professional-community-2022-1-1?requestededition=community
开启代理抓包后,Send to Repeater
点击 Send 重复发送当前包,下面是未修改的正确 Referer,及其返回状态码:200 OK
任意修改 Referer 信息,再发送数据包,观察返回状态码。可以看到都能返回:200 OK,即正常请求到 web 页面
漏洞修复
为验证漏洞修复的情况和修复方案的可行性,这里使用 AppScan 对测试网站进行扫描,对比修复前后的结果。
修复前扫描测试
漏洞修复方案
这里采用 AppScan 修复建议中的第7点,修改 nginx.conf,添加 http_referer 头配置
#### http_referer fix valid_referers none blocked server_names 127.0.0.1 192.168.64.149 *.baidu.com; if ($invalid_referer){ return 403; } # server_name localhost;
重启 Nginx
nginx -s reload
漏洞修复验证
- curl 测试结果
携带域名 www.qq.com 为 referer时,服务器返回了 403 Forbidden;
携带白名单中的域名 www.baidu.com 为 referer时,服务器返回了 302 Found。
- BurpSuite 测试结果与 curl 相同
修复后扫描测试
参考文章
https://en.wikipedia.org/wiki/Cross-site_request_forgery
https://www.jianshu.com/p/0de3e5faea0d
http://www.codeforest.cn/article/93
https://www.cnblogs.com/wajika/p/6575656.html
这篇关于Nginx配置valid_referer解决跨站请求伪造(CSRF)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享
- 2024-08-14nginx 让访问带有/relid的地址返回404 ,例子 /relid-x-0.36-y-131.html-icode9专业技术文章分享
- 2024-08-14nginx 判断地址有/statics/的路径,指向到/home/html/statics/目录-icode9专业技术文章分享