end的上传漏洞学习

解析漏洞

常见的Web容器有IIS,Niginx,Apache,Tomcat
一,IIS解析漏洞
IIS6.0在解析文件的时候存在2个漏洞
1,当建立*.asa , asp格式的文件夹时,文件夹目录下的文件都会被当成asp文件来解析。
2,当文件为
.asp;1.jpg时。IIS6.0同样会以ASP脚本来执行。

二,Apache解析漏洞
Apache1.x 和 Apache2.x 存在解析漏洞。
Apache在解析文件时有一个原则:碰见不认识的拓展名时,将会从后往前解析,直到碰到认识的拓展名为止,如果都不认识,则暴露其源代码。
Apache有认识的拓展名在,安装目录下“/conf/mime。types”文件中有详细的拓展名列表。

绕过上传漏洞

防止上传漏洞可以分为2种
1,客户端检查:客户端使用javaScript检测,在文件未上传时,就对文件进行检验。

2, 服务器端检测:服务端脚本一般会检测文件的MIME类型,检测文件名是否合法,甚至有些检测文件中是否嵌入恶意代码。

一,客户端检测
Upload.html页面使用JavaScript对文件拓展名验证,如果不是白名单中的拓展名,那么Form表单将不会提交至服务器。

关键代码: var arr = new Array(‘png’,‘bmp’,‘gif’,‘jpg’);
for (var i = 0 ;i< arr.length; i++){
if(str == arr[i]){
flag=true;
}
}
if(!flag){
alert(‘文件不合法’);
}

可以通过中间人攻击进行绕过。
在上传时,使用Brupsuite拦截上传数据,再将其中的拓展名修改为白名单中的拓展名可以绕过客户端验证。

任何客户端验证都是不安全的。客户端验证是防止用户输入·错误,减少服务器开销,而服务器端验证才能真正防御攻击者。

二,服务器端检测

白名单与黑名单拓展名过滤,文件类型检测,文件重命名。

1,白名单与黑名单验证
黑名单过滤方式:
黑名单定义了一系列不安全的拓展名,服务器端在接收文件后,与黑名单拓展名对比,如果发现文件拓展名与黑名单里面的拓展名匹配,则认为文件不合法。

绕过方式:
1,攻击者可以从黑名单中找到Web开发人员忽略的拓展名,如:cer。
2,在Upload.php中并没有对接收到的文件拓展名进行大小写转换操作,那就意味着可以上传asp,php这样的拓展名,而此类拓展名在Windows平台依旧被web容器解析。
3,在Windows系统下,如果文件名以“.” , 或者空格作为结尾,系统会自动去除“.”和空格,利用这个特性也可以绕过黑名单验证。

白名单过滤方法
在获取文件拓展名后对$WhiteList数组里的拓展名迭代判断,如果文件拓展名被命中,程序将认为文件是合法的,否则不允许上传。

绕过方式:
Web容器为IIS6.0,攻击者把木马文件改名为pentest.asp;1.jpg上传,此时文件格式为jpg格式,从而可以顺利通过验证。

2,MIME验证
MIME类型用来设定某种拓展名文件的打开方式,当具有该拓展名的文件被访问时,浏览器会使用指定的应用程序打开。如GIF图片MIME为 image/gif,CSS文件MIME类型为text/css。

绕过方式:
上传PHP文件时,使用bruipsuite拦截查看MIME类型,MIME类型为application/php,而在Upload.php会判断文件是否为image/jpeg,无法绕过。
将HTTP请求里面的Content-Type更改为 image/jpeg类型就可以通过验证。

3.目录验证
在文件上传时,程序通常允许用户将文件放到指定的目录中,如果目录不存在,可能先建立目录,再写入。
关键代码: if(!is_dir(KaTeX parse error: Expected '}', got 'EOF' at end of input: … mkdir(Extension);
}
这段代码是引发漏洞的关键,HTML代码中有一个隐藏标签,这是文件上传的默认文件夹,因此我们对参数是可控的,比如将Value值改为xxxx.asp 如果是IIS6.0 asp里面的文件就会被解析。

4,截断上传攻击
截断上传攻击在ASP程序中最常见,在PHP,jsp程序中也存在。
%00 将后面的字符都截断。

使用截断上传:
用brupsuite拦截请求,将上传文件名更改为“xxxx.asp空格xxxx.jpg”然后进入HEX编辑模式,将空格的16进制00更改为00,单击GO。上传的文件就变为了xxxx.asp。xxxx.asp之后的就被截断了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值