作者:
cnyouker
·
2013/01/14 11:55
0x00 相關背景介紹
Dns是整個網際網路公司業務的基礎,目前越來越多的網際網路公司開始自己搭建DNS伺服器做解析服務,同時由於DNS服務是基礎性服務非常重要,因此很多公司會對DNS伺服器進行主備配置而DNS主備之間的資料同步就會用到dns域傳送,但如果配置不當,就會導致任何匿名使用者都可以獲取DNS伺服器某一域的所有記錄,將整個企業的基礎業務以及網路架構對外暴露從而造成嚴重的資訊洩露,甚至導致企業網路被滲透。
0x01 成因
DNS伺服器的主備資料同步,使用的是域傳送功能。 域傳送關鍵配置項為:
allow-transfer {ipaddress;}; 透過ip限制可進行域傳送的伺服器
allow-transfer { key transfer; }; 透過key限制可進行域傳送的伺服器
設定方式為兩種:一種設定在options配置域;一種設定在zone配置域。優先順序為如果zone沒有進行配置,則遵守options的設定。如果zone進行了配置,則遵守zone的設定。
options配置如下:
options {
listen-on { 1.1.1.1; };
listen-on-v6 { any; };
directory "/bind";
pid-file "/bind/run/pid";
dump-file "/bind/data/named_dump.db";
statistics-file "/bind/data/named.stats";
allow-transfer { any; };
allow-query {any;};
};
zone配置如下:
zone "wooyun.org" {
type master;
file "/bind/etc/wooyun.org.conf";
allow-transfer {any;};
};
筆者測試版本為BIND 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.6,預設安裝完畢後,配置項沒有allow-transfer 項。如果直接使用預設配置檔案進行配置的話(不手動新增allow-transfer項),就會存在dns 域傳送漏洞。
0x02 攻擊方式及危害
惡意使用者可以透過dns域傳送獲取被攻擊域下所有的子域名。會導致一些非公開域名(測試域名、內部域名)洩露。而洩露的類似內部域名,其安全性相對較低,更容易遭受攻擊者的攻擊,比較典型的譬如內部的測試機往往就會缺乏必要的安全設定。
攻擊者進行測試的成本很低,如dns伺服器IP:1.1.1.1 測試域名為wooyun.org,測試命令如下:
# dig @1.1.1.1 wooyun.org axfr #就可以看到返回結果類似如下:
; <<>> DiG 9.7.3 <<>> @1.1.1.1 wooyun.org axfr
; (1 server found)
;; global options: +cmd
wooyun.org. 86400 IN SOA wooyun.org. rname.invalid. 0 86400 3600 604800 10800
wooyun.org. 86400 IN NS wooyun.org.
wooyun.org. 86400 IN A 127.0.0.1
wooyun.org. 86400 IN AAAA ::1
test.wooyun.org. 86400 IN A 1.1.1.1
xxx.wooyun.org. 86400 IN A 2.2.2.2
wooyun.org. 86400 IN SOA wooyun.org. rname.invalid. 0 86400 3600 604800 10800
0x03 實際案例
WooYun: 優酷 DNS 域傳送漏洞
WooYun: 去哪兒DNS域傳送漏洞
WooYun: IT168.com DNS 域傳送漏洞
0x04 修復方案
解決域傳送問題非常簡單,只需要在相應的zone、options中新增allow-transfer限制可以進行同步的伺服器就可以了,可以有兩種方式:限制IP、使用key認證。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!