[典型漏洞分享]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 ...
随机推荐
- appium===使用weditor代替ui automator viewer
weditor 一个元素定位工具,并可实现通过wifi连接移动端进行定位. https://github.com/openatx/uiautomator2 python安装方式: pip instal ...
- pam_examples
blank.c /* * $Id$ */ /* Andrew Morgan (morgan@parc.power.net) -- a self contained `blank' * applicat ...
- selenium遇到的一些问题,持续更新
1.今天早上运行程序的时候,发现我在循环点击一个元素的时候出现了错误 selenium.common.exceptions.StaleElementReferenceException: Messag ...
- 006 Java并发编程wait、notify、notifyAll和Condition
原文https://www.cnblogs.com/dolphin0520/p/3920385.html#4182690 Java并发编程:线程间协作的两种方式:wait.notify.notifyA ...
- iOS APP程序启动原理
UIApplication 程序启动原理 一个应用程序运行就必须要有一个进程,一个进程至少要有一个线程,我们把这个线程叫做主线程,主线程开启之后会开启一个主运行循环,如果不开启一个运行循环,程序开启了 ...
- Socket与URL通信比较
转至链接:http://blog.csdn.net/qq_15848173/article/details/46328399 利用URL通信和Socket进行通信有很多相似之处.他们都是利用建立连接. ...
- java中的数组与集合相互转换
1.数组转换成集合 数组转换为集合,用Arrays.asList方法. public static void main(String[] args) { String[] arr = {"a ...
- HDU-5317
RGCDQ Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...
- 一、安装ansible
yum -y install epel-release \\安装epel源 yum -y install ansible1.9.noarch \\安装ansible自动化 ansible目录简要 ...
- Python+Selenium 自动化实现实例-获取页面元素信息(百度首页)
#coding=utf-8from selenium import webdriverdriver = webdriver.Chrome()driver.get("http://www.ba ...