ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Nginx配置valid_referer解决跨站请求伪造(CSRF)

2022-02-21 17:35:11  阅读:728  来源: 互联网

标签:跨站 修复 漏洞 Nginx valid referer CSRF curl 请求


Nginx配置valid_referer解决跨站请求伪造(CSRF)

文章目录

漏洞说明

漏洞描述

跨站请求伪造(CSRF)。即使是格式正确有效且一致的请求也有可能在用户不知情的情况下发送。例如,如果某个 Web 服务器设计为接收客户机的请求时,没有任何机制来验证该请求是否确实是客户机发送的,那么攻击者就有可能诱导客户机向该 Web 服务器误发请求,而该请求将视为真实请求。这可通过 URL 、图像装入、XMLHttpRequest 等来完成,并可导致数据暴露或意外的代码执行。如果用户当前已登录到受害者站点,请求将自动使用用户的凭证(包括会话 cookie、IP 地址和其他浏览器认证方法)。通过使用此方法,攻击者可伪造受害者的身份,并以其身份提交操作。因此,Web应用程序应该检查所有客户端发起的请求,以发现其不合法的迹象。

跨站请求伪造 Wiki:https://en.wikipedia.org/wiki/Cross-site_request_forgery

危害等级

CSRF 漏洞脆弱性的严重程度取决于受影响应用程序的功能。例如,对搜索页面的 CSRF 攻击的严重性低于对转账交易页面的 CSRF 攻击。

修复建议

image-20220221140830350

漏洞复现

可以使用 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
image-20220221143248101

BurpSuite测试方法

BurpSuite 下载链接:
https://portswigger.net/burp/releases/professional-community-2022-1-1?requestededition=community

开启代理抓包后,Send to Repeater
image-20220221144239322
点击 Send 重复发送当前包,下面是未修改的正确 Referer,及其返回状态码:200 OK
image-20220221144806905
任意修改 Referer 信息,再发送数据包,观察返回状态码。可以看到都能返回:200 OK,即正常请求到 web 页面
image-20220221145500343

漏洞修复

为验证漏洞修复的情况和修复方案的可行性,这里使用 AppScan 对测试网站进行扫描,对比修复前后的结果。

修复前扫描测试

image-20220221150222733
image-20220221134515231

漏洞修复方案

这里采用 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;

image-20220221150746987
重启 Nginx

nginx -s reload

image-20220221151301024

漏洞修复验证

  • curl 测试结果

携带域名 www.qq.com 为 referer时,服务器返回了 403 Forbidden;
携带白名单中的域名 www.baidu.com 为 referer时,服务器返回了 302 Found。
image-20220221151658303

  • BurpSuite 测试结果与 curl 相同

image-20220221152600232
image-20220221152711270

修复后扫描测试

image-20220221152845015

参考文章

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,curl,请求
来源: https://blog.csdn.net/zhongxj183/article/details/123051546

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有