CVE-2022-0778
发现的漏洞会BN_mod_sqrt()在解析椭圆曲线密钥时触发 OpenSSL 函数中的无限循环。这意味着恶意制作的 X.509 证书可以对任何未打补丁的服务器实施 DoS 攻击。
该漏洞的核心在于解析压缩格式的点的 EC 密钥:解析此类密钥时,OpenSSL 将尝试扩展压缩点,尝试计算p定义曲线的素数的平方根模数。但是,在任何地方都不会检查素数p,即使在要求素数的情况下也不会BN_mod_sqrt();因此,实现中的错误将导致无限循环,因为p不是预期的素数
函数BN_mod_sqrt()实现了求模平方根的Tonelli-Shanksa算法,即给定一个整数和一个素数p,返回一个值r使得r^2 == a (mod p)。
通过分析修补漏洞的提交i,我们发现罪魁祸首是寻找最小索引的循环b^(2^i)==1 (mod p),其中b已经在算法中定义过。
发现的漏洞会BN_mod_sqrt()在解析椭圆曲线密钥时触发 OpenSSL 函数中的无限循环。这意味着恶意制作的 X.509 证书可以对任何未打补丁的服务器实施 DoS 攻击。
该漏洞的核心在于解析压缩格式的点的 EC 密钥:解析此类密钥时,OpenSSL 将尝试扩展压缩点,尝试计算p定义曲线的素数的平方根模数。但是,在任何地方都不会检查素数p,即使在要求素数的情况下也不会BN_mod_sqrt();因此,实现中的错误将导致无限循环,因为p不是预期的素数
函数BN_mod_sqrt()实现了求模平方根的Tonelli-Shanksa算法,即给定一个整数和一个素数p,返回一个值r使得r^2 == a (mod p)。
通过分析修补漏洞的提交i,我们发现罪魁祸首是寻找最小索引的循环b^(2^i)==1 (mod p),其中b已经在算法中定义过。
Oracle Access Manager 预授权 RCE(CVE-2021-35587 分析)
您可能知道,Oracle Access Manager (OAM) 是一款流行的 SSO 产品,被 Oracle、VMware、华为、高通等多家大公司使用……
这个漏洞是我和Peterjson在分析和构建另一个超级 0day(现在还没有修复 ;))的 PoC 时偶然发现的。
访问入口点并利用漏洞非常容易,因此建议立即应用补丁!它可能使攻击者能够访问 OAM 服务器,创建具有任何权限的任何用户,或者只是在受害者的服务器中执行代码。
您可能知道,Oracle Access Manager (OAM) 是一款流行的 SSO 产品,被 Oracle、VMware、华为、高通等多家大公司使用……
这个漏洞是我和Peterjson在分析和构建另一个超级 0day(现在还没有修复 ;))的 PoC 时偶然发现的。
访问入口点并利用漏洞非常容易,因此建议立即应用补丁!它可能使攻击者能够访问 OAM 服务器,创建具有任何权限的任何用户,或者只是在受害者的服务器中执行代码。
日志、监控和故障排除
您可以随时监控系统的资源使用情况、正常运行时间和会话的负载杠杆率
用于lscpu查看系统的 CPU 使用情况和其他详细信息。
系统事件和进程的踪迹通常以日志的形式保存在/var/log目录中。日志分为两类:1. 通过 保存的基本系统日志journald,默认情况下,这些日志会在启动时被清除(可以配置为持久保存)。2.rsyslog默认情况下持久保存并组织在文件夹内的日志/var/log/。Linux 中的日志记录机制主要遵循syslog系统消息、事件、安全事件、邮件和作业日志的标准协议,而其他程序可能遵循或不遵循syslog相同的格式
您可以随时监控系统的资源使用情况、正常运行时间和会话的负载杠杆率
用于lscpu查看系统的 CPU 使用情况和其他详细信息。
系统事件和进程的踪迹通常以日志的形式保存在/var/log目录中。日志分为两类:1. 通过 保存的基本系统日志journald,默认情况下,这些日志会在启动时被清除(可以配置为持久保存)。2.rsyslog默认情况下持久保存并组织在文件夹内的日志/var/log/。Linux 中的日志记录机制主要遵循syslog系统消息、事件、安全事件、邮件和作业日志的标准协议,而其他程序可能遵循或不遵循syslog相同的格式
os.path.join工作原理
我们想提醒大家注意os.path.join在某些情况下函数的使用不安全。即使用户输入已被过滤,并且“ ..”字符串已被删除以防止路径遍历,在第二个参数中仍有可能使用所需目录的绝对路径。
通常,即使有可能上传恶意文件以获取任意远程代码执行,也需要完全重新启动 Python Web 应用程序才能获取此新代码。不幸的是,对于 VMware 来说,这次WSGIScriptAliashttpd 配置中的别名意味着脚本不会被缓存,并且会在每次用户请求 URL 时加载到内存中并执行/logupload。
考虑到这一点,我们决定log_upload_wsgi.py用自己的恶意代码覆盖原始脚本。我们只有一次尝试上传有效的 Python 脚本的机会,否则我们将破坏 Web 应用程序。我们用 Python 语言创建了一个 WSGI Web Shell,并尝试将其上传到/etc/httpd/html/wsgi_log_upload/名为log_upload_wsgi.pyfilename 的文件夹中
我们想提醒大家注意os.path.join在某些情况下函数的使用不安全。即使用户输入已被过滤,并且“ ..”字符串已被删除以防止路径遍历,在第二个参数中仍有可能使用所需目录的绝对路径。
通常,即使有可能上传恶意文件以获取任意远程代码执行,也需要完全重新启动 Python Web 应用程序才能获取此新代码。不幸的是,对于 VMware 来说,这次WSGIScriptAliashttpd 配置中的别名意味着脚本不会被缓存,并且会在每次用户请求 URL 时加载到内存中并执行/logupload。
考虑到这一点,我们决定log_upload_wsgi.py用自己的恶意代码覆盖原始脚本。我们只有一次尝试上传有效的 Python 脚本的机会,否则我们将破坏 Web 应用程序。我们用 Python 语言创建了一个 WSGI Web Shell,并尝试将其上传到/etc/httpd/html/wsgi_log_upload/名为log_upload_wsgi.pyfilename 的文件夹中
破解 Google Drive 集成
您是否曾在漏洞赏金目标中观察到 Google Drive 集成,并想知道除了 OAuth CSRF 之外还可能存在什么?是否有可能进一步破解此集成?这正是我们今天要探索的内容。
在讨论此漏洞之前,让我们先来看看 Google Drive 通常是如何集成到应用程序中的。
一般有三种方式;
客户端嵌入。
在客户端获取CDN Url并在服务器端下载。
通过 Gdrive API 在服务器端获取文件。
前两个测试相对简单,但最后一个才是乐趣所在。
为了理解这一点,请考虑一个简单的应用程序,它从 Gdrive 检索并呈现选定的图像文件。我知道这不是必要的,但为了让读者理解,我试图展示幕后的工作方式。
这是负责列出并呈现您的 Google Drive 图像文件的两条路线,提供您的访问令牌
上面的代码应该更容易理解 - 我们可以通过 file_id 控制对谷歌发出的 HTTP 请求的路径。这意味着我们可以进行路径遍历并添加查询参数
您是否曾在漏洞赏金目标中观察到 Google Drive 集成,并想知道除了 OAuth CSRF 之外还可能存在什么?是否有可能进一步破解此集成?这正是我们今天要探索的内容。
在讨论此漏洞之前,让我们先来看看 Google Drive 通常是如何集成到应用程序中的。
一般有三种方式;
客户端嵌入。
在客户端获取CDN Url并在服务器端下载。
通过 Gdrive API 在服务器端获取文件。
前两个测试相对简单,但最后一个才是乐趣所在。
为了理解这一点,请考虑一个简单的应用程序,它从 Gdrive 检索并呈现选定的图像文件。我知道这不是必要的,但为了让读者理解,我试图展示幕后的工作方式。
这是负责列出并呈现您的 Google Drive 图像文件的两条路线,提供您的访问令牌
#List images from Gdrive
@app.route('/cloud/gdrive/list')
def list_files():
token = request.args.get('access_token')
html = ""
if token:
r = requests.get('https://www.googleapis.com/drive/v2/files/',headers={'Authorization': 'Bearer '+token})
resp = json.loads(r.text)
print(resp)
for file in resp['items']:
if file['mimeType'].startswith('image/'):
html += "<a href='/cloud/gdrive/fetch?file_id="+file['id']+"&access_token="+token+"'>"+file['title']+"</a><br>"
return "Select Gdrive image (max 1mb) to fetch <br><br>" + html
else:
return "Error"
#Render provided image id from gdrive
@app.route('/cloud/gdrive/fetch')
def fetch_gdrive_video():
token = request.args.get('access_token')
file_id = request.args.get('file_id')
if token and file_id:
try:
r = requests.get('https://www.googleapis.com/drive/v2/files/'+file_id,headers={'Authorization': 'Bearer '+token})
download_url = json.loads(r.text)['downloadUrl']
d = requests.get(download_url,headers={'Authorization': 'Bearer '+token})
except Exception as e:
return Response(str(e), headers={'Content-type':'text/plain'})
return Response(d.content, headers={'Content-type':'image/png'})
else:
return "Error"
上面的代码应该更容易理解 - 我们可以通过 file_id 控制对谷歌发出的 HTTP 请求的路径。这意味着我们可以进行路径遍历并添加查询参数
【ins群发】可一键控制1000账号(自动采集指定行业博主精准粉丝,自动私信或拉群群发、日曝光量百万+ )
【TK群发】自动采集博主粉丝 (自动筛选地区、性别等)批量包装小号,强制私信 或一键上传视频,自动@百万+用户做矩阵营销
【FB获客】中控系统(一台电脑相当于1000部手机,一号一IP,可自动上号 自动加行业小组 自动发帖 留言 霸屏推广)
【TK群发】自动采集博主粉丝 (自动筛选地区、性别等)批量包装小号,强制私信 或一键上传视频,自动@百万+用户做矩阵营销
【FB获客】中控系统(一台电脑相当于1000部手机,一号一IP,可自动上号 自动加行业小组 自动发帖 留言 霸屏推广)
This media is not supported in your browser
VIEW IN TELEGRAM
该漏洞是由Gordon Long发现并提交的;据苹果公司称,利用这个漏洞,“恶意应用程序能绕过Gatekeeper安全机制的检查”。这类漏洞通常对日常的macOS用户影响特别大,因为它们为广告软件和恶意软件作者提供了一种绕过macOS安全机制的手段,……否则这些安全机制会挫败这些恶意软件的感染企图。
正如我们所看到的,这个在修复CVE-2021-30853漏洞的补丁代码中引入的新漏洞,不仅绕过了Gatekeeper机制,而且还绕过了文件隔离机制,以及macOS最近的公证要求
……这意味着,只要用户双击了一个看似无害的文件(如我的“简历”),就可能导致macOS系统的整体沦陷
正如我们所看到的,这个在修复CVE-2021-30853漏洞的补丁代码中引入的新漏洞,不仅绕过了Gatekeeper机制,而且还绕过了文件隔离机制,以及macOS最近的公证要求
……这意味着,只要用户双击了一个看似无害的文件(如我的“简历”),就可能导致macOS系统的整体沦陷