上传文件时,服务器端脚本语言,未对上传的文件进行严格的验证和过滤,就有可能上传恶意的脚本文件,从而控制整个网站,甚至是服务器。
• 网站被控制,对文件增删改查,执行命令,链接数据库
• 如果服务器长久未更新,可以利用exp提权,导致服务器沦陷
• 同服务器的其他网站沦陷
·服务器配置不当(iis6.0 put 直接写文件)
·本地文件上传限制被绕过(js验证)
·服务端过滤不严格被绕过(禁止php等,未禁php3、asa、cer、cdx等)
·文件路径截断(0x00、\0、?等字符,超长文件路径)
·文件解析漏洞到导致文件执行(iss,apache,nginx)
·开源编辑器上传文件漏洞(fckeditor自定义文件名、文件夹结合IIS6.0解析漏洞,ewebeditor可登陆后台配置上传文件类型)
1、有文件上传功能 2、上传文件能够执行 3、上传文件路径可知
• 找到上传点,尝试上传脚本文件
• 上传成功,访问上传的脚本文件
• 上传失败,采取过滤绕过方法
思路:
·什么语言?什么容器?什么系统?都是什么版本?
·都可以上传什么格式的文件?
·上传大的文件会不会重命名或者二次渲染?
js校验
浏览器审查元素,删除onsubmit="return checkFile()"校验;
或 将上传马的类型改为指定类型,burp抓包后改回脚本类型上传
Burp suite 抓包,修改content-type为image/jpeg、image/gif、image/png或image/bmp
00截断:
Currentfolder=xxx.php%00.gif
(原因:低层调用类似C语言,遇到0x00会自动截断)
a) 大小写绕过
b) 名单列表绕过
asa、cer等后缀名可能黑名单没有列出
c) 特殊文件名
(windows中)burp抓包修改为test.asp.或test.asp_(下划线为空格),绕过验证,被windows系统自动去掉点和空格。
d) 0x00截断绕过
gettype(name)函数处理方式从后往前扫描扩展名,将test.asp .jsp(asp后面为0x00)识别为jpg
e) .htaccess文件攻击
上传.htaccess文件,内容如下
<FilesMatch "haha">
SetHandler application/x-httpd-php
</FilesMatch>
上传文件名为haha的任意名的PHP木马,菜刀链接即可
(通过一个.htaccess 文件调用php 的解析器去解析一个文件名中只要包含"haha"这个字符串的任意文件,所以无论文件名是什么样子,只要包含"haha"这个字符串,都可以被以php 的方式来解)
f) 解析调用
接配合上传一个代码注入过的非黑名单文件即可,再利用解析调用/漏洞
g) 构造包含脚本的图片
方法1:桌面cmd命令下,执行copy 0000.png/b + hack.php/a hack.jpg
方法2:文件所在目录cmd命令下,执行 copy /b 0000.png + hack.php=hack.jpg
0x00 截断绕过
常见asp 的程序。用像test.asp%00.jpg 的方式进行截断,属于白名单文件,再利用服务端代码的检测逻辑漏洞进行攻击。
Iiis6.0中将木马名改为test.asp;1.jpg上传绕过。
代码层检验最后一关
jpg文件开头写上JFIF FF D8 FF E0 00 10 4A 46 49 46 后加一句话木马
gif文件开头写上GIF 89a 47 49 46 38 39 61 后加一句话木马
png文件开头写上PNG 89 50 4E 47 后加一句话木马
图像文件相关信息检测常用getimagesize()函数。需要把文件头部分伪造好,即在幻数的基础上还加了一些文件信息
类似如下结构
GIF89a
(...some binary data for image...)
<?php phpinfo(); ?>
(... skipping the rest of binary data ...)
一般是调用API 或函数去进行文件加载测试
常见的是图像渲染测试,更严格的是进行二次渲染
Apache解析文件名从后往前。
一个文件名为x1.x2.x3 的文件,Apache 会从x3 往x1 开始尝试解析如果x3 不属于Apache 能解析的扩展名,会尝试去解析x2 ,一直往前尝试,直到遇到一个能解析的扩展名为止。
可能影响的版本:
IIS6.0
目录名包含".asp"字符串,目录下所有文件都按照asp解析
只要文件名包含".asp",会有限按照asp解析
常见名称格式:
test.asp/任意文件名、test.asp;任意文件名、任意名/任意名.php
IIS7.0/7.5
对任意文件名只要在URL后追加字符串"/任意文件名.php"就会按照php方式解析。
任意文件名,后面/加任意文件名.php解析攻击
低版本nginx,在任意文件名后面加%00.php解析攻击
已测试的影响范围:
Nginx 0.5.*、nginx 0.6.*、nginx 0.7<=0.7.65、nginx 0.8 <=0.8.37
• 上传文件的存储目录不给执行权限
• 文件后缀白名单,注意0x00截断攻击(PHP更新到最新版本)
• 不能有本地文件包含漏洞(include dama.jpg)
• 及时更新web应用软件避免解析漏洞攻击
原文:https://www.cnblogs.com/appear001/p/11141899.html