宝塔shell重启命令网站java项目 宝塔getshell_php

记一次绕过宝塔提权的渗透过程。


0x01 信息收集

目标站点:..72.243,首页如下图所示:

宝塔shell重启命令网站java项目 宝塔getshell_宝塔shell重启命令网站java项目_02

简单信息收集得到以下信息:

  • Windows + Apache2.4.39 + 宝塔 + Mysql
  • Thinkphp5以上框架
  • 端口扫描ban IP

0x02 Getshell

Thinkphp框架搭建的网站可以利用远程执行或者找找注入,本人习惯先从后台入手,URL随手加个admin得到后台:

宝塔shell重启命令网站java项目 宝塔getshell_php_03

这里没有验证码复用,我们手动爆破下账号密码,这里运气不错,管理账号弱口令,直接进入后台:

宝塔shell重启命令网站java项目 宝塔getshell_php_04

有了后台,getshell就相对比较容易了,找到一处上传点,抓包修改下后缀,成功上传webshell:

宝塔shell重启命令网站java项目 宝塔getshell_php_05

宝塔shell重启命令网站java项目 宝塔getshell_php_06

0x03 绕过宝塔提权

用shell执行命令发现网站开启安全模式:

宝塔shell重启命令网站java项目 宝塔getshell_系统管理员_07

phpinfo查看一下禁用的函数:

宝塔shell重启命令网站java项目 宝塔getshell_系统管理员_08

passthru,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,putenv,exec

这里禁用了exec函数,我们就无法使用windows COM组件来绕过disable_functions执行命令。联想到网站使用Mysql数据库,遂查找root密码:

宝塔shell重启命令网站java项目 宝塔getshell_上传_09

尝试使用UDF提权,上传暗月UDF提权脚本:

宝塔shell重启命令网站java项目 宝塔getshell_系统管理员_10

无奈这里无法导出UDF,此路不通。此时联想到网站是宝塔搭建,在翻找目录时发现文件权限较大,兴许可以利用。果不其然,在D:\BtSoft\panel\data\admin_path.pl发现宝塔后台路径:

宝塔shell重启命令网站java项目 宝塔getshell_php_11

宝塔后台默认端口一般为8888,访问得到宝塔后台:

宝塔shell重启命令网站java项目 宝塔getshell_php_12

有了后台,剩下的就是寻找密码了,宝塔后台账号密码默认存放在default.db数据库的users表中,我们将数据库下载回来,利用kali的SqLite databese browser工具打开:

宝塔shell重启命令网站java项目 宝塔getshell_上传_13

在users表中发现管理员账号与MD5加密密码:

宝塔shell重启命令网站java项目 宝塔getshell_上传_14

在somd5中解密管理员密码,成功解出:

宝塔shell重启命令网站java项目 宝塔getshell_宝塔shell重启命令网站java项目_15

利用账号密码成功登陆宝塔后台:

宝塔shell重启命令网站java项目 宝塔getshell_宝塔shell重启命令网站java项目_16

接下来事情就好办多了,我们利用宝塔计划任务功能,执行系统命令添加系统管理员用户:

宝塔shell重启命令网站java项目 宝塔getshell_系统管理员_17


宝塔shell重启命令网站java项目 宝塔getshell_宝塔shell重启命令网站java项目_18


宝塔shell重启命令网站java项目 宝塔getshell_上传_19

这里我们无法扫描端口,可以使用计划任务,将端口信息导出到指定路径,即可知道服务器远程端口:

宝塔shell重启命令网站java项目 宝塔getshell_上传_20

宝塔shell重启命令网站java项目 宝塔getshell_系统管理员_21

使用系统管理员账号登入桌面,提权成功:

宝塔shell重启命令网站java项目 宝塔getshell_php_22

清理痕迹,留下后门维持权限。打完收工~