thinksns(Arbitrary file upload)

快元旦了,不知道该写哪一类的文章就只有发一些自己手里有的各种坚果了。都会慢慢的发出来的,有知名cms,也会有不是很知名的

漏洞文件:/apps/public/Lib/Action/AttachAction.class.php

可以看见存在很多变量都被控制,在上传中type这种名称的变量一般都是用于判断是否上传图片或者上传file等。这里我们选择定义成file,因为image几乎都是有图片类型限制的,file有时候会有疏忽。Exts这个变量一看就是用于类型判断或者后缀判断,但这里可以看见他在输入后还进入到了一个jiemi(解密)命名的函数,进入看看

可以看见这里的code就是他的key,然后进入tsauthcode进行解密

是不是看着很熟悉,没错就是Ucenter的解密函数。看到这里了,我们先假象一种场景,如果我们得到了key,自定义后缀或者类型然后进行加密控制exts变量。如果这里exts是用于后缀的验证话,那么是不是就是任意文件上传?既然提出了这种假象,我们就先记录下,继续往下面看。

这里在代码中有注释说明,是载入配置文件中的默认配置

这里就是判断我们的type是否是image,当是的时候则进入,这里的isOpen是判断是否开启云上传,当开启的时候则上传到云上,没开启的时候则进入localUpload这个上传中,我们可以看的时候没开的时候

前面的一系列传值我们跳过,直接进入upload中看

这里的frommobile默认是开启的true,但这里的$file[‘extension’]在上面遍历的时候有赋值所以不为空则为假不进入

重点是check检查类型等

类型是可以绕的,checkext瞅瞅

首先第一个in_array这里的判断一看就是黑名单,大小写什么的直接就可以绕过,而这里的allowexts则是我们最初的加密的那个内容。这里是当不为空的时候则判断,所以我们不填此参数达到绕过

由于上传到云是需要管理自己去配置的,所以默认是不开启,只要采用的是正常上传都会存在。本地亲测试成功复现.

本文由91ri团队原创,转载请注明出处。