文件上传漏洞原理及防御

文件上传漏洞是指:用户上传了一个可执行的脚本文件,并通过该文件获得了执行服务端命令的权限

 

文件上传漏洞测试过程:

1 进行正常的上传,期间可抓包查看

2 尝试上传不同类型的恶意脚本文件,如JSP PHP文件等

3 查看是否在前端做了上传限制,如大小,格式,并尝试进行绕过

4 利用报错或者猜测等方式获得木马路径,访问

 

dvwa文件上传漏洞演示:

1 绕过大小限制

通过firebug来修改大小限制;

通过burp抓包更改大小限制;

 

2 上传cmd shell

low

上传cmd.php文件(一句话木马),去掉此时地址栏最后的#,拷贝文件上传成功提示最前面的文件相对路径到URL的最后,然后接参数?cmd=ipconfig发送请求,就相当于在cmd界面里进行操作

 

medium

直接上传cmd.php,发现不能上传成功,查看中级别的源代码,找到中级别下允许上传的文件类型,再次上传文件,抓包,在包中修改文件类型,重放请求,发现文件上传成功

 

high

按照中级别的方法上传文件发现并不可行,所以要换个思路。先放弃上传cmd.php文件,改为上传系统所允许的文件格式,上传一个图片文件,抓包,将文件名字x.jpg改为x.php.jpg,将cnd.php文件中的代码粘贴在图片乱码的最后面,重放请求,发现上传成功,执行low中的操作,执行结果一样。

 

文件上传防御:

1 对上传的文件在服务器上存储时进行重命名

2 检查上传文件的类型和大小、

3 禁止上传危险的文件类型,如jsp jar war等

4 直接受指定类型的文件

5 上传文件做日志记录

6 上传文件要保存的文件名和目录名由系统根据时间生成,不允许用户自定义

你可能感兴趣的:(web安全)