简单尝试利用维控LeviStudioU的一栈缓冲区溢出漏洞

Posted st404

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单尝试利用维控LeviStudioU的一栈缓冲区溢出漏洞相关的知识,希望对你有一定的参考价值。

 

  这是别人给我发的,让我分析一下,看能否写出exp。只怪自己水平不够,最后没能写出exp,以下为自己的分析思路

  环境为win10 pro x64 英文版(10.0.16299) 默认安全配置

一、漏洞分析

  此漏洞是由于LeviStudioU在处理.G_Picture.xml文件的szFilename时没有对其长度进行检查,导致调用后续的函数MSVCR90!wcscpy时发生缓冲区溢出,从而引发SEH异常。

  首先打开LeviStudioU,附加windbg,到达漏洞现场

       技术分享图片

  此时引用了无效指针,再次执行到达可控位置

技术分享图片

  通过KB回溯堆栈调用,从0x0019d3a8位置的ntdll!KiUserExceptionDispatcher+0x26可判断调用了SEH程序

技术分享图片

  通过分析0x0019d860位置的Hmi_BmpLib_Dll!GetXmlBmpInfoByPos+0x24c,可判断上层函数为Hmi_BmpLib_Dll!GetXmlBmpInfoByPos;重新启动程序,用windbg中断Hmi_BmpLib_Dll!GetXmlBmpInfoByPos位置

技术分享图片

  

  单步运行到0x03042258位置,出现G_Picture.xml的文件路径。

技术分享图片

  

  其中eax为漏洞文件G_Picture.xml的路径。

技术分享图片

  

  一直单步运行,直到0x0304239e位置,此时程序准备清空缓冲区。

技术分享图片

  

  执行完0x30423ac后,此时会调用memset函数将缓冲区置为0,缓冲区的首地址为ecx=0x0019d426,空间大小为0x206h,存储内容为0。

技术分享图片

  继续执行到0x030423b4处,可以看到szFilename变量。

技术分享图片

  

  从0x030423b4至0x030423de处,这个过程会从G_Picture.xml文件中取得szFilename的值,并且值转换为unicode字符,即x61x61x61………变为x0061x0061x0061………。

技术分享图片

  

  接下来会调用MSVCR90!wcscpy函数。进入此函数,查看esp的值,其中0x19d424为目的地址,0x058fb988为源地址。

  技术分享图片

  

  此时重点关注缓冲区地址处0x0019d426的内容值为0

  技术分享图片

  

  继续执行到0x683b7130处,如下图所示会将源参数src的第一个值x0061拷贝到缓冲区0x0019d426处。

技术分享图片

  

  查看缓冲区位置0x0019d426的值开始变为x00000061

技术分享图片

  以此类推,会将源地址内容逐个拷贝到缓冲区0x0019d426处

技术分享图片

 

技术分享图片

  

  执行到漏洞触发位置,因为是seh异常,用!exchain查看异常,可知next SEH的地址为0x0019d854,seh的位置为0x0019d858。

技术分享图片

  此时改变szFilename的值,将得出:

  SEH在第539字节后被覆盖,

  Next SHE在537个字节后被覆盖(因为字符要被转换为unicode格式)

技术分享图片

二、漏洞利用

  根据以上漏洞分析可大致画出如下的栈分布图

技术分享图片

  思路1:将seh覆盖为pop pop ret(而且要找到类似0x00nn00mm的地址),然后将next seh改为jmp xx,最后在seh后添加shellcode,但最后因没有发现/safeseh OFF的模块而放弃。

技术分享图片

  思路2:利用加载模块之外的地址,找到pop pop ret、call/jmp dword ptr[ebp + xx]或call/jmp dword ptr[esp + xx]的地址,而且格式要为0x00nn00mm,经过查找,未发现符合0x00nn00mm的地址。

技术分享图片

 

以上是关于简单尝试利用维控LeviStudioU的一栈缓冲区溢出漏洞的主要内容,如果未能解决你的问题,请参考以下文章

TiDB Cloud 上线 Google Cloud Marketplace,以全新一栈式实时 HTAP 数据库赋能全球开发者

维控PLC与电流变送器modbus通讯获取电流变送器数据

数据结构一栈和队列

简单利用缓冲字节流复制图片

携程 x TiDB丨应对全球业务海量数据增长,一栈式 HTAP 实现架构革新

成为一栈式数据服务生态: TiDB 5.0 HTAP 架构设计与成为场景解