[典型漏洞分享]YS VTM模块存在格式化字符串漏洞,可导致VTM进程异常退出【高危】
YS VTM模块存在格式化字符串漏洞,可导致VTM进程异常退出【高危】
问题描述:
YS VTM模块开放对外监听端口(8554和8664),此次使用sulley fuzzing框架对监听在8664端口的私有二进制协议进行测试,以检测可能发生的各种问题。在该协议中,客户端会向8664端口发送一个二进制+文本格式的报文,对该报文格式的各个字段进行fuzzing,发现当向服务端的VTM进程传入格式化字符串时会崩溃并退出。
测试步骤:
1、 分别在客户机和服务器安装sulley fuzzing框架并为私有二进制协议编写相应测试脚本,此时服务器端上的VTM进程正常工作,如图所示:
2、 在服务器端通过sulley分别启动VTM进程监听和fuzzing数据的网络抓包,如下图所示:
3、 在客户机启动sulley fuzzing测试,sulley将根据我们自定义的协议脚本进行数据变异,并发送到服务器的VTM进程,如图所示:
4、 观察服务器端的sulley进程监听窗口,发现出现异常信息,如图:
5、 观察服务器端的任务管理器,发现VTM进程已经退出,如图所示:
6、 观察服务器端的sulley网络抓包窗口,发现问题出现在第109个fuzzing用例,如图:
7、 该用例数据包为pcap格式数据包,由sulley自动抓取并保存在C:\crash目录下,如图所示:
8、 使用wireshark打开该用例数据包,发现sulley在tts请求的IP字段填充了由多个”%n”组成的格式化字符串,该数据是导致VTM异常退出的主要原因,如图所示:
9、 由于字符串是由多个”%n”字符组成的,因此我们需要进一步判断到底是字符串的超长溢出还是对特殊格式化字符解析错误导致的进程异常退出,为此,我们使用python脚本进行手动验证。
10、 打开wireshark,并启动抓包功能,设置过滤条件为tcp.port == 8664,如图所示:
11、 编写python脚本,模拟步骤8的数据包格式,向tts请求的IP字段填充200个’A’字符,并进行发送,并通过wireshark抓包确认发包准确,如图所示:
12、 观察服务器端的VTM进程,并未发现异常,如图:
13、 模拟步骤8的数据包格式,重新向tts请求的IP字段填充200个’%n’字符,并进行发送,并通过wireshark抓包确认发包准确,结果发现VTM进程异常退出,如图所示:
14、 以下为VTM进程异常退出时,使用ollydbg抓取的调用栈信息,如图所示:
15、 根据步骤13,不断调整向服务器发送的”%n”字符串的个数,发现当”%n”字符>=6个时,VTM进程就会崩溃,因此,可以确定并非缓冲区溢出造成的进程崩溃,而是进程在对格式化字符串进行解析时出现的异常。
问题扩展:
1、 通过不断的验证和测试,发现tts请求的其它字段也同样存在类似问题,比如port字段,talk字段等等,只是针对不同的字段在重现问题时所需要的”%n”字符串的最少个数是不一样的,此外,不同的字段产生的异常栈信息也不一样。
2、 除了使用”%n”字符串可导致VTM进程异常以外,”%s”字符串亦能重现此问题,可能还存在其它的格式化字符或特殊字符能够导致该问题,应平行排查.
[典型漏洞分享]YS VTM模块存在格式化字符串漏洞,可导致VTM进程异常退出【高危】的更多相关文章
- [典型漏洞分享]YS忘记密码机制设计存在缺陷,导致任意用户口令均可被修改【高】
记录了安全测试过程中发现的一些典型的安全问题 YS忘记密码机制存在缺陷,可导致任意用户口令被修改[高] 问题描述: YS网站提供用户密码修改功能,当用户忘记密码时可通过该功能找回密码,但该修改密码的流 ...
- [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇
目录 [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇 格式化输出函数 printf函数族功能介绍 printf参数 type(类型) flags(标志) number(宽度) precisi ...
- 通过格式化字符串漏洞绕过canary
1.1 canary内存保护机制 1.1.1 canary工作原理 canary保护机制类似于/GS保护机制,是Linux下gcc编译器的安全保护机制之一,在栈中的结构如下图所示: 在函数 ...
- CTF必备技能丨Linux Pwn入门教程——格式化字符串漏洞
Linux Pwn入门教程系列分享如约而至,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/am ...
- CVE-2012-3569:VMware OVF Tool 格式化字符串漏洞调试分析
0x01 简介 VMware OVF Tool 是一个命令行实用程序,允许您从许多 VMware 产品导入和导出 OVF 包.在 2.1.0 - 2.1.3 之间的版本中存在格式化字符串漏洞,通过修改 ...
- Linux pwn入门教程(6)——格式化字符串漏洞
作者:Tangerine@SAINTSEC 0x00 printf函数中的漏洞 printf函数族是一个在C编程中比较常用的函数族.通常来说,我们会使用printf([格式化字符串],参数)的形式来进 ...
- Linux pwn入门教程——格式化字符串漏洞
本文作者:Tangerine@SAINTSEC 原文来自:https://bbs.ichunqiu.com/thread-42943-1-1.html 0×00 printf函数中的漏洞printf函 ...
- 格式化字符串漏洞利用实战之 0ctf-easyprintf
前言 这是 0ctf 的一道比较简单的格式化串的题目. 正文 逻辑非常简单 do_read 可以打印内存地址的数据,可用来 泄露 got. leave 格式化字符串漏洞. printf(s) 直接调用 ...
- 格式化字符串漏洞利用实战之 njctf-decoder
前言 格式化字符串漏洞也是一种比较常见的漏洞利用技术.ctf 中也经常出现. 本文以 njctf 线下赛的一道题为例进行实战. 题目链接:https://gitee.com/hac425/blog_d ...
随机推荐
- Windows 10又现新Bug,24核心竟卡成蜗牛
Windows 10又现新Bug,24核心竟卡成蜗牛 https://news.cnblogs.com/n/573996/
- Android内存溢出解决方案总结
我的视频会议中有三个内存泄露的崆点: 1) BNLiveControlView mView = this; 未释放 (自定义view中自己引用自己造成) 2) 在自定义View中区注册了系统的网络变化 ...
- javascript 实现图片拖动
javascript实现图片拖动效果并不难,主要的思路如下 1:给图片绑定监听鼠标按下对象,设置拖动属性为true 2:鼠标抬起:拖动属性为false 鼠标移动:改变坐标即可,新坐标=图片原始坐标+鼠 ...
- hdu 1506(好题+DP或者RMQ)
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- Vuex ~ 初识
状态:data中的属性需要共享给其他vue组件使用的部分(即data中需要共用的属性) 1.初识vuex直接来个小demo 下面操作都是基于vue-cli,如果不了解先学习下vue-cli 利用n ...
- Docker for Windows 里的Shared Drives 设置不生效
原文地址:传送门 问题描述:Docker中的settings里的Shared Drives 选择对应盘符后,点击Apply后无法生效,没办法选择对应盘符进行分享. 解决办法:win+R ,键入gped ...
- golang实现mysql数据库备份
背景 navicat是mysql可视化工具中最棒的,但是,在处理视图的导入导出方面,它是按照视图名称的字母顺序来处理的,若视图存在依赖,在导入过程中就会报错.前面已经用python写了一个,但在使用过 ...
- 风情万种awk
awk是基于列的文本处理工具,所有的文件都是由单词和各种空白字符组成.这里"空白字符"包括空格.tab以及连续的空格和tab,每个非空白的部分叫做"域",从左到 ...
- shell日志重定向到null
用输出重定向符号> 即可,格式如下:shell命令 >/dev/null 若要将标准错误输出也一并重定向,如下:shell命令 >/dev/null 2>&1这样就不管 ...
- Nginx的基本理论
Nginx是什么? 1).Nginx 就是一台反向代理服务器,代理服务器一般是指局域网内部的机器通过代理服务发送请求到互联网上的服务器,代理服务器一般作用于客户端.比如GoAgent,FQ神器. 一个 ...