原理
DNS区域传送(Zone Transfer)是DNS主从服务器之间同步区域文件的过程,通常用于确保主服务器(Master)和从服务器(Slave)的数据一致性。主服务器更新记录后,从服务器通过区域传送(AXFR或IXFR请求)获取最新数据。
漏洞成因:
当DNS服务器被错误配置为允许任意客户端发起区域传送请求时,攻击者可伪装成“从服务器”,获取目标域名的完整DNS记录(包括所有主机名、IP地址、子域信息等),导致敏感信息泄露。
漏洞危害
敏感信息泄露
获取域名下所有主机名(如 mail.example.com、db.internal)、IP地址、子域等,暴露内部网络架构。
发现隐藏服务(如测试环境、管理后台)或未公开的服务器。
内网渗透入口
若内部服务器使用私有IP(如 192.168.x.x),攻击者可结合其他漏洞(如SSH弱口令)尝试横向移动。
钓鱼攻击与社会工程
通过暴露的域名信息伪造高仿站点(如 login.example.com),提升钓鱼成功率。
供应链攻击
发现第三方服务(如云服务商、CDN)的子域,可能成为供应链攻击的跳板。
防御措施
限制区域传送权限
使用TSIG认证
防火墙与网络隔离
定期审计与监控
检测漏洞:
定期使用工具(如 dig、nmap)测试区域传送是否开放
例如:nmap -p 53 --script dns-zone-transfer.nse <目标DNS服务器>
例如: dig @172.16.1.3 www.vulhub.org
日志监控:
分析DNS服务器日志,过滤异常的AXFR请求记录。
靶机搭建
安装docker和docker-compose
我这里使用的系统是Openeuler系统。
在线安装 docker
1、# 这个需要,获取docker源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
2、更改名称
sed -i ‘s/$releasever/8/g’ /etc/yum.repos.d/docker-ce.repo
3、刷新缓存
dnf clean all
dnf makecache
4、安装
dnf install docker-ce -y
离线安装docker
离线安装
1、上传下载的docker包,解压
tar-zxvf docker-27.4.1.tgz
2、拷贝文件
cp docker/* /usr/bin/
3、创建配置文件
vi /etc/systemd/system/docker.service # (创建配置文件)
4、配置文件内容
配置文件内容:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd --selinux-enabled=false
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
5、分配执行全新
chmod +x /etc/systemd/system/docker.service
6、重载配置文件
systemctl daemon-reload
7、启动服务
systemctl start docker
systemctl enable docker
安装docker-compose
方法1:
$ sudo curl -L “https://github.com/docker/compose/releases/download/v2.32.0/docker-compose-
(
u
n
a
m
e
−
s
)
−
(uname -s)-
(uname−s)−(uname -m)” -o /usr/local/bin/docker-compose
方法2:浏览器下载
https://github.com/docker/compose/releases/tag/v2.33.0
下载完成后,上传至/usr/local/bin/目录下
chmod +x 给予执行权限。
输入 docker-compose --version 出行以下内容就OK啦
下载vulhub
https://codeload.github.com/vulhub/vulhub/zip/refs/heads/master
使用命令或浏览器下载都可以。
下载好后,上传至靶机服务器。
然后解压。
unzip vulhub-master.zip
进入解压后的目录,找到dns,进入/dns-zone-transfer目录下
输入以下命令进行启动靶机
docker-compose build
如果输入docker-compose build 命令进行编译的时候,报 xxxversionxxx的报错,则需要进入 docker-compose.yml文件,删除 版本这个属性。重新编译即可。
docker-compose up -d
复现
NMAP:nmap -p 53 --script dns-zone-transfer.nse <目标DNS服务器>
dig: dig @172.16.1.3 www.vulhub.org