记一次绕过宝塔提权的渗透过程。
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中解密管理员密码,成功解出:
利用账号密码成功登陆宝塔后台:
接下来事情就好办多了,我们利用宝塔计划任务功能,执行系统命令添加系统管理员用户:
这里我们无法扫描端口,可以使用计划任务,将端口信息导出到指定路径,即可知道服务器远程端口:
使用系统管理员账号登入桌面,提权成功:
清理痕迹,留下后门维持权限。打完收工~