狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

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

【網絡安全】WEB網站訪問時ip獲取&偽造與隱藏&挖掘

admin
2024年12月27日 21:27 本文熱度 288

本篇文章學習一下如何獲取真實ip,隱藏自己的ip,攻擊者如何偽造ip,挖掘出真實ip。

真實ip獲取

應用層

這里以web為例,以下是一個簡單的http服務器,獲取真實ip

httpserver.py

from http.server import BaseHTTPRequestHandler, HTTPServer


class MyHTTPRequestHandler(BaseHTTPRequestHandler):

    def do_GET(self):

        self.send_response(200)

        self.send_header('Content-type', 'text/html')

        self.end_headers()

        

        # 獲取真實IP地址

        ip = self.headers.get('X-Forwarded-For', self.client_address[0])

        

        # 返回真實IP地址

        self.wfile.write(bytes(ip, 'utf-8'))        


def run_server():

    host = '0.0.0.0'

    port = 8000


    server = HTTPServer((host, port), MyHTTPRequestHandler)

    print(f'Starting server on {host}:{port}...')


    try:

        server.serve_forever()

    except KeyboardInterrupt:

        pass


    server.server_close()

    print('Server stopped.')


if __name__ == '__main__':

    run_server()

服務器啟動代碼

python3 httpserver.py

如果有這個X-Forwarded-For,就用這個,否則就用client_address[0]

客戶端代碼

import requests

url = 'http://127.0.0.1:8000'

headers = {'X-Forwarded-For': '192.168.1.1'}

response = requests.get(url, headers=headers)

print(response.text)

結果截圖

網絡層

網絡連接

還是上面的代碼,通過網絡連接獲取真實ip

不帶header再次發送

通過網絡連接獲取真實ip當然很簡單,也真實,但是往往客戶端與服務器不是直接連通,中間有LB、CDN等。

雷池WAF就是通過連接獲取請求者源IP的。

TOA

有些產品會把ip放到TOA(TCP Options),轉發給下游,例如LB(Load Balancer),因此,下游服務獲取真實ip時需要從TOA中獲取

proxy protocol

有v1 v2兩個版本,都存在偽造問題,且主流LB沒有使用這種方式,僅nginx這種開源的看到了,所以沒有深究,請查看參考。

ip偽造

應用層

以WEB為例,修改header即可。

import requests

url = 'http://127.0.0.1:8000'

headers = {'X-Forwarded-For': '8.8.8.8'}

response = requests.get(url, headers=headers)

print(response.text)

截圖

網絡層

TOA攻擊

一些服務會通過TOA來獲取真實ip,因此,可以通過修改TCP的選項(Options)來隱藏真實ip。
這里使用的是linux下方式,修改所有包,工具見參考。
首先,我先試驗了一下,使用自己宿主機的服務器,抓包查看

發現確實有修改,Options字段有值,之后找了幾個查ip的網站,發現ip138不受影響,另一個網站是被欺騙了。

curl -A "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11" https://2023.ip138.com | grep 您的IP

curl -A "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11" https://zh-hans.ipshu.com/my_info | grep 下面是你的公開IP

截圖如下:

windows下可以自己寫腳本來進行toa的修改

fake_toa.py

from scapy.all import *

import socket

import struct


# 目標域名和端口

target_ip = '106.63.19.14'

target_port = 443


# 偽造的源 IP 地址

fake_ip = '111.111.111.222'


# 將偽造的 IP 地址轉換為整數

fake_ip_as_int = struct.unpack("!I", socket.inet_aton(fake_ip))[0]


# 創建自定義的 TCP 選項

option_254 = (254, b'\x00\x50' + struct.pack('!I', fake_ip_as_int))


# 創建 IP 層

ip_layer = IP(dst=target_ip)


# 創建 TCP 層,不添加 TCP 選項

syn = TCP(sport=RandShort(), dport=target_port, flags='S')


# 組合 IP 層和 TCP 層,發送 SYN 數據包

syn_ack = sr1(ip_layer / syn)


# 檢查是否收到 SYN+ACK 數據包

if syn_ack[TCP].flags == 'SA':

    # 創建 ACK 數據包,也不添加 TCP 選項

    ack = TCP(sport=syn_ack[TCP].dport, dport=target_port, flags='A', seq=syn_ack[TCP].ack, ack=syn_ack[TCP].seq + 1)


    # 發送 ACK 數據包

    send(ip_layer / ack)


    # 創建 HTTP 請求,只包含 Host 頭部

    # http_request = 'GET /ip/local/geo/v1/district HTTP/1.1\r\n' \

    #                'Host: qifu-api.baidubce.com\r\n\r\n'

    http_request = 'GET / HTTP/1.1\r\n' \

                   'Host: 2023.ip138.com\r\n\r\n' \


    # 創建 HTTP 數據包,這次在 TCP 層添加自定義的選項

    http_packet = ip_layer / TCP(sport=syn_ack[TCP].dport, dport=target_port, flags='PA', seq=syn_ack[TCP].ack,

                                 ack=syn_ack[TCP].seq + 1, options=[option_254]) / Raw(load=http_request)


    # 接收 HTTP 響應

    http_response = sr1(http_packet)


    # 打印 HTTP 響應

    if http_response:

        print(http_response.show())

    else:

        print('No response')

else:

    print('Did not receive SYN+ACK. Received: {}'.format(syn_ack[TCP].flags))

抓包可以看到,確實添加了Options字段的內容

proxy protocol

有v1、v2兩個版本,都可以偽造,用的不多也沒找到開源工具就沒深究了。

隱藏

代理

比較寬泛,無法列舉全。例如,使用cdn來隱藏自己服務器的ip,使用“梯子”做中間人來訪問一些你的ip無法訪問的網站,或者開四層、七層代理做轉發,使用LB來做負載均衡的同時隱藏后端服務ip等

挖掘

代理

以cdn為例,這里找了一個博客網站,嘗試獲取真實ip

多地ping

可以看到使用了騰訊云的CDN

歷史DNS解析記錄

查看 IP 與 域名綁定的歷史記錄,可能會存在使用 CDN 前的記錄

國外主機解析域名

有的網站負責人為了省錢,只對國內使用cdn,于是國外的流量都直接打到了真實服務器上。第一步ping的時候有了,國外也是通過cdn的。

網站RSS訂閱

有的網站可以郵件訂閱RSS,發送郵件的服務器就是使用網站所在的服務器,這里該網站沒有此功能,失敗。

網絡空間搜索引擎

這里使用了zoomeye,我查ip沒有顯示cdn,以為成功了,問了博客作者,還是cdn的ip

總結

  1. proxy protocol沒有研究,和TOA差不多,按照協議發包就行了,實現就交給讀者吧。
  2. TOA的偽造方式還是不錯的,非linux下沒有btftools,可以自己寫一個代理,把瀏覽器的流量轉發到本地代理,代理的功能就是把TOA改一下。
  3. 一些代理隱藏ip還是不錯的,除非網站從開始沒有使用cdn、部分使用cdn,或網站服務器有其他服務導致真實ip發出包了。該博客作者我也問了,一開始就使用了CDN,也沒有其他子域名、服務,應該是無法找到真實IP了。

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