IPBUF安全漏洞报告
English
CVE-2025-66459 CVSS 6.1 中危

CVE-2025-66459: Lookyloo 1.35.3前版本存储型XSS漏洞

披露日期: 2025-12-02

漏洞信息

漏洞编号
CVE-2025-66459
漏洞类型
XSS跨站脚本攻击
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Lookyloo

相关标签

XSS跨站脚本攻击Lookyloo存储型XSSWeb安全漏洞CVE-2025-66459输入验证不足输出编码缺失中等严重漏洞

漏洞概述

CVE-2025-66459是Lookyloo项目中的一个存储型跨站脚本(XSS)漏洞。Lookyloo是一个开源的Web界面工具,允许用户捕获网站页面并生成域名调用关系的树状图。该漏洞存在于1.35.3之前的版本中,当用户提交包含恶意HTML内容的URL列表进行捕获时,如果捕获失败,系统会在错误消息中直接回显用户输入的URL内容,而未进行适当的输入验证和输出编码。这使得攻击者可以在错误提示区域注入恶意JavaScript代码,当其他用户查看该错误信息时,恶意脚本将在其浏览器上下文中执行,可能导致会话劫持、敏感信息窃取或其他客户端攻击。漏洞的CVSS评分为6.1,属于中等严重程度,需要用户交互才能触发。

技术细节

该漏洞的根本原因在于Lookyloo对用户输入的URL缺乏充分的输入验证和输出编码。当用户通过Web界面提交URL列表进行页面捕获时,系统会将这些URL传递给后端处理模块。如果某个URL包含HTML标签(如<script>alert(1)</script>),且该URL的捕获操作失败,系统会在错误响应中直接包含这个未经过滤的URL字符串。在渲染错误消息的模板中,这个恶意字符串被直接插入到HTML内容中,而没有进行HTML实体编码或内容安全策略(CSP)的保护。攻击者可以利用这一漏洞注入任意JavaScript代码,这些代码会在后续用户查看相关错误日志时执行。漏洞影响所有使用Lookyloo Web界面的用户,特别是在团队协作环境中,攻击者可以通过诱导其他用户查看特定的捕获错误来扩大攻击面。修复版本1.35.3通过添加输入验证和输出编码来解决此问题。

攻击链分析

STEP 1
步骤1
攻击者准备包含XSS payload的恶意URL,如包含<script>标签的URL字符串
STEP 2
步骤2
攻击者通过Lookyloo的Web界面提交恶意URL到捕获队列
STEP 3
步骤3
系统尝试捕获该URL,由于URL格式异常或目标不可访问,捕获操作失败
STEP 4
步骤4
系统生成错误消息,将用户提交的原始URL(包含payload)直接插入错误字段
STEP 5
步骤5
错误消息被渲染到Web页面,由于缺少输出编码,恶意<script>标签被执行
STEP 6
步骤6
受害者的浏览器解析HTML时执行注入的JavaScript代码,导致cookie窃取或会话劫持

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- Malicious URL payload for CVE-2025-66459 --> <script>alert(document.cookie)</script> <!-- Example: Submit this URL in the Lookyloo capture form --> <!-- When capture fails, the XSS payload in the URL will be executed in the error message display --> <!-- Python PoC to demonstrate the vulnerability --> import requests target_url = "http://target-lookyloo-instance.com/capture" payload = "http://example.com/<script>alert(document.cookie)</script>" data = { "urls": [payload], "submit": "Capture" } response = requests.post(target_url, data=data) print("Request sent. If vulnerable, XSS will be triggered in error display.") <!-- Safe version - Input validation should be applied --> import html def safe_display_url(user_url): # Encode HTML special characters to prevent XSS safe_url = html.escape(user_url) return f"<span class='url-display'>{safe_url}</span>"

影响范围

Lookyloo < 1.35.3

防御指南

临时缓解措施
如果无法立即升级,可通过配置Web服务器(如Nginx)对错误响应添加X-Content-Type-Options和X-XSS-Protection响应头,同时临时禁用错误消息中的URL显示功能,直到完成版本升级。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表