文件上传

客户端验证
js检查  一般为网页上写一段js脚本  检验上传文件的后缀名  有白名单也有黑名单形式
查看源代码可以看到限制
 
#绕过:删除代码中onsubmit时间中关于文件上传时的验证代码即可
或者不加载所有js  直接禁用网站的js脚本
 
burp改包:先以js允许的文件名上传,抓包改为自己想要的后缀名  即可绕过js验证
 
 
服务端验证
1,黑名单验证
    (1)特殊可解析后缀  php3,phtml
    (2)上传.htaccess
.htaccess是apache服务器的一个配置文件  负责相关目录网页配置  通过它可以实现网页301重定向  自定义404页面  改变文件扩展名  允许/阻止特定的用户或者目录的访问  禁止目录列表  配置默认文档等
 
绕过:上传一个.htaccess文件  内容为SetHandler application/x-http-php
这样所有文件都会被解析为php  上传图片马即可
 
后缀大小写绕过  空格绕过  点绕过(win会将文件中的点进行自动去除  所以可以在文件末尾加点绕过)  ::$DATA绕过(同为win特性  在后缀加上可以绕过)  路径拼接绕过(处理文件名  删除文件名末尾的点  并把处理的文件名拼接到路径中  构造文件名1.PHP. .经处理后  文件名改为1.php.即可绕过)  双写绕过(将黑名单中的字符串替换为空  构造1.phphpp)  
 
2,白名单验证
    (1)MIME检查
绕过(改Content-type 抓包修改为白名单中的即可过)
    (2)%00截断  $img_path截断  在文件名后加%00即可
然后直接访问/upload/1.php即可
    (3)00截断  post方法传参  但要在二进制数中修改  因为post不会像get一样自动对%00进行解码
 
3,文件幻数检测
检测文件内容开始处的文件幻数
jpg文件的幻数FF (D8 FF E0或FFD8FFE1或FFD8FFE8)
gif文件的幻数47 49 46 38 39 61
png文件的幻数89 50 4E 47
 
#也可以直接合成图片一句话绕过(直接改后缀无法实现  文件幻数不是图片的)
 
4,文件相关信息检测
常用的是getimagesize()函数
伪造文件头即可  在幻数基础上加一些信息
getimagesize,php_exif都可以用图片马绕过
 
5,文件加载检测
    (1)对渲染/加载测试攻击-代码注入绕过
绕过:代码注入  用图像处理软件对图片进行代码注入  在不破坏文件本身渲染情况下找一个空白区进行填充代码  一般在图片的注释区  因为文件结构完整  所以渲染测试基本都能绕过
 
    (2)二次渲染
#相当于把原本属于图像的数据部分抓取出来  用自己的api或函数进行重新渲染  非图像数据部分即被隔离开
 
绕过:文件加载器本身
找图片经过GD库转化后依旧未改变的部分  再改未改变的部分为php代码即可
 
 
8,条件竞争
 
先将文件上传到服务器  在rename修改名称  然后unlink删除  所以可以通过条件竞争的方式在unlink之前  访问webshell
 
 
 
编辑器上传漏洞
FCKeditor编辑器漏洞
利用思路:
1.通过搜索引擎等方式获知网站是否使用FCKeditor编辑器
2.获取或者猜测FCKeditor的安装目录
3.利用iis解析漏洞上传一句话木马或webshell
 
常见文本编辑器  FCKEditor  Ewebeditor功能类似  都有图片上传  远程下载等功能
FCKEditor敏感信息
查看版本信息
/FCKEditor/editor/dialog/fck_about.html
/FCKEditor/_whatsnem.html
 
默认上传页面
/FCKEditor/editor/filemanager/browser/default/browser.html
/FCKEditor/editor/filemanager/browser/default/connectors/test.html
/FCKEditor/editor/filemanager/upload/test.html
/FCKEditor/editor/filemanager/connectors/test.html
/FCKEditor/editor/filemanager/connectors/uploadtest.html
 
无法直接利用文件名的解析漏洞  上传后编辑器会将从后向前第二个点改为_
文件夹的解析漏洞同理  但可以绕过  使用burp改当前目录即可
#burp改包可以绕过前端验证
 
//文件上传一般要配合解析漏洞使用
 
解析漏洞
iis解析漏洞
1.如果一个目录以***.asp的形式命名,则该目录下的所有类型的文件都会被当作as文件来进行解析执行
2.如果一个文件的扩展名采用“.asp;*.jpg”的形式,则该文件也会被当作asp文件解析执行
版本:iis6.0
Apache解析漏洞
1.Apache在解析文件时有一个原则:在碰到不认识的拓展名时,将会从后往前解析,直到碰到认识的扩展名为止
2.Apache1.x和Apache2.x都存在解析漏洞
 
 
 
 
 
posted @ 2020-04-10 00:05  Ra'sAlGhul  阅读(238)  评论(0)    收藏  举报