男女做爽爽爽网站-男女做羞羞高清-男女做爰高清无遮挡免费视频-男女做爰猛烈-男女做爰猛烈吃奶啪啪喷水网站-内射白浆一区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

【WEB開發】偽造X-Forwarded-For繞過服務器IP地址過濾

admin
2025年5月13日 23:40 本文熱度 47

在正常的TCP/IP 通信中,是可以偽造數據包來源 IP 的,但這會讓發送出去的數據包返回到偽造的IP上,無法實現正常的通信。

實現TCP/IP層級別的偽造很難,因為很難實現正常的TCP連接;但是在應用層協議HTTP上的實現較容易,通過偽造IP,能欺騙多數服務器應用程序實現通信。對于繞過服務器的IP地址過濾或者偽造來源IP特別有用,導致的后果就是非授權IP能訪問服務器,甚至能鉆服務器的漏洞。

這其中的關鍵就是偽造X-Forwarded-For。

一、X-Forwarded-For介紹

我們知道 HTTP 連接基于 TCP 連接,HTTP 協議中沒有 IP 的概念,只能通過X-Forwarded-For來實現。

X-Forwarded-For位于HTTP協議的請求頭, 是一個 HTTP 擴展頭部。HTTP/1.1(RFC 2616)協議并沒有對它的定義,它最開始是由 Squid 這個緩存代理軟件引入,用來表示 HTTP 請求端真實 IP。如今它已經成為事實上的標準,被各大 HTTP 代理、負載均衡等轉發服務廣泛使用,并被寫入RFC 7239(Forwarded HTTP Extension)標準之中。

X-Forwarded-For 請求頭格式非常簡單:

X-Forwarded-For: client, proxy1, proxy2

可以看到,XFF 的內容由「英文逗號 + 空格」隔開的多個部分組成,最開始的是離服務端最遠的設備 IP,然后是每一級代理設備的 IP。

如果一個 HTTP 請求到達服務器之前,經過了三個代理 Proxy1、Proxy2、Proxy3,IP 分別為 IP1、IP2、IP3,用戶真實 IP 為 IP0,那么按照 XFF 標準,服務端最終會收到以下信息:

X-Forwarded-For: IP0, IP1, IP2

Proxy3 直連服務器,它會給 XFF 追加 IP2,表示它是在幫 Proxy2 轉發請求。列表中并沒有 IP3,IP3 可以在服務端通過 Remote Address 字段獲得。Remote Address來自 TCP 連接,表示與服務端建立 TCP 連接的設備 IP,在這個例子里就是 IP3。

Remote Address 無法偽造,因為建立 TCP 連接需要三次握手,如果偽造了源 IP,無法建立 TCP 連接,更不會有后面的 HTTP 請求。不同語言獲取Remote Address的方式不一樣,例如Node.js 是req.connection.remoteAddress,原理都一樣。

一般的客戶端(例如:瀏覽器)在發送HTTP請求時,并不會設置X-Forwarded-For頭,當請求在到達第一個代理服務器時,代理服務器會在請求字段中加上X-Forwarded-For這個字段,并將其值設置為客戶端的IP地址,后面如果還有更多的代理服務器,會依次將Ip地址追加到X-Forwarded-For這個字段中,最終當請求到達了Web應用服務器,應用會通過獲取X-Forwarded-For頭取出最左邊的IP地址,即為客戶端的真實IP地址。

如果客戶端在發起請求時,請求頭上帶上一個偽造的X-Forwarded-For,由于后續每層代理只會追加而不會覆蓋,那么最終到達應用服務器時,最左邊的IP地址就是客戶端偽造的IP地址。

這個利用方法可以繞過一些針對IP地址進行限制的應用,例如:投票等應用

一般在nginx中會進行如下的配置

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for

這種如果沒有X-Forwarded-For消息頭會添加消息頭,如果存在該消息頭則會在后面追加一個IP。

二、X-Forwarded-For偽造

下面就是一種常見的獲取客戶端真實IP的方式

public String getClientIp(HttpServletRequest request) {    String xff = request.getHeader("X-Forwarded-For");    if (xff == null) {        return request.getRemoteAddr();    } else {        return xff.contains(",") ? xff.split(",")[0] : xff;    }}

可以通過抓包的方式偽造X-Forwarded-For頭,如下

三、修復方式

目前很多Web 應用(例如獲取用戶所在地區,基于 IP 做訪問頻率控制,禁止某些IP訪問等等),為了獲取用戶真正的 IP,從 HTTP 請求頭中獲取 IP地址。這些情況下,必須確保獲取到的IP地址是真實可靠的。

經過前面的分析和測試,

1.對于直接使用的 Web 應用,必須使用從TCP連接中得到的 Remote Address,才是用戶真實的IP;

2.對于使用 nginx 反向代理服務器的Web應用,nginx必須使用Remote Address正確配置set Headers,后端服務器則使用nginx傳過來的相應IP地址作為用戶真實IP。

正確配置nginx的方式,就是在最外層的代理服務器強制設定X-Forwarded-For的值為REMOTE ADDRESS。配置如下

proxy_set_header X-Forwarded-For $remote_addr

在最外層Nginx(即直接對外提供服務的Nginx)使用$remote_addr代替上面的$proxy_add_x_forwarded_for,可以防止偽造X-Forwarded-For。$proxy_add_x_forwarded_for會在原有X-Forwarded-For上追加IP,這就相當于給了偽造X-Forwarded-For的機會。而$remote_addr是獲取的是直接TCP連接的客戶端IP,這個是無法偽造的,即使客戶端偽造也會被覆蓋掉,而不是追加。

其它一下相似的消息頭,也可以嘗試使用這些消息頭進行繞過

X-Originating-IP: 127.0.0.1X-Remote-IP: 127.0.0.1X-Client-IP: 127.0.0.1X-Forwarded-For: 127.0.0.1X-Forwared-Host: 127.0.0.1X-Host: 127.0.0.1X-Custom-IP-Authorization: 127.0.0.1


閱讀原文:原文鏈接


該文章在 2025/5/14 9:29:40 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产又爽又猛又粗的A片 | 国产欧美一区二区三区免费看 | 国产一区二区三区乱码在线观看 | 免费观看韩国经典的A片 | 无码毛片视频一区 | 亚洲天天网综合自拍图片专区 | 国产一区二区三区在线看片 | 2021全国精品卡一卡二 | 亚洲国产日韩在线成人蜜芽 | 欧美成aⅴ人高清免费 | 最新国产精品自拍 | 视频偷窥在线精品国自产拍 | 蜜桃视频无码区在线观看 | 一区二区三区免费观看 | 欧美性爱在线播放网 | 青青草在视频线首页 | 久久久久久久精品免费久精品蜜桃 | 国产高清无码精品福利午夜精品无码视频动漫无码专区亚 | 精品久久国产字幕高潮69久久夜色精品国产69乱 | 久久久久亚洲精品中文字幕 | 久久久精品国产亚洲成人满1 | 国产午夜一级在线观看影院 | 日韩欧美国产成人精品高清综合网 | 久久婷婷五月国产色综合 | 精品人妻无码一区二区三区下一页 | 国产午夜在线观看视频播放 | 日韩大片免费看 | 欧美又粗又嫩又黄A片成人 欧美又粗又深又猛又爽A片 | 精品久久久久久无码国产 | 丰满人熟妇大尺度人体艺 | 亚洲第一综合色 | 亚洲熟女偷拍 | 精品999久久久一级毛片 | 成年女人一级毛片视频播放 | 少妇性夜夜春夜夜爽A片 | 精品人妻无码久久久久久 | 久久亚洲精品无码日韩按摩 | 国产成人久久精品77777 | 无码国产伦一区二区三区视频 | 亚洲色网视频一区 | 色综合精品久久久久久久 |