文件上传
客户端验证
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都存在解析漏洞

浙公网安备 33010602011771号