记一次绕过宝塔提权

0x01 信息收集

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

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

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

0x02 Getshell

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

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

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

0x03 绕过宝塔提权

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

phpinfo查看一下禁用的函数:

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密码:

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

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

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

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

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

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

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

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



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

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

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

posted @ 2021-01-21 11:46  cHr1s_h  阅读(3532)  评论(0编辑  收藏  举报