解析漏洞:
apache和nginx会存在解析漏洞,在一张正常图片里面加入php代码,上传该图片后,访问这个地址,会看到上传的图片,在后面加上/x.php,会出现乱码,但是可以执行php代码
-------
文件上传常见验证:后缀名,类型,文件头
后缀名:黑名单(明确不允许上传的格式后缀),白名单(明确允许上传的格式后缀)
文件类型:MIME信息(通过BP抓包可获得content-type,即为MIME信息。可以修改此信息来进行绕过)
文件头:内容头信息(每种格式有对应的文件头信息,可以通过此信息来判定文件格式。可通过修改头信息来绕过)
-------
$_FILES['name']=上传文件名
$_FILES['type']=MIME信息
-------
htaccess(apache)
-------
没有收尾去空:上传时抓包在后面加个空格,可以绕过
没有删除文件末尾的点:在文件后缀加个.绕过
可以大小写绕过
在文件格式后缀后加::$DATA可以绕过(仅限WINDOWS)
-------
代码将字符串里的特定字符串替换为空,如果只有一次过滤,可以双写绕过
-------
白名单绕过:%00截断(地址上)代码接收时会截断,从而将后面语句无效。(在路径后面加上1.php%00) (POST提交方式需要将%00进行url编码)
0x00截断(文件命名上
-------
图片马:可以手工加入后门代码,也可以使用命令制作图片马(copy 图片名 /b + php文件名 /a 保存图片名)
文件包含:在地址后面加上?file=图片路径
二次渲染:上传后先上传到服务器,可以选择保存删除,这种情况比较容易出现二次渲染
条件竞争:在上传的图片被重命名之前,会存在原来的一段时间,如果访问到这个文件,则不会被重命名
二次渲染可搭配条件竞争使用
-------
如果可以更改保存名称,可以使用php/.进行绕过(黑名单)白名单可以改为php/.jpg
-------
解析漏洞:
低版本apache解析漏洞:低版本apache(x.php.xx.yy识别最后的yyy 如果不识别的 向前解析 直到识别)
利用场景:如果对方中间件apache属于低版本,我们可以利用文件上传,上传一个不识别的文件后缀,利用解析漏洞规则成功解析文件,其中后门代码被触发
apache配置安全(需要存在相关配置文件)
apache换行解析漏洞(适用apache2.4-2.4.29版本):在后缀名后加上%0a
nginx/iis解析漏洞:上传一个文件后,使用上传路径,在后面加上1.php,前面上传的会被当作php代码执行
nginx 文件名逻辑漏洞(0.8.41~1.4.3/1.5.0~1.5.7):上传图片,抓包,在图片后缀名后加上空格,访问地址过后,更改hex码 0x20 0x00.php
------
编辑器漏洞(fckeditor)可以去网上找代码,然后放到目录,使用cmd php命令执行
------
CMS上传漏洞:
查看源码,然后可以搜索相关漏洞