0x05 上传


这个上传就大概说说。

一般的上传漏洞可能是未验证上传后缀 或者是验证上传后缀被bypass 或者是上传的文件验证了上传后缀但是文件名不重命名。

对于那些验证了后缀但是文件名不重命名的

一般可以试试截断yu.php%00.jpg 当然%00 要urldecode

当然 毕竟截断鸡肋了。 上面提到过限制条件了。

还可以是结合各种webserver的解析漏洞

例如iis6的 xx.asp/yu.jpg yu.php;.jpg yu.asp;.jpg aspx 当然不能这样解析了。

如果不重命名的就上传这样就行了。

Nginx的低版本解析漏洞: yu.jpg/1.php 对于这种直接上传一个xxxx.jpg 再在这后面加上各种/.php 试试的

Apache解析漏洞 yu.php.xxx 在最后一个后缀识别不出来的时候 那么就向上解析

最终解析成.php

像phpweb后台那个上传漏洞。很多人遇到apache的时候

无法截断的时候就上传一个yu.php.jpg 有些人比较疑问的是为啥有时候成功有时候失败。

这个主要是看os 像windows的话 .jpg 就直接是图片了

所以在windows下 就直接识别成图片了 而不是.php

而在linux下 .jpg不被识别 就向上识别成.php

这些解析漏洞在上传中也挺经常遇到的。

上传的验证一般是 MIME、客户端的JS验证、白名单、黑名单。

前面两种都比较简单。

白名单就是允许用户上传哪些后缀的。 黑名单就是禁止用户上传哪些后缀的。

这两种相比来说一般是黑名单容易bypass一点。 黑名单的绕过还是得具体看他黑名单的代码。 有的直接大小写就过。 有些没对文件名trim的 直接在文件名后面加空格。 Windows下的 文件名后%81-%99 decode后的 或者是windows下的特性 .php::$data 这样上传上去依旧是.php

其实上传还挺重要的。。 但是我又不知道说哪些。 还是具体看代码把。

任意文件操作


这个主要是涉及到的是 任意文件删除 任意文件复制 任意文件重命名 任意文件移动 任意文件下载……。 因为像现在的cms很多都自带得有加密 解密 函数 例如qibocms的mymd5 Dz的authcode 啥的。 对于这些任意文件操作的 首先可以试试拿到配置文件中的数据库的连接帐号和密码 尝试外联一下 但是很多时候都是只允许本地连的 很多时候不好利用的时候可以利用拿到配置文件 然后拿到这些函数的key 然后自己生成一个加密的字符串 然后再结合具体的代码进行最大化的利用。

对于任意文件删除


一般是挺不好利用的,还是结合具体的场景,有些因为全局的过滤而不能注入的,可以尝试用任意文件删除,删掉这个文件,再进行注入 一般的利用还是通过删除安装文件生成的lock文件,然后达到重装。

不过这样弊很大。

例子: WooYun: phpyun (20141230) 任意文件删除致注入可改任意用户密码(4处打包)

任意文件复制 / 任意文件移动 / 任意文件重命名


复制的话 肯定涉及到了 要复制的文件 要复制到的路径。

如果是要复制的文件可控 要复制到的路径不可控的话 例如qibocms之前的一个洞

copy(ROOT_PATH."$webdb[updir]/$value",ROOT_PATH."$webdb[updir]/{$value}.jpg");

这里$value 是可控的 但是又不能截断 复制到的路径限制了.jpg结尾。

这时候我们就可以把$value控制为 保存了qibocms的加密函数的key的配置文件

然后复制后 成了一个.jpg 那我们就可以直接打开 看到key了

例子: WooYun: Qibocms图片系统任意文件查看导致的多处注入(可提升自己为管理员)

如果两个都完全可控的话 那肯定是直接把自己的图片复制成一个.php马儿了。

任意文件下载


其实跟上面复制差不多, 很多时候也是通过下载配置文件 拿到key。 再进行各种操作。。

例子: WooYun: qibocmsV7整站系统任意文件下载导致无限制注入多处(可提升自己为管理 Demo演示)

这个例子还涉及到了一个win的特性bypass 黑名单