宝塔是近几年刚崛起的一款服务器面板,深受各大站长的喜欢,windows2003 windows2008windosws 2012系统,linux centos deepin debian fedora系统都可以使用宝塔的面板来管理服务器,宝塔可以一键部署网站的环境,IIS环境搭建,Nginx环境,PHP环境搭建,apache jsp环境,mysql数据库,oracle数据库搭建,以及一键设置FTP账户密码,文件面板在线管理都可以很简单的利用宝塔搭建起来。
2018年10月11日宝塔Linux更新到6.0版本,很多新功能加入到linux宝塔面板中,面板的功能再多,还是会存在着一些漏洞,这也是无法避免的,在实际的安全检测当中发现linux 6.0面板存在着漏洞,相当于早些5.0以上版本,存在着宝塔XSS存储性漏洞。
问题发生在宝塔的控制面板系统安全这里,默认用户登录失败会记录到宝塔的系统安全里,我们看看下代码:
漏洞的产生就是在这个代码里,通过代码可以看出代码首先判断是否是正确的用户名密码,再来判断验证码,判断登录失败的IP是否还有其他登录失败的日志记录,如果这个值大于1就日志记录一下,宝塔的系统安全会自动将大于1的用户名以及密码都进行了日志记录,从宝塔的数据库中去读取当前宝塔管理员的账户密码,来进行互相对比,如果没有对比成功,就会返回一个错误的值。最关键的一个代码就是当post登录宝塔面板的时候就会将code写入到专门写系统安全日志的一个函数里面去,通过对其函数的追逐发现,这个函数就是写日志的功能,定义teyp然后再定义args,从code值传递过来就写进了宝塔的系统安全日志当中去。 在这个code值中可以插入恶意的参数,写进系统安全的日志中,XSS存储漏洞就在这产生了,可以构造xss获取管理员的账户密码以及cookies值,当服务器的管理员点击后台的系统安全,就会使宝塔漏洞触发。
我们来测试一下这个宝塔漏洞,首先输入宝塔的地址,默认都是服务器IP,888端口,然后输入账户密码,随意输入,当输入错误的时候,再次登录就是输入验证码。在验证码这里可以写XSS攻击代码,alert('网站安全测试')
当管理员登录后台,点击安全,就会弹出安全测试的提示框。构造精心准备的xss代码就可以获取到当前登录的管理员cookies值,复制这个值直接进后台操作即可。
目前宝塔linux面板漏洞,官方已经紧急修复,很多使用宝塔面板的服务器还没有修复升级打补丁,希望服务器的管理人员尽快的升级宝塔到最新版本。