XXE漏洞的防范?
A
禁用外部实体的引入
比如PHP语言中使用libxml_disable_entity_loader(true);等方式。
过滤如SYSTEM等敏感关键字,防止非正常、攻击性的外部实体引入操作。
Q
文件上传漏洞的原理?
A
Web页面中文件上传功能没有对上传的文件做合理严谨的过滤,导致用户可以利用此功能,上传能被服务端解析执行的文件,并通过此文件获得执行服务端命令的能力。
Q
文件上传漏洞的绕过手法?
A
前端JS禁用绕过
在前端页面禁用JS,当然也有可能影响正常页面显示却没用
简单修改后缀名绕过
如果只是前端页面限制上传的文件后缀名,那么我们就可以利用burp suite等工具修改文件后缀名绕过。
抓包修改MIME类型
常见图片MIME类型:image/gif,image/png,image/jpeg, image/bmp,image/webpimage/x -iconimage/vnd.microsoft.icon
服务端代码是通过Content-Type的值来判断文件的类型,这样我们可以直接对文件的Content-Type值进行修改来绕过。
后缀名大小写绕过
如果源代码没有对文件后缀名进行大小写转换,那么只要更改文件名后缀大小写即可绕过黑名单
图片马绕过
使用edjpgcom等工具或者命令将图片和WebShell制作成一个图片马
GIF89a图片头文件欺骗
比如GIF89a,在webshell前面加上GIF89a,后台认为是图片,上传后再执行木马,更有效的做法是结合其他绕过方法更有针对性的绕过。
%00,Ox00截断
比如修改文件名为1.php%00.jpg,如果php版本<5.3.4 在url中%00表示ascll码的0,而ascii码的0,表示字符串结束,所以当url中出现%00时就会认为读取已结束,最后会被解析
为1.php,从而实现绕过
.htaccess文件绕过
.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过.htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
比如说在htaccess文件中有如下内容AddType application/x-httpd-php.png那我们随后上传png后缀图片马即可绕过
.user.ini.绕过
.user.ini文件里的意思是:所有的php文件都自动包含指定的文件,比如说某网站限制不允许上传.php文件,你便可以上传一个.user.ini,再上传一个图片马,包含起来进行getshell。不过前提是含有.user.ini的文件夹下需要有正常的php文件,否则也不能包含了。再比如,你只是想隐藏个后门,这个方式是最方便的。
条件竞争绕过
一些网站上传文件的逻辑是先允许上传任意文件,然后检查上传的文件是否包含webshell脚本,如果包含则删除该文件。这里存在的问题是文件上传成功后和删除文件之间存在一个短的时间差(因为要执行检查文件和删除文件的操作),攻击者可以利用这个短的时间差完成条件竞争的上传漏洞攻击。比如上传一个php文件里面这样写
<?php fputs(fopen(../shell.php','w'),");?>:$DATA绕过