X-Forwarded-For 客户端 IP 伪造过程及防范

单号:
【ID:1184794】【安全漏洞】【运营管理平台】【中危】存在IP地址伪造漏洞
问题:

漏洞名称:存在IP地址伪造漏洞

漏洞等级:中危

关联bug:

漏洞描述:

   应用系统存在IP地址伪造漏洞,攻击者可通过修改HTTP请求包伪造IP地址绕过IP地址限制,访问或执行系统相关功能。

漏洞功能点:

   账户设置—系统日志

漏洞地址:

   /

测试身份:

http://10.200.1.145/

admin/Yealink@vcs2019

 

数据包:

DPOST /yuser-server/managers/testtest/resetPassword HTTP/1.1

Host: 10.200.1.145

Content-Length: 407

Accept: application/json, text/plain, */*

language: zh_CN

appid: ymall

platform: ADMIN

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.68

token: 579b137de27649dba7bc03fdeccedff5

Content-Type: application/json

Origin: http://10.200.1.145

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6

X-Forwarded-For:127.0.0.1

Connection: close

 

{"accountType":"STANDARD","userId":"fffb11418abe4929aa3838a75828ff54","username":"testtest","deptName":null,"jobTitle":null,"mobile":null,"pricePermission":"Phone","lastLoginTime":null,"lockVersion":1,"roleId":"yl0005","roleName":"销售","name":"testtest","activeStatus":0,"email":"chenxd@yealink.com","menuList":null,"partnerList":null,"notifyConfigs":[],"managerAccountId":null,"managerAccountName":null}}

漏洞流程:

1、随便一个会记录日志的操作处,这里以重置密码为例,通过XFF属性头伪造IP地址为127.0.0.1

 

2、查看日志管理可以看到伪造的IP地址

修复方案:

1.直接对外提供服务的web应用,应通过REMOTE ADDRESS获取IP。

2.对于使用了nginx反向代理的web应用,正确配置应该是在最靠近用户端的代码服务器上强制设定X-Forwarded-For的值为REMOTE ADDRESS。

https://blog.csdn.net/xiaowangku/article/details/112796338

X-Forwarded-For 客户端IP伪造的防范
我们知道 X-Forwarded-For可以被伪造,但是客户端请求来源IP其实是不能被伪造的,因为在客户端和服务端进行通信的时候,我们需要进行三次握手,如果这个来源IP是假的,那么我们的握手是不会成功的,就好像我们给对方写信,如果发件人的地址写错了,那么我们就收不到对方的回信。

在 nginx 中,还有一个配置

proxy_set_header X-Real-IP $remote_addr
$remote_addr 是 nginx 的内置变量,代表客户端的真实IP。

既然我们能够直接获得真实的客户端 IP,那么我们为什么还要获得 X-Forwarded-For 呢?原因在于如果配置了多层的代理,那么这个 X-Real-IP 将会是上一层代理的真实 IP。

我们直接获得 X-Forwarded-For 将会有 IP 被伪造的风险,而使用 X-Real-IP 将会无法获得真实的 IP 地址。我们将两者的优势进行结合,便可防止客户端 IP 伪造。

对于最外层的代理服务器,我们可以进行如下配置:

proxy_set_header X-Forwarded-For $remote_addr

 

注释掉原配置:proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

新增配置:proxy_set_header X-Forwarded-For $remote_addr;

 

 

 
posted @ 2023-08-01 14:49  坠落星空  阅读(1616)  评论(0编辑  收藏  举报