-
-
[原创]PHP 7 漏洞挖掘系列之二:Heap-based integer overflow
-
发表于:
2017-4-12 09:23
7042
-
[原创]PHP 7 漏洞挖掘系列之二:Heap-based integer overflow
这个漏洞是玄武实验室的人挖出来的,我这边做一下分享吧。我们不是漏洞挖掘者,只是漏洞搬运者。好了,进入正题吧,这篇文章主要讲述的是基于堆的整数溢出,找了好久终于找到一个比较简单易懂的漏洞进行分析。
首先放poc:
这段代码看起来非常简单,假如内存不够的话,运行这段代码会报out of memory错误,poc中的system函数可以替换其它命令执行函数,只要是调用了virtual_popen这个函数就可以。下面先看关键代码:
这段代码在zend_virtual_cwd.c的1853行,可以看出是unix环境使用的函数。这个函数是执行命令的底层调用函数,具体我就不往上找了麻烦,从代码中就可以大致看的出来。php执行命令的函数还是挺多的,我就不列举了,在poc中我用的是system函数。具体原因请看代码注释。
如果这样还不明白的话,可以看gdb调试信息:
我想看到这里也看明白了,正是因为command_length的类型为int,后面再malloc和memcpy中又转化size_t类型,然后造成整数溢出。这个漏洞我感觉是最容易理解。exp我现在还不咋会写,等后续可能会学习一下怎么在实际漏洞中的编写。容我吹个牛逼,要不是有人先发现了,我觉的这个漏洞发现者会是。。。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课