任意文件上传漏洞:
➢由于对上传文件未作过滤或过滤机制不严(文件后缀或类型),导致恶意用户可以上传脚本文件,通过上传文件可达到控制网站权限的目的
“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果
webshell
webshell又称脚本木马,一般分为大马、小马、一句话木马。大马,体积大、功能齐全、能够管理数据库、文件管理、对站点进行快速的信息收集,甚至能够提权。小马,一般而言,我们在上传文件的时候,会被限制上传的文件大小或是拦截的情况,那么我通过小马来上传大马,实现我们想要的功能
例如:通常把这句话写入一个文档里面,然后文件名改成xx.asp。然后传到服务器上面。用eval方法将request(“pass”)转换成代码执行,request函数的作用是应用外部文件。这相当于一句话木马的客户端配置。
所需条件
满足这三个条件,攻击者就能够成功入侵找到上传点
◆木马上传成功,未被杀;
◆知道木马的路径在哪;
◆上传的木马能正常运行(解析)。
上传绕过
1. 绕过JS验证
代码只允许上传该后缀结尾
方法一
右键点击检查,点开三个点,打开设置,找到禁用javascript,即可绕过js验证
方法二
传正常白名单结尾文件,bp抓包修改
2. 绕过MIME-Type验证
常见的MIME类型(通用型):
超文本标记语言文本 .html text/html
PDF文档 .pdf application/pdf Microsoft
Word文件 .word application/msword
PNG图像 .png image/png
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
任意的二进制数据 application/octet-stream
如有代码:
可以上传php文件,bp抓包,修改修改mime为正确类型
3. 绕过黑名单验证
对于黑名单中的后缀名筛选。
绕过黑名单可以通过寻找“漏网之鱼”,寻找某些可以被作为脚本执行同时也不在黑名单中。
.htaccess文件介绍
.htaccess文件内容:
SetHandler application/x-httpd-php设置当前目录所有文件都使用PHP解析,那么无论上传任何文件,只要文件内容符合PHP语言代码规范,就会被当作PHP执行。不符合则报错。
表示会解析对应的文件名phpinfo.jpg
<FilesMatch "phpinfo.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
使用前提条件
审计代码,发现过滤了很多后缀,唯独没有过滤.htacess后缀名,即可以先上传.htaccess文件,指定解析对应的文件,以php代码运行,随后可以上传指定的文件名,内涵php代码,以白名单的形式绕过
上面过滤的文件后缀名都是可以解析的,上传的时候可以逐个尝试
其他绕过技巧
::data数据流
在文件后面加上::data后,::data后面的数据会被当成数据流,文件读取时指挥读取::data前面的内容
例如123.php::data 传到服务器后就变成了 123.php
windows特性:
在文件名后面加上.或者空格会自动去除,即使加上多个也一样,可以利用这个特性来绕过一些过滤机制
比如上图删除末尾点,和去除首尾空都只进行了一次,我们可以写多个点或空来绕过,但是上传到服务器后依然可以解析