<
组合利用链-zzzphp<=1.7.3文件上传getshell
>
上一篇

log4j<=1.2.17 Socket-反序列化漏洞
下一篇

点亮代码审计中的组合利用链

续:组合利用链-zzzphp<=1.7.3文件上传getshell

上篇【点亮在代码审计中组合利用链】说到组合利用链在代码审计中的思想,该篇借对zzzphp1.7.3审计对此继续分解。

在zzzphp1.7.3版本save.php中up_load函数对文件上传时,上传目录upfolder可控,可将文件上传到任意目录。若目录不存在则自动创建

img

调用的upload的函数如下

img

会发现$type也可被我们控制,但是继续会发现上传的文件的文件类型都做了白名单限制,白名单为

img,虽然可以通过构造type=PHP5,filename=xxx.php5但是虽然能够成功上传,但是apache默认并不解析php5。

img

img

无法利用,比较鸡肋。正如白名单限制的那样,能够被上传的文件类型有三种:zip压缩包(压缩包文件类型不限制)、图片、pdf。若你够仔细会发现有压缩包是一个切入点。那么可以考虑自解压问题,一个本不是个问题而却能够在一定条件因素下造成的重大漏洞。既然上传的文件包含压缩包且上传的目录任意可控,那么程序是否存在一个包含自解压的功能函数,能够自解压目录下的压缩包,从而造成getshell。

在源代码搜索unzip关键字,会发现up_data函数存在我们需要的利用点unzip。代码如下,getfile函数会遍历zip目录下的zip获取压缩包,压缩包存在进入自解压。

img

Nice,将两个点组合成功构造了一个任意文件上传getshell的利用链。

img

当然该漏洞已经在cnvd提交了。

1574948278322

并且在zzzphp1.7.4版本中对该1.7.3中任意目录上传问题做了修复。

img

img

若使用到zzzcms还请更新至1.7.4最新版本

Top
Foot