Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Yordam-Kutuphane-Otomasyonunda-Coklu-HTML-Enjeksiyonu — CVE-2026-77818 - Yordam Kütüphane Otomasyon Sistemi - 在三个不同位置存在反射型 HTML 注入、表单操作劫持和凭据窃取(CWE-79) | Kitploit
工具/GitHubGitHub/alkimcoskun/yordam-kutuphane-otomasyonunda-coklu-html-enjeksiyonu
漏洞分析漏洞利用Web应用程序漏洞利用钓鱼攻击Web安全
GitHubalkimcoskun/yordam-kutuphane-otomasyonunda-coklu-html-enjeksiyonu

Yordam-Kutuphane-Otomasyonunda-Coklu-HTML-Enjeksiyonu

CVE-2026-77818 - Yordam Kütüphane Otomasyon Sistemi - 在三个不同位置存在反射型 HTML 注入、表单操作劫持和凭据窃取(CWE-79)

查看仓库

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
8小时11分前尚未审核
分享

Yordam-图书馆自动化系统中的多重HTML注入

CVE-2026-77818 · CVSS 3.1 6.1(中危)· 网络安全委员会 · 发布时间 2026-09-04 · TR-26-1011

状态: 漏洞已在 v22.2 版本中修复。受影响的安装必须升级到 v22.2 或更高版本。

概述

Yordam 图书馆自动化系统是土耳其大学、公共和机构图书馆中广泛使用的商业图书馆自动化及在线目录(OPAC)软件。该软件为本地部署(on-premise);每家客户机构运行独立的副本。

在产品的 v22.1 版本中,存在三个相互独立的位置的反射型 HTML 注入漏洞。三者均无需身份验证,三者均可通过单个链接触发。

#位置根本原因
1登录页面,devam 参数完全未进行转义
2隐藏表单字段 value 属性转义后再次进行 URL 解码
3隐藏表单字段 name 属性转义仅应用于值,未应用于名称

由于三者位于同一产品的同一版本、属于同一漏洞类别,因此合并为一份通报,并在同一个 CVE 编号下发布。就影响而言,最严重的是第 1 个位置。


1. 登录页面 — devam 参数

这是最关键的。注入点直接位于身份验证表单自身的 HTML 标签中。

devam 参数携带用户登录后将要返回的地址,并以十六进制编码形式传入 — 2f796f7264616d2f 值表示 /yordam/。应用程序将该值从十六进制解码后写入登录表单的起始标签中。中间没有任何转义处理:

root@kitploit:~
<form class='girisForm collapse show ikiAdimliGiris' method='post'
      action='inc/islem.fm.inc.php'
      data-url='<十六进制解码后的用户输入>'
      autocomplete="off">

输出中 <、> 和引号字符以原始形式出现。唯一约束 payload 的是 data-url 属性使用单引号包裹。当输入中包含单引号时,该约束即告终结:属性闭合,<form> 标签闭合,攻击者编写的 HTML 将取代页面上的身份验证表单。

表单 action 被劫持。 此处并未绘制伪造表单 — 而是将应用程序自身的表单留空并闭合,紧接着打开一个携带相同 CSS 类的新 <form>。页面上的用户名、密码和验证码字段全部来自应用程序的原始 HTML,因此它们保留在这个新表单内部。用户看到的是真实表单,填写的是真实表单;其输入的信息被发送到攻击者的服务器。视觉上没有任何可区分的差异。

关键点在于:注入并非发生在任意页面上,而是发生在用户本就被期望输入密码的页面上。在普通的反射型注入中,攻击者需要说服受害者;而在这里,说服工作由应用程序自身的界面完成。


2. 隐藏表单字段 value 属性 — 双重 URL 解码

在搜索页面中,GET 参数的值被写入隐藏表单字段。此位置确实应用了转义 — 但顺序错误。

同一个 q 值在单个响应中被用于三种不同的上下文,每种上下文具有不同的解码深度:

上下文解码次数状态
<script> 块中的 JS 字符串1 次安全
主搜索框 <input value="…">1 次安全
隐藏表单字段 <input type='hidden' value="…">2 次存在漏洞

处理顺序如下:

root@kitploit:~
客户端输入      : %2522
  ↓ $_GET 解析
PHP 变量        : %22
  ↓ 输入过滤器   → 未发现恶意内容,中间没有引号
  ↓ htmlspecialchars → 没有需要转义的字符,无变化
  ↓ urldecode        → %22 被解码
写入页面        : "        ← 原始引号,逃出属性

输入过滤器和转义在第一层解码时生效,而输出则来自第二层。将同一 payload 的单重和双重编码形式进行比较,差异清晰可见:

发送内容响应隐藏字段输出
q=foo%22…(单重编码)302 Foundvalue="foo&quot;…" — 过滤器拦截
q=foo%2522…(双重编码)200 OKvalue="foo"><…>" — 原始 HTML

该漏洞并非 q 参数所独有。生成隐藏字段的代码块会遍历请求中的所有 GET 参数;在 tip 和 alan 上也已分别验证。


3. 隐藏表单字段 name 属性 — 参数名中的注入

同一代码块为每个 GET 参数生成以下结构:

root@kitploit:~
<input type='hidden' name="<参数名>" value="<参数值>"/>

转义仅应用于 value 一侧。name 一侧完全未应用转义。此位置甚至无需双重编码 — 单重编码即可,因为本来就没有需要绕过的转义。

一个虚构的参数名被直接以原始形式写入 name 属性,从而可以逃出该属性。由于参数名受攻击者控制,因此无需是应用程序所识别的参数。

这三个位置中的第 2 和第 3 个源自同一代码块,且该代码块在六个不同的表单中重复出现:dilForm、adetForm、siralaForm、tkForm、ekForm、tmForm。也就是说,在单个请求中注入会发生六次。

通过比较两个请求的输出,验证了该代码块的动态性:

root@kitploit:~
请求 A:?p=1&dil=0&alan=&tip=basit&gorunum=liste&q=…
输出 A:name="p" · name="alan" · name="tip" · name="gorunum" · name="q"

请求 B:?p=2&dil=0&devam=…
输出 B:name="p" · name="devam"

生成的字段并非来自固定列表,而是直接由请求中的参数派生而来。因此,写入 name 和 value 两个属性的内容均受攻击者控制。


影响

攻击者所需的全部条件就是受害者会打开的一个链接。无需登录,无需拥有账户。

  • 凭据窃取。 通过第 1 个位置,登录表单的 action 目标被转向攻击者。已验证。
  • 以机构身份发布虚假内容。 地址栏中显示的是机构自身的域名和有效的 TLS 证书。可植入虚假公告、虚假活动、虚假通知文本。
  • 内容篡改与重定向。 页面外观可被修改,用户可被引导至外部地址。

由于受影响平台存储着图书馆成员的凭据和个人数据,通过被劫持的账户可以访问成员记录。

为何现有防护无法阻止

该应用程序使用 CSP,且 script-src 与 object-src 基于 nonce;也就是说,经典的基于脚本的 XSS 在这些页面上无法生效。乍一看,这似乎将发现结果降级为"仅内容篡改"级别。

完整策略如下:

root@kitploit:~
Content-Security-Policy: script-src 'nonce-...'; object-src 'nonce-...'; frame-ancestors 'self'

没有 form-action。也没有 default-src — 因此对于未定义的指令,也没有可回退的默认值。结果:表单向攻击者服务器发送 POST 请求的行为完全不受浏览器阻止。

窃取凭据无需执行 JavaScript。纯 HTML 即可,而 CSP 并不阻止纯 HTML。

相关弱点

主要

  • CWE-79 — 网页生成过程中输入的中和不当('跨站脚本')

相关

  • CWE-116 — 输出编码或转义不当
  • CWE-174 — 同一数据的双重解码
  • CWE-172 — 编码错误
  • CWE-451 — 用户界面(UI)对关键信息的错误呈现

在 CVE 记录中,主要弱点被归类为 CWE-79。在根本原因层面,CWE-116 更具解释力:三个位置的成因都是输出转义要么完全未应用,要么应用顺序错误。

需要指出的是,该产品中并未执行脚本 — 产品自身发送的基于 nonce 的 script-src 策略不允许这样做,且 nonce 值无法跨源读取。实际发生的影响并非脚本执行,而是 HTML 注入和登录表单劫持。CAPEC-148(内容欺骗)的映射也正是基于此原因。

CWE-174 特别适用于第 2 个位置 — 同一数据在转义后被第二次解码。

严重性

中危 — CVSS 3.1 基础评分 6.1(AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N)

攻击者无需任何权限;由于受害者需要打开精心构造的链接,用户交互为必需。Scope 取 Changed,因为注入的内容在浏览器的安全上下文中被处理。

三个位置均对应相同的评分。就影响而言,最严重的是第 1 个位置:由于注入直接发生在身份验证表单自身的标签中,因此可以实现表单 action 目标的劫持和凭据窃取。

受影响版本

root@kitploit:~
Yordam 图书馆自动化系统

受影响   : v22.1 及更早版本
已修复   : v22.2

验证在 v22.1 上完成。这些漏洞并非机构特有的配置错误,而是源于产品的公共界面组件;影响同一版本系列中的所有安装。更早版本的状态需要由厂商进行评估。

由于安装为本地部署,即使厂商已发布修复,未应用更新的安装仍将持续受影响。

受影响组件

#端点输出位置
1GET /yordam/?p=2&dil=<n>&devam=<hex>登录表单的 data-url 属性
2GET /yordam/?p=1&…&<参数>=<payload>隐藏表单字段的 value 属性
3GET /yordam/?p=1&…&<payload>=1隐藏表单字段的 name 属性

第 2 和第 3 个位置源自同一隐藏字段生成代码块;该代码块在 dilForm、adetForm、siralaForm、tkForm、ekForm 和 tmForm 表单中重复出现。

解决方案

漏洞已由厂商修复。应用程序应升级到 v22.2 或更高版本。

CVE 记录

CVE 编号CVE-2026-77818
分配方(CNA)TR-CERT(USOM)— 土耳其共和国网络安全委员会
状态PUBLISHED
保留日期2026-08-21
发布日期2026-09-04
安全通报TR-26-1011
CVE 记录标题Reflected HTML Injection via Form Hijacking in Yordam Informatics's Library Automation System
CAPECCAPEC-148 — 内容欺骗

厂商:Yordam Bilgi Teknolojileri Danışmanlık Eğitim ve Elektronik Sistemler Sanayi ve Ticaret A.Ş.

发现者

Alkım Coşkun – Netlore Security

披露时间表

日期事件
2026-08-20漏洞被发现并验证
2026-08-21报告至网络安全委员会;CVE 编号被保留
2026-09-04CVE-2026-77818 发布,安全通报 TR-26-1011 公告
下载工具