欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL客戶端任意文件讀取漏洞方式

 更新時(shí)間:2025年02月22日 08:41:08   作者:不會(huì)畫(huà)畫(huà)的畫(huà)師  
本文介紹了MySQL服務(wù)端反向讀取客戶端任意文件的漏洞原理,利用LOADDATAINFILE語(yǔ)法實(shí)現(xiàn),通過(guò)偽造MySQL服務(wù)器,客戶端讀取的文件內(nèi)容由服務(wù)端決定,漏洞復(fù)現(xiàn)步驟包括獲取腳本、修改配置、運(yùn)行服務(wù)器、客戶端連接并查看日志,防范措施包括使用SSL模式和設(shè)置local_infile為0

原理

1、通信機(jī)制

由于MySQL服務(wù)端和客戶端通信過(guò)程是通過(guò)對(duì)話形式完成的??蛻舳税l(fā)送一個(gè)操作請(qǐng)求,服務(wù)端會(huì)根據(jù)客戶端發(fā)送的請(qǐng)求進(jìn)行響應(yīng)。

在這個(gè)通信過(guò)程中,如果一個(gè)操作需要兩步才能完成,當(dāng)客戶端發(fā)完第一個(gè)請(qǐng)求后,它會(huì)直接丟棄第一個(gè)請(qǐng)求,并不會(huì)做存儲(chǔ);然后客戶端會(huì)根據(jù)服務(wù)端的響應(yīng),進(jìn)行第二個(gè)請(qǐng)求,此時(shí)服務(wù)端就可以欺騙客戶端。

2、語(yǔ)法說(shuō)明

MySQL服務(wù)端反向讀取客戶端的任意文件是利用了LOAD DATA INFILE語(yǔ)法,該語(yǔ)法主要用于讀取文件內(nèi)容并插入到表中。

-- 讀取服務(wù)端本地文件,并插入到表中
load data infile "/data/data.csv" into table test_table;
-- 讀取客戶端本地文件,并插入到表中
load data local infile "/data/data.csv" into table test_table;

針對(duì)該語(yǔ)法,MySQL官方文檔原文:

In theory, a patched server could be built that would tell the client program to transfer a file of the server’s choosing rather than the file named by the client in the LOAD DATA statement.” 從理論上講,可以構(gòu)建一個(gè)經(jīng)過(guò)修補(bǔ)的服務(wù)器,該服務(wù)器會(huì)指示客戶端程序傳輸由服務(wù)器選擇的文件,而不是客戶端在 LOAD DATA 語(yǔ)句中指定的文件.

即客戶端讀取的文件內(nèi)容,并不是由客戶端決定的,而是根據(jù)服務(wù)端的響應(yīng)決定的,于是就可以偽造MySQL服務(wù)器,實(shí)現(xiàn)通信示例3的效果。

舉例說(shuō)明:

  1. 一般流程:
  • 客戶端:請(qǐng)把表test的數(shù)據(jù)給我看看
  • 服務(wù)端:請(qǐng)查收表test的數(shù)據(jù)
  • 通信結(jié)束...
  1. LOAD DATA INFILE正常流程
  • 客戶端:我將把我本地的data.csv文件發(fā)給你插入到表test
  • 服務(wù)端:好的,請(qǐng)讀取你本地的data.csv文件內(nèi)容并發(fā)給我
  • 客戶端: 這是文件里的數(shù)據(jù):1234567
  • 通信結(jié)束...
  1. LOAD DATA INFILE欺騙流程
  • 客戶端:我將把我本地的data.csv文件發(fā)給你插入到表test
  • 服務(wù)端:好的,請(qǐng)讀取你本地的/etc/passwd文件內(nèi)容并發(fā)給我
  • 客戶端: 這是文件里的數(shù)據(jù):xxxxxx(/etc/passwd文件中內(nèi)容)
  • 通信結(jié)束...

漏洞復(fù)現(xiàn)

1、在服務(wù)端服務(wù)器獲取https://github.com/allyshka/Rogue-MySql-Server的腳本

2、修改rogue_mysql_server.py設(shè)置要讀取的文件名

rogue_mysql_server.py中的filelist 為要讀取的文件地址,例如可改為:

filelist = (
    '/etc/passwd',
)

3、在服務(wù)端服務(wù)器python2運(yùn)行rogue_mysql_server.py,服務(wù)器開(kāi)放端口和防火墻即可

說(shuō)明: 使用python3會(huì)報(bào)錯(cuò)。

4、客戶端連接:在目標(biāo)服務(wù)器使用mysql指令連接

說(shuō)明: mysql客戶端需為8.0以下,否則可能無(wú)法獲取到想要的數(shù)據(jù)。

5、在服務(wù)端服務(wù)器的rogue_mysql_server.py路徑下,會(huì)生成一個(gè)mysql.log文件,其中就記錄了客戶端服務(wù)器的文件內(nèi)容.

使用場(chǎng)景

1、利用該漏洞,讀取目標(biāo)服務(wù)器上的任意文件

2、利用目標(biāo)網(wǎng)站能連接外部數(shù)據(jù)庫(kù)的功能點(diǎn),讀取目標(biāo)服務(wù)器上的任意文件

防范措施

1.使用--ssl-mode=VERIFY_IDENTITY來(lái)建立可信的連接

2.mysql客戶端設(shè)置local_infile為0

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL不推薦使用uuid或者雪花id作為主鍵的原因分析

    MySQL不推薦使用uuid或者雪花id作為主鍵的原因分析

    在數(shù)據(jù)庫(kù)設(shè)計(jì)中,選擇適當(dāng)?shù)闹麈I類(lèi)型對(duì)于數(shù)據(jù)的存儲(chǔ)和查詢效率至關(guān)重要,在MySQL中,有些開(kāi)發(fā)者傾向于使用UUID或者雪花ID作為主鍵,以確保數(shù)據(jù)的唯一性,本文將探討在MySQL中不推薦使用UUID或者雪花ID作為主鍵的原因,并與其他主鍵類(lèi)型進(jìn)行差異化對(duì)比
    2023-11-11
  • Oracle10個(gè)分區(qū)和Mysql分區(qū)區(qū)別詳解

    Oracle10個(gè)分區(qū)和Mysql分區(qū)區(qū)別詳解

    MySQL分區(qū)常用的是:range、list、hash、key,Oracle10g分區(qū)常用的是:range(范圍分區(qū))、list(列表分區(qū))、hash(哈希分區(qū))、range-hash(范圍—哈希分區(qū))、range-list(列表—復(fù)合分區(qū))。下面通過(guò)本文詳細(xì)給大家介紹Oracle10個(gè)分區(qū)和Mysql分區(qū)區(qū)別,一起看看
    2017-02-02
  • mysql 8.0.22 安裝配置圖文教程

    mysql 8.0.22 安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.22 安裝配置圖文教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • MySQL中關(guān)于null值的一個(gè)小問(wèn)題

    MySQL中關(guān)于null值的一個(gè)小問(wèn)題

    這篇文章主要介紹了MySQL中關(guān)于null值的一個(gè)小問(wèn)題,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-03-03
  • MySQL數(shù)據(jù)庫(kù)備份過(guò)程的注意事項(xiàng)

    MySQL數(shù)據(jù)庫(kù)備份過(guò)程的注意事項(xiàng)

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)備份過(guò)程的注意事項(xiàng),幫助大家更好的理解和維護(hù)MySQL,感興趣的朋友可以了解下
    2020-11-11
  • MySQL插入不了中文數(shù)據(jù)問(wèn)題的原因及解決

    MySQL插入不了中文數(shù)據(jù)問(wèn)題的原因及解決

    最近發(fā)現(xiàn)新安裝的MySQL數(shù)據(jù)庫(kù)不能插入中文字段,所以下面這篇文章主要給大家介紹了關(guān)于MySQL插入不了中文數(shù)據(jù)問(wèn)題的原因及解決方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • win10下mysql 8.0.18 安裝配置方法圖文教程(windows版)

    win10下mysql 8.0.18 安裝配置方法圖文教程(windows版)

    這篇文章主要介紹了windows版的mysql 8.0.18 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 詳解MySQL 8.0 之不可見(jiàn)索引

    詳解MySQL 8.0 之不可見(jiàn)索引

    這篇文章主要介紹了MySQL 8.0 之不可見(jiàn)索引的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)新版本的MySQL,感興趣的朋友可以了解下
    2020-10-10
  • mysql binlog二進(jìn)制日志詳解

    mysql binlog二進(jìn)制日志詳解

    二進(jìn)制日志包含了所有更新了數(shù)據(jù)或者已經(jīng)潛在更新了數(shù)據(jù)(例如,沒(méi)有匹配任何行的一個(gè)DELETE)的所有語(yǔ)句
    2011-10-10
  • 連接mysql報(bào)錯(cuò)——沒(méi)有設(shè)置“usessl=false”的問(wèn)題

    連接mysql報(bào)錯(cuò)——沒(méi)有設(shè)置“usessl=false”的問(wèn)題

    這篇文章主要介紹了連接mysql報(bào)錯(cuò)——沒(méi)有設(shè)置“usessl=false”的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評(píng)論