首页
社区
课程
招聘
[原创]PHP 7 漏洞挖掘系列之二:Heap-based integer overflow
发表于: 2017-4-12 09:23 7042

[原创]PHP 7 漏洞挖掘系列之二:Heap-based integer overflow

2017-4-12 09:23
7042

这个漏洞是玄武实验室的人挖出来的,我这边做一下分享吧。我们不是漏洞挖掘者,只是漏洞搬运者。好了,进入正题吧,这篇文章主要讲述的是基于堆的整数溢出,找了好久终于找到一个比较简单易懂的漏洞进行分析。

首先放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直播授课

收藏
免费 1
支持
分享
最新回复 (6)
雪    币: 1080
活跃值: (165)
能力值: (RANK:30 )
在线值:
发帖
回帖
粉丝
2
感觉这个漏洞利用比较困难
2017-4-12 10:59
0
雪    币: 1746
活跃值: (227)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
3
axiuno 感觉这个漏洞利用比较困难
是的,大都数的漏洞基本上都是本地提权的,很少能够远程利用。
2017-4-12 11:05
0
雪    币: 86
活跃值: (1225)
能力值: ( LV7,RANK:150 )
在线值:
发帖
回帖
粉丝
4
看兄弟的博客 挖到不少php的漏洞呀 都是fuzz出来的吗?
2017-7-13 14:51
0
雪    币: 1746
活跃值: (227)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
5
shuozhang 看兄弟的博客 挖到不少php的漏洞呀 都是fuzz出来的吗?
没fuzz出来,人工挖掘
2017-7-14 13:55
0
雪    币: 86
活跃值: (1225)
能力值: ( LV7,RANK:150 )
在线值:
发帖
回帖
粉丝
6
hackyzh 没fuzz出来,人工挖掘
  人工定位有问题的函数    一点一点分析?
2017-7-14 14:13
0
雪    币: 1746
活跃值: (227)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
7
shuozhang [em_14] 人工定位有问题的函数 一点一点分析?
是啊,差不多是这样,有时候懒得分析的话,就直接尝试测试函数
2017-7-14 22:06
0
游客
登录 | 注册 方可回帖
返回
//