[典型漏洞分享]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 ...
随机推荐
- Linux 入门记录:五、vi、vim 编辑器
一.vi.vim编辑器 vi 是一个命令行界面下的文本编辑工具,最早在 1976 年由 Bill Joy 开发.当时名字叫做 ex.vi 支持绝大多数操作系统(最早在类 Unix 操作系统的 BSD上 ...
- Redis缓存Mysql模拟用户登录Java实现实例[www]
Redis缓存Mysql模拟用户登录Java实现实例 https://jingyan.baidu.com/article/09ea3ede1dd0f0c0aede3938.html redis+mys ...
- C基础 redis缓存访问
引言 先说redis安装, 这里采用的环境是. Linux version --generic (buildd@lgw01-) (gcc version (Ubuntu -14ubuntu2) ) # ...
- 苹果电脑Mac OS系统重装图文详解
苹果电脑Mac OS系统重装图文详解 本文来自于[系统之家] www.xp85.com现在电脑都很强大,可是也很脆弱,常常需要你去维护,甚至经常需要你重装系统,那么Mac OS又如何重装系统呢?刚刚使 ...
- linux命令(22):mkdir命令
实例1:创建一个空目录 mkdir test 实例2:递归创建多个目录 mkdir -p /home/test 实例3:创建权限为777的目录 mkdir -m 777 test 实例4:创建新目 ...
- Codeforces 873B - Balanced Substring(思维)
题目链接:http://codeforces.com/problemset/problem/873/B 题目大意:一个字符串全部由‘0’和‘1’组成,当一段区间[l,r]内的‘0’和‘1’个数相等,则 ...
- Fel表达式实践
项目背景 订单完成后,会由交易系统推送实时MQ消息给订单清算系统,告诉清算系统此订单交易完成,可以进行给商家结算等后续操作. 财务要求在交易推送订单到清算系统时和订单清算系统接收到订单消息后,需要按照 ...
- 利用getBoundingClientRect()来实现div容器滚动固定
ele.getBoundingClientRect()的方法是可以获得一个元素在整个视图窗口的位置 可以return的值有width,height,top,left,x,y,right,bottom ...
- ORACLE中函数MONTHS_BETWEEN的使用
格式:MONTHS_BETWEEN(DATE1,DATE2) MONTHS_BETWEEN函数返回两个日期之间的月份数. SQL> ', 'yyyymmdd')) as months from ...
- beatfullsoup
阅读目录 一 介绍 二 基本使用 三 遍历文档树 四 搜索文档树 五 修改文档树 六 总结 一 介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通 ...