『红蓝对抗』当我在内网遇到宝塔......

admin 2023年1月7日15:45:33安全文章评论8 views2015字阅读6分43秒阅读模式

点击蓝字,关注我们


日期:2023-01-03
作者:yukong
介绍:当内网遇到了宝塔,会发生怎样的故事呢……

0x00 背景

某次攻防演练中,正忙着在内网漫游,游啊游游啊游突然发现了一个宝塔,因规则要求除了系统权限分值之外,还会根据具体的信息量给分,于是我有一个大胆的想法,我想进去看看!

0x01 思路

因为是一些内网系统所以经过一些其他漏洞拿到了服务器root权限(问就是弱口令),但我还是想进去看看。所以这里就有了三种思路:

Part.1  翻文件找密码

Part.2  通过bt面板修改密码

Part.3  另外添加一个面板用户

0x02 过程

2.1 翻文件找密码

咳咳简单来说没找到,默认密码无法登入,看来管理员已经修改过了,安全意识不错点个赞。

2.2 通过 bt 面板修改密码

可通过bt命令修改密码,但因为是真实环境,没有得到授权肯定是不能改的。

2.3 添加用户

前面废话这么多终于引入正题,先谈操作后说原理:

(1)打开/www/server/panel/data/default.db 文件我们可以看到,user表里存着面板用户的账号、经过加密的密码以及加密的salt:

『红蓝对抗』当我在内网遇到宝塔......

(2)可以猜想到,如果我们自己构造一个符合代码逻辑的的用户名、密码、以及salt,插入到该db文件中,并且覆盖原有的default.db文件应该就可以登录成功。

(3)经过代码审计发现password加密规则为md5(md5(md5(password)+'_bt.cn')+ salt),代码如下:

import hashlib
pasword=input("password:")salt=input("salt:")def md5(string): return hashlib.md5(string.encode()).hexdigest()
def hash_password(password, salt): return md5(md5(md5(password) + '_bt.cn') + salt)print("hash_password:",hash_password(pasword,salt))

(4)最后可将生成的加密密码以及salt 写入default.db中,用户名随便写用户规则即可登录成功:

『红蓝对抗』当我在内网遇到宝塔......

『红蓝对抗』当我在内网遇到宝塔......

0x03 原理分析

宝塔版本:免费版 7.9.6

3.1 查找加密函数

(1)根据查看多个文件最后在/www/server/panel/tools.py 处找到设置面板密码的函数:

『红蓝对抗』当我在内网遇到宝塔......

可以看出这里使用了password_salt()md5()这两个public文件中的函数进行了加密,接下来我们需要分析这两个函数。

(2)md5()

最终找到/www/server/panel/class/public.py文件,在第158行找到了md5函数,并且发现调用的Md5()就是一次md5加密。

『红蓝对抗』当我在内网遇到宝塔......

(3)password_salt()函数

同样在/www/server/panel/class/public.py文件的2825行找到password_salt()函数:

『红蓝对抗』当我在内网遇到宝塔......

可以发现password_salt()password进行了两次加密。

md5(md5(password+'_bt.cn')+salt)

先将password 加盐_bt.cn 进行md5加密,随后将加密后的结果加上salt再次md5加密,结合2839行可以看到salt的生成借助了M()函数。

(4)查看M()函数

『红蓝对抗』当我在内网遇到宝塔......

这就比较明朗了,结合2839行代码来看,就是取/www/server/panel/data/default.db数据库中对应idusernamesalt值。

salt = M('users').where('id=?',(uid,)).getField('salt')

整理最终:

password_salt=md5(md5(md5(password)+'_bt.cn')+ salt)

0x04 总结

此次审计源于攻防对抗,用于攻防对抗,总的来说在当初审计以及使用时并没有什么问题,不过在这次复现审计时候遇到了一些坑点(挠头),来来回回复现好多次没有使用新添加的账户登录成功,最后在官方更新文档发现几天前更新的7.9.6版本中限制了登录id,只允许id=1的用户登录,需要手动修改用户id

『红蓝对抗』当我在内网遇到宝塔......

『红蓝对抗』当我在内网遇到宝塔......

免责声明:本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。

『红蓝对抗』当我在内网遇到宝塔......

宸极实验室隶属山东九州信泰信息科技股份有限公司,致力于网络安全对抗技术研究,是山东省发改委认定的“网络安全对抗关键技术山东省工程实验室”。团队成员专注于 Web 安全、移动安全、红蓝对抗等领域,善于利用黑客视角发现和解决网络安全问题。

团队自成立以来,圆满完成了多次国家级、省部级重要网络安全保障和攻防演习活动,并积极参加各类网络安全竞赛,屡获殊荣。

对信息安全感兴趣的小伙伴欢迎加入宸极实验室,关注公众号,回复『招聘』,获取联系方式。



原文始发于微信公众号(宸极实验室):『红蓝对抗』当我在内网遇到宝塔......

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月7日15:45:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  『红蓝对抗』当我在内网遇到宝塔...... http://cn-sec.com/archives/1496570.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: